The 720 MB your first start downloads, and why it never downloads it again
The first time you start Pi Agent it goes quiet for several minutes and fills the log with messages. Nothing is wrong. It is fetching the tools the video pipeline needs, once, then writing itself a note so it never has to do it again. This article covers what is in that download, where it lands, when it comes back, and the one switch that brings it back deliberately.
Two things you already read are the same thing
Part 1 told you the first start takes 3-8 minutes and that the workspace can look broken while it happens. Part 11 told you the video pipeline needs a full set of tools before it can record, narrate, or subtitle anything.
Those are not two events. They are one event described twice. The first 3-8 minutes are the tools arriving.
Installing the add-on is like moving into a new place. The roughly 300 MB add-on image is the apartment itself, already wired and plumbed. The 720 MB first start is the truck outside with your boxes in it. You unload the truck once. You do not unload it again every time you walk through the front door.
Once that clicks, the lines beginning video-tools-init: in the Log tab stop reading as errors and start reading as a progress bar.
Three groups of tools, two of which you download
video-tools is not one program. It is a collective name for three groups, and only the first two are in the number people quote.
| Group | What it is | Size | Arrives |
|---|---|---|---|
| Chromium | A headless browser — no visible window. Playwright drives it to open pages and capture frames for screen recording. | About 500-600 MB | First start |
| Python environment | An isolated Python setup holding edge-tts for narration, playwright, pyyaml for reading scripts, and mutagen for reading audio length. |
About 40-60 MB | First start |
| ffmpeg, fonts, rclone | ffmpeg edits video, libass burns in subtitles, the Noto fonts cover CJK text and color emoji, rclone uploads the result. | About 400-500 MB | Inside the add-on image |
So the files that land in /data/pi-agent/ on your first start are the top two rows, roughly 600-700 MB together. The exact figure moves with Playwright and pip versions, which is why the guide rounds it to 720 MB. The third row arrived earlier, inside the roughly 300 MB image.
Can you skip it if you never make videos?
Not through any supported setting. Three reasons, and none of them are satisfying:
- There is no off switch. The initializer runs as a startup service alongside the workspace. The Configuration tab has no option that disables it.
VIDEO_PIPELINE_ENABLED=falsedoes not do it. That variable does not turn off the add-on's initializer. It is a common wrong guess.- Avoiding it means your own build. You would fork the add-on repository, remove the service, build an image, and publish it yourself — much more work than leaving 720 MB on a disk.
On a 32 GB drive, the Home Assistant minimum, 720 MB is about 2% of the disk, and it normally happens once. If that 2% is decisive, the storage is probably too small for comfortable Home Assistant use anyway.
sessions/, intermediate video files in clips/, and old snapshots in /backup/ are each worth more, and none of them come back on their own. Part 14 has the cleanup list.Two things start at once, and only one of them is slow
When you select Start, two processes run at once. The workspace is a Node.js app that needs neither Chromium nor Python to hold a conversation, so it is ready in seconds. The tools download behind it.
flowchart TD S["You select Start"] --> W["pi-web is ready
a few seconds — you can chat"] S --> V{"Sentinel file present
and venv/bin/python3 runnable?"} V -->|"yes, every later start"| K["Skip. Exits almost immediately"] V -->|"no, first start"| A["1 · Create the Python environment
about 10 seconds"] A --> B["2 · pip installs playwright, edge-tts,
pyyaml, mutagen
about 30 seconds to 2 minutes"] B --> C["3 · Playwright downloads Chromium
about 2-6 minutes, most of the wait"] C --> D["4 · Write the sentinel file
/data/pi-agent/.video-tools-installed"]
The sentinel is a zero-byte file. Think of the sticker you put on a moving box once you have unpacked it. It holds no contents at all — its whole job is to say “this one is done.” If you run cat on it you get nothing back, because there was never anything inside it.
The check tests two things, not one: the sentinel must exist and venv/bin/python3 must be runnable. Restoring the sticker without the box does not fool it.
That is also the answer to when the 720 MB comes back. Restarting the add-on, restarting Home Assistant, and normal upgrades all leave both in place, so nothing downloads. It comes back in three situations: you uninstall without keeping data, you restore a snapshot on new hardware, or you deliberately use the reset switch.
Watching it happen
Open the add-on's Log tab. A normal run reads like this:
[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-installedThe tab itself is below. This capture comes from a workspace that has been running for a while, so the install lines have long since scrolled away and what fills the frame is ordinary traffic logging — which is exactly what the same tab looks like once the download is behind you.
- The Log tab sits along the top of the add-on page, beside Info, Documentation and Configuration. It is the first place to look for any later problem too.
- Search logs, the box above the output, is how you find the lines you want in a busy log. Typing
video-tools-initthere leaves only the install messages. - The body of the frame is web server access logging — repeated
GET /api/agent/running/eventsrequests from your own browser, each with a timestamp and a browser string. Routine, not errors. - Those request lines carry a
session=identifier for your ingress session. Trim it before you paste a log anywhere public. - Live, bottom right, means the view is following new output as it arrives. On a first start you can leave it open and watch.
Your snapshots leave the 720 MB behind on purpose
Pi Agent tells Home Assistant to exclude certain files from snapshots, and the video tools are on that list. This is intentional, not an oversight.
You keep photos of your home in the cloud, not the flat-pack furniture from the shop. Photos cannot be reordered. The furniture can. Chromium and the Python environment are the furniture: any machine with internet can fetch them again in minutes.
| Kept in the snapshot | Left out |
|---|---|
models.json — your keys and provider settings | venv/ — the Python part of the 720 MB |
sessions/ — your conversation history | playwright-cache/ — the Chromium part |
skills/ — Skills you installed or wrote | projects/**/clips/ and segments/ — intermediate video files |
home/pi-cwd-*/ — the agent's working folders | home/**/node_modules/ and .cache/ |
rclone/rclone.conf — your Google Drive authorization | sessions/*.jsonl.tmp — half-written temporary files |
Two reasons. Size: adding roughly 700 MB to every snapshot means 12 monthly snapshots cost about 12 GB for this add-on alone. And need: after a restore the check fails on the missing Python environment, so the tools install themselves again. The restore takes about five minutes longer, and you save 700 MB on every snapshot.
rclone.conf holds your Google Drive authorization and is roughly 300 bytes. Losing it in a restore would make later uploads fail with no obvious reason, so it stays in.reset_video_tools, and when to leave it alone
The Configuration tab has a switch called reset_video_tools. It does one thing: at the next start it deletes the sentinel, the Python environment and the Chromium cache, so the whole 720 MB comes down clean.
It is a container option, so it lives on the add-on's own Configuration tab rather than anywhere in Home Assistant settings. That tab looks like this:
- Configuration is one of the four tabs across the top of the add-on page — Info, Documentation, Configuration, Log — not somewhere in Home Assistant settings. Path:
Settings → Add-ons → Woow HA Pi Agent → Configuration. - Options is the single form that holds every container setting, one field per line. The capture stops partway down it, so scroll for the rest.
- The eye icon beside each filled field reveals a value that is otherwise shown as dots. Useful for checking a pasted key, and a reason not to screenshot this tab with the values open.
Scroll down that form and you reach reset_video_tools, a true/false switch, with the SAVE button at the foot of the page.
-
Step 1
Open the Configuration tab
Go to
Settings → Add-ons → Pi Agent → Configuration. -
Step 2
Turn reset_video_tools from false to true, then SAVE
Nothing is deleted at this point. The switch is only a note for the next start.
-
Step 3
Go back to the Info tab and select RESTART
On restart the add-on runs
rm -rf /data/pi-agent/.video-tools-installed /data/pi-agent/venv /data/pi-agent/playwright-cacheand logsreset_video_tools=true — clearing venv + playwright-cache + sentinel. Then the 3-8 minute download starts over. -
Step 4
Check the log, and restart once more if it skipped
The reset and the initializer run in parallel, so the initializer can read the old sentinel a moment before the reset deletes it. If the log says it skipped and no install sequence follows, restart once more.
-
Step 5
Leave the switch alone afterwards
Since v0.13.0 the add-on turns it back off itself and logs
reset_video_tools auto-reverted to false. Turn it off by hand only if you seeCould not auto-revert reset_video_tools. Older tutorials tell you to always do it manually — that advice is out of date.
Is this actually your problem?
The switch is an escape hatch, not maintenance. The rule is short: reset when the tools are broken, not to make them feel clean.
| Your situation | Reset? | Why |
|---|---|---|
| A video Skill keeps failing and the log does not say why | Yes | A damaged pip install is a common cause, and rebuilding is often the fastest way to rule it out. |
The log shows pip install failed or chromium download failed | Yes, after checking the network | That attempt wrote no sentinel but may have left partial files. A reset gives a clean retry. |
| Chromium is too old for a site you want to capture | Yes | A reset installs the Chromium build matching the Playwright version pip fetches then. Chromium never updates itself otherwise. |
| The disk is nearly full and you want the 720 MB back | No | A reset deletes the files in order to download them again. You end up where you started. |
| You just upgraded, say v0.13 to v0.14 | No | Upgrades do not touch venv or playwright-cache — they sit on your persistent volume. Reset only if the CHANGELOG says to. |
Telling a slow download from a dead one
If a stage produces no new log output for more than ten minutes and shows no error, check two things first. Open Settings → System → Network and confirm the host has internet at all. Then look at CPU and memory on the add-on's Info tab — activity there means it is still working, so wait.
It has said downloading Chromium for over 30 minutes
reset_video_tools for a clean retry once the connection is fixed.The log shows WARNING: pip install failed and then carries on
edge-tts is missing. Read the full Skill output, confirm the host can reach the package source, then reset for a clean retry.Every step finished but the sentinel file was never created
ls -la /data/pi-agent/ and check the owner, then search the log for Permission denied. Reinstalling without keeping data would rebuild the volume, but it also deletes Sessions, Skills and keys — back those up first, and treat it as the last option.Can I just delete the sentinel instead of using the switch?
rm /data/pi-agent/.video-tools-installed, then select RESTART on the Info tab. That makes the pip and Playwright checks run again without deleting venv or playwright-cache first. Use the full reset instead when you suspect those directories are damaged.What if I shut Home Assistant down mid-download?
Where to go from here
The tools are in. The finished video still has to go somewhere.
Part 13 sets up rclone, which is how a finished file leaves your Home Assistant box for cloud storage — including that authorization file your snapshots deliberately keep.
Open the full guidePart 12 of the Pi Agent Onboarding Guide series, published by WoowTech.
Based on the Woow HA Pi Agent Onboarding Guide, produced by WoowTech and released under CC BY 4.0.
The Smart Space Solution · 智慧空間解決方案 · © 2026 WOOW Technology Co., Ltd.