peepshow/sinks/chroma

Reel #14Vector DB

peepshow sink / chroma

ChromaIndex frames into a Chroma vector DB collection.

Text embeddings over the metadata + caption. Frame paths as IDs.

What it does

Push every peepshow run into a Chroma collection as a set of points: one per frame, embedding generated from the caption + container tags, path stored in metadata so you can fetch the JPG back.

When to reach for it

  • RAG over your own video library — query by natural language, get frames back
  • Cross-reference videos by semantic similarity instead of filename
  • Pair a local LLM with a local Chroma for fully-offline video search

Install

npm i -g peepshow

Use it

peepshow ./lecture.mp4 --sink chroma \
  --sink-arg url=http://localhost:8000 \
  --sink-arg collection=peepshow

Make it automatic

Register the sink once — every run fires it afterward. Scope by--whenso it only runs for matching videos.

peepshow sinks add chroma
peepshow sinks add chroma --when extension=mp4,mov
peepshow sinks add chroma --when path=/Volumes/Work/

Configuration

  • PEEPSHOW_CHROMA_URLChroma HTTP server URL.required
  • PEEPSHOW_CHROMA_COLLECTIONCollection name. Default `peepshow`.

Write your own

A sink is any executable that reads the--emit jsonpayload on stdin. Shell, Node, Python, Go — the spec's indocs/PLUGINS.md. Register persistent ones withpeepshow sinks add-cmd 'your-command'.