Steps
- Install peepshow
npm install -g peepshow - Run with the SQLite sink
Schema auto-creates on first run.
peepshow ./demo.mp4 --sink sqlite - Query the archive
sqlite3 ~/.peepshow/sinks/sqlite/peepshow.db 'SELECT * FROM frames LIMIT 5' - Expose with Datasette
Optional but ridiculous-fun — instant searchable UI.
pip install datasette datasette ~/.peepshow/sinks/sqlite/peepshow.db - Auto-sink for every run
peepshow sinks add sqlite
Why it works
SQLite is the perfect long-term archive — one file, zero ops, queryable by every tool that speaks SQL. peepshow's SQLite sink builds a normalised schema (`runs`, `frames`, `transcripts`, `tags`, `sinks`) so you can answer 'which clips contain the word X' or 'show me every frame with motion above N' in plain SQL.
When it helps
- Long-term personal video archives — searchable forever.
- Research datasets where every clip's metadata needs SQL access.
- Compliance / audit workflows where 'show me every frame where Y happened' is a regular query.
Pitfalls
- Default DB lives in `~/.peepshow/sinks/sqlite/peepshow.db` — set `PEEPSHOW_SQLITE_PATH` to relocate.
- Very high frame volumes (>1M frames total) — VACUUM occasionally.