What it does
Push frames into a Pinecone serverless index. Namespaces are configurable so multiple teams/projects can share an index without collisions; IDs map back to the peepshow run + frame index.
When to reach for it
- Managed, zero-ops vector DB for LLM video pipelines
- Multi-tenant SaaS — each tenant gets their own Pinecone namespace
- Pair with OpenAI / Cohere embeddings of the peepshow caption field
Install
npm i -g peepshowUse it
peepshow ./movie.mp4 --sink pinecone \
--sink-arg index=peepshowMake it automatic
Register the sink once — every run fires it afterward. Scope by--whenso it only runs for matching videos.
peepshow sinks add pinecone
peepshow sinks add pinecone --when extension=mp4,mov
peepshow sinks add pinecone --when path=/Volumes/Work/Configuration
PEEPSHOW_PINECONE_API_KEYPinecone API key.requiredPEEPSHOW_PINECONE_INDEXIndex name.requiredPEEPSHOW_PINECONE_NAMESPACENamespace. 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'.