Releases
Current · v0.4.0
User-facing changes to peepshow LLM. New sinks, new features, opt-in behaviour changes — anything that changes what you can do with the tool. Internal tooling, site tweaks, build-pipeline churn, and documentation refactors don't land here — read the git history for those. This page is the rendered copy of CHANGELOG.md shipped with the npm package.
v0.4.0 — 2026-04-24
The big expansion. Thirty-two new built-in sinks (19 → 51), audio-track extraction, and a use-case finder on the website. Nothing removed, nothing renamed — drop-in upgrade.
npm i -g peepshow@0.4.0
32 new sinks
Chat & messaging
mattermost— Mattermost Incoming Webhook (Slack-compatible card).rocketchat— Rocket.Chat Incoming Webhook.zulip— markdown message to a Zulip stream or private message.matrix— upload to any Matrix homeserver +m.imageevents per frame.telegram— Telegram Bot API withsendMediaGroupalbums.msteams— Microsoft Teams Incoming Webhook with Adaptive Cards.
Issue trackers
asana— create a task (or attach) + upload each frame.clickup— create a ClickUp task + per-frame attachments.shortcut— create a Shortcut story +/fileslink.trello— create a Trello card + per-frame attachments.jira— create a Jira issue with ADF body + attachments.
Observability & analytics
pagerduty— PagerDuty Events API v2triggerevent.event-track— unified Mixpanel / Amplitude / Segment viaEVENT_TRACK_PROVIDER.plausible— custom event via/api/event.posthog— PostHogcaptureevent with run metadata.datadog— Datadog/api/v1/eventsstream entry.
Vector + AI memory
milvus— upsert one row per frame (zero-vector placeholder for external embedding).letta— post a run summary to a Letta (MemGPT) agent.zep— append a run to a Zep memory session.mem0— write a run into Mem0 long-term user memory.weaviate— batch-insert frames as Weaviate objects.
Whiteboards
miro— upload each frame to a Miro board on a configurable grid.figma— post a single file comment with run summary + frame list.
Wiki & notes
outline— markdown doc per run in Outline.confluence— Confluence Cloud page per run (storage-format body).logseq— markdown page into a Logseq graph + frame embeds underassets/.
Object + file storage
gcs— Google Cloud Storage bucket +manifest.json.azure-blob— Azure Blob container (connection string or account+key).supabase— Supabase Storage bucket.dropbox— Dropbox folder via/2/files/upload.gdrive— Google Drive folder via multipart upload.box— Box folder (idempotent on 409) + per-frame attachments.
Audio extraction & transcription
When a video input has an audio stream (MP4 / MOV / WebM / MKV), peepshow now runs a second ffmpeg pass that emits a compact mono 16 kHz AAC audio.m4a next to the frames and probes loudness peak (via astats) and silence ratio (via silencedetect). The extracted file path + analysis fields land on the JSON payload as an audio object alongside video + frames, so every downstream sink sees the full picture.
On top of that, peepshow auto-enables transcription when whisper.cpp is on PATH — no flag, no API key, nothing leaves the machine. Five other providers are available via --transcribe openai|groq|deepgram|assemblyai|custom, each gated on its own *_API_KEY environment variable. The transcript rides on the JSON payload at audio.transcript, so every sink gets it for free. Full setup + provider matrix: peepshow.dev/transcription/.
Animated GIF, APNG, and animated WebP inputs skip cleanly — those formats can't carry audio at the spec level. Opt out entirely with --no-audio / --no-transcribe or PEEPSHOW_AUDIO_ENCODER=off / PEEPSHOW_TRANSCRIBE=off.
Use-case finder
Fifty-one destinations is too many to scan manually. The new sink finder lets you pick what you want to do with the frames (search · alert · archive · memory · whiteboard · analytics · compliance · LLM pipeline · review · workflow) and where your stack lives (cloud · self-hosted · LLM · local), then ranks matching sinks and hands you the CLI command to wire each one up. The homepage #sinks section gets a mini version; the /sinks/ index gets live text + chip filters. All three share a hash-bang URL (#!use=memory,search&deploy=self-hosted) so a selection is one-click-copyable between them.
Changed
--emit jsonpayload gainsaudioat the top level. Existing fields unchanged; sinks that ignore unknown fields are unaffected.package.jsondescriptionnow reflects the 51-sink catalogue.
Earlier — v0.3.x
Baseline that v0.4.0 builds on: 19 built-in sinks (SQLite · Postgres · pgvector · S3-compatible · Webhook · Slack · Discord · GraphQL · Notion · Obsidian · IDE attachments · MemPalace · Linear · GitHub Issues · Sentry · Chroma · Qdrant · Pinecone · MongoDB) plus the core frame-extraction CLI, auto-sink persistence (~/.peepshow/sinks.json), conditional sinks via --when, and agent manifests for Claude Code · Cursor · Windsurf · Cline · Codex CLI · Gemini CLI, plus the generic AGENTS.md convention.
See the git log for fine-grained history; this page only tracks user-facing releases from v0.4.0 onward.