Why the first download is 720 MB—and later starts take seconds
Chapter 2 told you not to worry when first startup takes 3–8 minutes. Chapter 17 explained that the video pipeline needs a complete set of tools. This chapter connects those facts: what the 720 MB download contains, where the files go, when they download again, and when to use the one-time reset_video_tools switch. Once you understand the process, messages beginning with video-tools-init: in the Logs tab will no longer be alarming.
Two descriptions of the same process
Readers often confuse two points from earlier chapters:
- Chapter 2 says that first startup takes 3–8 minutes—you have just installed the add-on and selected Start, but the UI appears unresponsive while warnings fill the log. It is natural to wonder whether the installation failed.
- Chapter 17 says that the video pipeline needs 720 MB of tools—recording the screen, generating narration, editing video, and burning in subtitles require a substantial toolchain.
They are the same process. The first 3–8 minutes are spent downloading those tools. This chapter connects three details:
What gets installed
Chromium, a Python virtual environment, ffmpeg, fonts, and rclone—organized into three main groups.
Where the files go
The downloaded files live in three locations under
/data/pi-agent/. You can inspect them with the File Editor add-on.When installation runs again
Under normal circumstances: never. It runs again only after you use
reset_video_tools, reinstall without retaining data, or restore a snapshot that omitted the rebuildable files.
By the end, you will know when to let installation finish and when to start it again. That saves you from worrying during normal setup or opening a shell simply to delete files by hand.
video-tools is a name for three groups of tools
Inside Pi Agent, video-tools is the collective name for the components required by the video pipeline. It is not a single tool. The 720 MB figure from Chapter 2 refers to the first two groups:
| Group | What it is | Size | What uses it |
|---|---|---|---|
| Chromium (headless browser) | A complete headless Chromium build that Playwright uses for screen capture. It has no visible window; the AI relies on it to open web pages, switch tabs, and capture frames. | About 500–600 MB | Playwright and the video pipeline's screen-capture stage |
| Python virtual environment and pip packages | An isolated Python environment containing edge-tts (Microsoft Edge text-to-speech), playwright (the Python browser-control package), pyyaml (for reading script files), and mutagen (for reading audio duration). |
About 40–60 MB | The video pipeline's narration and scheduling stages |
| ffmpeg, libass, fonts, and rclone | These components are included in the container image, not in the first-start download. ffmpeg edits video; libass burns in subtitles; fonts-noto-cjk provides CJK fonts; fonts-noto-color-emoji provides color emoji for subtitles and title cards; and rclone uploads files to cloud storage. | About 400–500 MB (installed in the image) | The video pipeline's composition, subtitle, and upload stages |
Strictly speaking, the files first downloaded to /data/pi-agent/ are the first two groups: Chromium and the Python virtual environment. Together they total about 600–700 MB. The number varies from 600–720 MB with Playwright and pip dependency versions, which is why this guide uses the approximate figure of 720 MB. The third group is part of the add-on image and arrives with the roughly 300 MB image download.
What happens during the first 3–8 minutes
After you select Start on the add-on page, two processes run in parallel:
-
First process: pi-web starts immediately (a few seconds)
The sidebar entry described in Chapter 3 becomes available, the UI opens, and you can start chatting within seconds. pi-web is a Node.js application. It needs neither Chromium nor Python for chat, so it is independent of the video pipeline.
-
Second process: video-tools-init downloads in the background (3–8 minutes)
The startup script
pi-web-start.shchecks whether the sentinel file/data/pi-agent/.video-tools-installedexists, then launches thevideo-tools-init.shprocess when installation is required. The script performs four tasks in order:- Create the Python virtual environment with
python3 -m venv /data/pi-agent/venv, which takes about 10 seconds. - Use pip to install playwright, edge-tts, pyyaml, and mutagen, which takes about 30 seconds–2 minutes depending on the network.
- Ask Playwright to download Chromium to
/data/pi-agent/playwright-cache/, which takes about 2–6 minutes and accounts for most of the download. - When every required step succeeds, use
touchto create an empty file named.video-tools-installed. This records that installation completed.
- Create the Python virtual environment with
-
Every later start: skip installation
When you restart the add-on, Home Assistant, or the host,
video-tools-initchecks the sentinel andvenv/bin/python3. If both are present, it exits with status 0 without reinstalling anything. The log contains onlyvideo-tools-init: already installed (sentinel present) — skipping, and the check finishes almost immediately. That is why first startup takes minutes while later starts take seconds.
video-tools-init: install complete — sentinel written in the Logs tab.Where the downloaded files are stored
Everything downloaded during initialization is stored under /data/pi-agent/ on the Home Assistant host. Use the File Editor add-on or SSH to inspect these three locations:
| Path | Contents | Size | Can you delete it? |
|---|---|---|---|
/data/pi-agent/playwright-cache/ |
The Chromium browser downloaded by Playwright. A subdirectory resembles chromium-XXXX/chrome-linux/ and contains the Chrome executable and its shared libraries. It is stored here because the PLAYWRIGHT_BROWSERS_PATH environment variable points to this directory. |
About 500–600 MB | Yes; installation will download it again when the required-file check fails. |
/data/pi-agent/venv/ |
The Python virtual environment. venv/bin/python3 is its dedicated Python interpreter. venv/lib/python3.X/site-packages/ contains edge-tts, playwright, pyyaml, mutagen, and their dependencies. It is completely separate from the system Python installation. |
About 40–60 MB | Yes; installation will recreate it when the required-file check fails. |
/data/pi-agent/.video-tools-installed |
The sentinel file. This empty, zero-byte file means that installation completed. The startup check skips installation only when this file exists and venv/bin/python3 is executable. Restoring the sentinel without the virtual environment therefore does not suppress installation. |
0 bytes | Yes; deleting it causes installation to run on the next start. |
The key term is sentinel. Docker and Linux services often use an empty file to record that a one-time task has completed, rather than repeatedly examining every installed component. If you run cat .video-tools-installed, the output is empty because the file was created with touch.
/data/pi-agent/ is the add-on's persistent storage area. Your Skills, models.json file, Sessions, and video tools all use subdirectories under this location. Add-on upgrades do not remove your conversations, keys, or downloaded tools. See Chapter 20 for the complete file map.Important: Home Assistant snapshots exclude these 720 MB
This is the chapter's most important backup detail. Pi Agent's config.yaml contains a backup_exclude list of glob patterns omitted from Home Assistant snapshots. The seven entries include these items related to the video-tools download:
**/venv/**← the Python virtual environment included in the 720 MB download**/playwright-cache/**← the Chromium portion of the 720 MB download**/projects/**/clips/**,**/projects/**/segments/**← large, regenerable intermediate video files**/home/**/node_modules/**,**/home/**/.cache/**← npm caches in AI working directories**/sessions/*.jsonl.tmp← temporary, partially written conversation files
Note: rclone.conf, which contains the Google Drive authorization token, is not excluded. It is included in snapshots deliberately. Losing that authorization during a restore could make later push_drive.sh operations fail without an obvious explanation, so the file is worth its roughly 300 bytes of backup space.
There are two reasons for these exclusions:
-
Reason 1: Including them would make every snapshot 1 GB or larger
A Home Assistant snapshot normally compresses the add-on's data directory. Including Chromium and the virtual environment would add roughly 700 MB to each snapshot. Keeping 12 monthly snapshots on Google Drive or a USB drive could consume about 12 GB for Pi Agent alone, even though those files can be regenerated.
-
Reason 2: s6-overlay installs them again after a restore
Suppose the Home Assistant host fails and you restore its snapshot on new hardware. The Pi Agent snapshot contains neither venv nor playwright-cache. Although the sentinel itself is restored,
video-tools-initskips installation only if the sentinel exists andvenv/bin/python3is executable. Because the virtual environment is missing, the check fails and the 3–8 minute installation runs again. The result is equivalent to the old environment. The snapshot saves about 700 MB, and the restore takes about 5 minutes longer—a worthwhile tradeoff.
What is included in a snapshot? The data you created or configured:
| Included | Excluded |
|---|---|
models.json (keys and provider settings) | venv/ (the Python portion of the 720 MB) |
sessions/ (your conversation history) | playwright-cache/ (the Chromium portion of the 720 MB) |
skills/ (Skills you installed or wrote) | projects/**/clips/, projects/**/segments/ (intermediate video files) |
home/pi-cwd-*/ (AI working directories) | home/**/node_modules/, home/**/.cache/ (npm caches) |
rclone/rclone.conf (Google Drive authorization) | sessions/*.jsonl.tmp (partially written temporary files) |
auth.json (OAuth token) and .video-tools-installed (sentinel) | — |
In short: your valuable data is retained; large files that the machine can download again are excluded. Chapter 20 covers the complete backup and restore process.
How to use the reset_video_tools switch
Pi Agent's Add-on Configuration tab includes a special switch named reset_video_tools. It has one purpose: delete the sentinel, virtual environment, and Playwright cache so that initialization can download a clean copy.
Follow these steps:
-
Open the add-on's Configuration tab
Open Home Assistant → Settings → Add-ons → Pi Agent → Configuration. This is the same page that contains
log_levelandtimezone. -
Change reset_video_tools from false to true
It is a Boolean switch. Turn it on (
true). No files are removed until the add-on starts with this setting. -
Select SAVE
Save the setting. If Home Assistant says that the add-on must restart for the change to take effect, that is expected.
-
Return to the Info tab and select RESTART
On restart, s6-overlay's
pi-web/runreadsreset_video_tools: true, runsrm -rf /data/pi-agent/.video-tools-installed /data/pi-agent/venv /data/pi-agent/playwright-cache, and logsreset_video_tools=true — clearing venv + playwright-cache + sentinel. The independentvideo-tools-initoneshot also starts during boot. Because the reset and initializer run in parallel, check the Logs tab: if initialization skipped before the reset removed the sentinel, restart the add-on once more to begin the 3–8 minute download. -
Do not turn it off manually unless automatic reset fails
This behavior was added in v0.13.0 and corrects advice in older tutorials, including early versions of this site. After deleting the files, the startup script calls the Supervisor API (
POST /addons/self/optionswith{"options": {"reset_video_tools": false}}) to set the option back to false. The log entryreset_video_tools auto-reverted to falseconfirms success. If the Supervisor API call fails—for example, becauseSUPERVISOR_TOKENis unavailable or curl reaches its 5-second timeout—the log warnsCould not auto-revert reset_video_tools — turn it OFF manually to avoid re-clearing next boot. Only then should you return to Configuration and turn the switch off yourself.
When to use reset_video_tools
This switch is a maintenance escape hatch, not a routine operation. Use this table to decide when it is appropriate:
| Situation | Reset? | Why |
|---|---|---|
| A video-pipeline Skill repeatedly fails, and the logs do not reveal why | You can reset | The virtual environment may be incomplete, or a failed pip installation may have left damaged files. Recreating the entire toolset is often the fastest diagnostic step. |
| Chromium is too old to capture a site's current content, such as newer CSS | You can reset | Resetting installs the Chromium build required by the Playwright version downloaded at that time. This indirectly updates the browser. |
| The log contains “WARNING: pip install failed” or “chromium download failed” | You can reset, after checking the network | The first installation failed without creating the sentinel, but the virtual environment may be incomplete. A reset provides a clean retry. |
| The disk is almost full, and you want to recover 720 MB | Do not reset to save space | A reset deletes the files only to download them again. Setting VIDEO_PIPELINE_ENABLED to false does not disable the HA add-on's initializer. See the section on skipping the download for the practical options. |
| The video pipeline works, but you want to “make sure the environment is clean” | Do not reset | There is no benefit. Downloading 720 MB again takes 3–8 minutes and uses your bandwidth. |
| You just upgraded Pi Agent, such as v0.13→v0.14 | Do not reset | Upgrades do not modify venv or playwright-cache because they are stored on your persistent volume. Reset only if the CHANGELOG explicitly requires it. |
| You just restored a Home Assistant snapshot | No manual reset is required | The snapshot omits venv and playwright-cache. Even if it restores the sentinel, the missing executable makes the first-start check fail, so initialization runs automatically. Wait for it to finish. |
The rule is simple: reset when the tools are broken, not merely to make them feel clean.
Can you save 720 MB if you do not use the video pipeline?
The honest answer is not through a supported HA add-on setting. This follows from Pi Agent's design:
-
video-tools-init is an s6-overlay oneshot with no off switch
The HA add-on registers
video-tools-initas an s6-overlay oneshot underrootfs/etc/s6-overlay/s6-rc.d/video-tools-init/. It starts in parallel with pi-web and nginx so that chat is available while video tools install. The Configuration tab has no option that disables this oneshot. The script also has no conditional check such asif VIDEO_PIPELINE_ENABLED; that variable does not turn off initialization in the HA add-on. -
Avoiding installation requires an unsupported customization
You could fork
Woow_ha_pi_agent_add_on, removerootfs/etc/s6-overlay/s6-rc.d/user/contents.d/video-tools-init, build your own image, and publish it through your own add-on repository. Otherwise, the supported add-on keeps the files even if you never invoke video features. Maintaining a custom fork is considerably more work than leaving 720 MB on disk. -
The image still contains about 300 MB of ffmpeg, fonts, and rclone
Those packages are built into the Docker image with
apt install. The add-on offers no way to omit them. Removing them also requires a custom Dockerfile and image. -
Practical advice: let installation run once
On a 32 GB drive—the official Home Assistant minimum—720 MB is roughly 2% of capacity, and the download normally occurs only once. Keeping the tools is simpler than maintaining a reduced custom image. If 720 MB is decisive, the underlying storage is probably too small for comfortable Home Assistant operation.
sessions/, intermediate video files in clips/, and old snapshots in /backup/ can each consume gigabytes. The 720 MB video-tools installation is usually a poor cleanup target because the add-on will recreate it when its required-file check fails.How to monitor progress and distinguish slow from stuck
You do not need to wait blindly during the 720 MB download. Open the add-on's Logs tab and find lines beginning with video-tools-init:. bashio prints these entries alongside the pi-web logs. A normal sequence looks like this:
[INFO] Starting pi-web on 0.0.0.0:30141 (data: /data/pi-agent, home: /data/pi-agent/home)
[INFO] video-tools-init: first-run install starting (~720MB, may take several minutes)
[INFO] video-tools-init: creating venv at /data/pi-agent/venv
[INFO] video-tools-init: installing python packages into venv
[INFO] video-tools-init: downloading Chromium into /data/pi-agent/playwright-cache (~600MB)
[INFO] video-tools-init: install complete — sentinel written to /data/pi-agent/.video-tools-installed
Here is what each entry means:
| Log entry | Meaning | Approximate time remaining |
|---|---|---|
Starting pi-web on 0.0.0.0:30141 | pi-web is available for chat; the video-tools-init oneshot runs in parallel | 3–8 minutes for video tools |
first-run install starting | Installation has begun; the required-file check did not pass | About 3–8 minutes |
creating venv | The Python virtual environment is being created | Another 2–7 minutes |
installing python packages into venv | pip is installing playwright, edge-tts, pyyaml, and mutagen | Another 2–6 minutes |
downloading Chromium | The largest download, approximately 500–600 MB, has begun | Another 2–5 minutes |
install complete — sentinel written | Everything is ready; the video pipeline can run | 0 minutes |
If a stage produces no new output for more than 10 minutes and shows no error, the network or download service is probably slow. Check the following:
- Open Settings → System → Network in Home Assistant—confirm that the host has internet access. If it does not, repair the connection rather than waiting.
- Open Settings → Add-ons → Pi Agent → Info and inspect CPU and memory use—continued CPU activity or increasing memory use suggests that installation is still working. Wait.
- If the log contains “WARNING: chromium download failed”—that installation attempt failed. It does not create the sentinel, so
video-tools-inittries again at the next start. You do not need to reset manually unless incomplete files cause later problems.
When the 720 MB does—and does not—download again
This table covers common Pi Agent maintenance actions and whether they trigger another download:
| Action | Downloads again? | Why |
|---|---|---|
| Restart the add-on from the Info tab | No | The sentinel and virtual environment remain, so video-tools-init finishes its check immediately. |
| Restart Home Assistant (Configuration → Restart Home Assistant) | No | The sentinel remains under /data/pi-agent/; restarting does not remove it. |
| Upgrade a Pi Agent patch release (v0.13.1 → v0.13.2) | No | Only the image changes. Your persistent volume, including the sentinel and tools, remains. |
| Upgrade a Pi Agent minor release (v0.13 → v0.14) | Usually not | It behaves like a patch upgrade unless the CHANGELOG explicitly requires a reset, which should be rare. |
| Uninstall Pi Agent and reinstall it without retaining data | Yes | Removing the add-on's data clears all of /data/pi-agent/, including the sentinel and downloaded tools. |
| Uninstall, select “Keep data,” and then reinstall | No | The volume, sentinel, and tools remain. |
Set reset_video_tools to true and restart |
Yes | The startup script removes the sentinel, virtual environment, and cache. If the parallel initializer already skipped on that boot, restart once more after the switch returns to false. |
| Restore a Home Assistant snapshot on new hardware | Yes | The snapshot excludes venv and playwright-cache (see Snapshot exclusions). Although the sentinel is restored, the missing virtual-environment executable makes the check fail, so installation runs automatically. |
| Replace the Home Assistant host's SSD and rsync the entire /data directory | No | If the sentinel, virtual environment, and cache all arrive intact, the check passes as before. |
Routine upgrades and restarts do not trigger another download. It normally happens only after removing data, restoring a snapshot that excludes rebuildable tools, or deliberately resetting video tools. Most people therefore see the 3–8 minute process only once.
Troubleshooting
-
The log remains at
downloading Chromiumfor more than 30 minutesThis is usually a network problem. Playwright retrieves Chromium from its browser download service, which can be slow or blocked on some campus networks, corporate networks, proxies, or ISPs. Check CPU and network activity on the add-on's Info tab. Continued activity suggests a slow download; no activity may indicate a broken connection. Try again at a quieter time, temporarily bypass a VPN or proxy if appropriate, or use
reset_video_toolsfor a clean retry after fixing connectivity. -
The log shows
WARNING: pip install failedand then continuesThe pip step failed, but
video-tools-init.shhandles the failure withexit 0so that it does not block pi-web. Chat therefore works while video Skills fail, often with a message that edge-tts is missing. Review the complete Skill output and confirm that the host can reach the package source. Then runreset_video_toolsfor a clean retry. -
Every download step finishes, but
/data/pi-agent/.video-tools-installeddoes not existIf pip and Playwright succeeded but the sentinel could not be created with
touch, the data directory may have incorrect permissions. Runls -la /data/pi-agent/in an authorized add-on shell and inspect the owner. Search the log for “Permission denied.” Reinstalling without retaining data lets Home Assistant recreate the volume, but it also deletes Sessions, Skills, keys, and other persistent data. Back up anything important before considering that last-resort option. -
A video-pipeline Skill fails silently and produces no video
This can indicate an incomplete virtual environment: modules appear to exist, but a damaged dependency stops execution. Inspect the full Skill output in the Logs tab and look for a Python traceback. If the cause remains unclear, use
reset_video_toolsto rebuild the virtual environment. -
Pi Agent cannot download because disk space is low
Chromium and the virtual environment need about 700 MB, plus temporary download space. Keep at least 2 GB free; Chapter 2 recommends 3 GB of free space on the Home Assistant host. pip reports
No space left on devicewhen capacity runs out. Remove old snapshots under/backup/, old intermediate files under/data/pi-agent/clips/andsegments/(see Chapter 17), or unneeded conversations under/data/pi-agent/sessions/. Then reset and try again. -
reset_video_tools fails to return to false, so every restart clears the tools
The add-on normally calls the Supervisor API to return the switch to false, but that call can rarely fail because of a Supervisor issue or a missing
SUPERVISOR_TOKEN. Open Configuration and check whetherreset_video_toolsremains true, then look forCould not auto-revert reset_video_toolsin the Logs tab. If both confirm the problem, turn the switch off manually and save. If it recurs, check whether the add-on is older than 0.13.0; earlier versions do not implement automatic reset. -
You want to clear only the sentinel instead of changing Configuration
DOCS.md describes a narrower troubleshooting method. Open an authorized shell attached to the Pi Agent add-on. The source shows
docker exec -it <discovered-container-name> bashas an example, but actual container names vary by installation; discover and verify the name before using a host-level command. Runrm /data/pi-agent/.video-tools-installed, then select RESTART on the Info tab. Removing only the sentinel causes pip and Playwright checks to run again without first deleting venv or playwright-cache. Use the full reset when those directories may be damaged.
FAQ
Does the 720 MB use space on the main Home Assistant drive?
/data/pi-agent/. On HAOS, the host stores add-on data in a location resembling /usr/share/hassio/addons/data/<pi-agent-slug>/. The same drive must also accommodate Home Assistant, the recorder database, and other add-ons. Monitor it under Settings → System → Storage.Can I install the 720 MB offline?
/data/pi-agent/venv/ and playwright-cache/ from an online Home Assistant system with the same architecture and restore them to the same paths before creating the sentinel. The safer alternative is a custom add-on image containing the tools, but maintaining one is a substantial project.Will Pi Agent automatically update Chromium when Playwright releases a new version?
playwright pip package. To update it, wait until a Pi Agent release supports the desired Playwright version and then reset, or deliberately use reset_video_tools so pip installs Playwright again and fetches its corresponding Chromium build. Do not reset a working installation merely to chase new versions.After enabling reset_video_tools, what confirms the action?
reset_video_tools auto-reverted to false confirms that the one-time switch returned to its safe default. Because reset and video-tools-init are parallel services, the initializer may have checked the old sentinel before deletion. If you see a skip message but no new installation sequence, restart once more after the switch has returned to false. You need to turn the switch off yourself only when the log reports Could not auto-revert.What happens if I shut down Home Assistant while video-tools-init is running?
video-tools-init runs again at the next start. The virtual environment or Chromium directory may nevertheless be only partly populated. pip and Playwright can sometimes repair these files on the next attempt. If the video pipeline continues to fail, use reset_video_tools for a clean rebuild.Do Raspberry Pi, x86 NUC, and arm64 mini PC download times differ greatly?
If I uninstall Pi Agent to save 720 MB, will my conversations and Skills remain after reinstallation?
sessions/, skills/, models.json, rclone authorization, and video tools all remain on the volume. Reinstallation starts quickly but does not recover the 720 MB. If you do not keep data, everything is deleted: conversations, Skills, keys, authorization, and video tools. Reinstallation starts from scratch and downloads the tools again. See Chapter 20 before removing persistent data.Can I manually delete /data/pi-agent/venv/ and playwright-cache/ if I do not use video?
video-tools-init checks both the sentinel and the executable under venv. Using reset_video_tools deliberately deletes these directories. A future version of video-tools-init may add still more integrity checks. Deleting the virtual environment already makes the current check fail, so the add-on installs the tools again. Setting VIDEO_PIPELINE_ENABLED=false through Appendix A's env_vars does not disable the HA add-on's s6 oneshot either. A true chat-only build requires a custom add-on image; for the supported image, leave the tools installed.