vimmary CLAUDE.md

Repository instructions for vimmary, a Go service that turns saved YouTube videos and already-transcribed podcast episodes into searchable summaries.

In plain words
What is it for?
Use them when changing, building, or extending vimmary's summaries, storage, web interface, MCP endpoint, or feeds.
Why use it?
They explain the service's scope and build requirements, including the generated web files needed before compiling it.

Instructions file

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add instructions/meltforce/vimmary/claude-md
Clone the repo
git clone --depth 1 https://github.com/meltforce/vimmary
Per session 6,226 This file is loaded in full into every session.
When invoked 6,226 The same file — it is already loaded in full.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.06226 $0.06226
Opus 5 $0.03113 $0.03113
Sonnet 5 $0.01245 $0.01245
Haiku 4.5 $0.00623 $0.00623

Measured 2d ago against content hash 55a2e4535a9c, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

vimmary CLAUDE.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

CLAUDE.md · 456 lines

How it starts

The opening of the file, as written. The whole thing — 456 lines — stays where its author put it; the contents beside it link to each section on GitHub.

vimmary — video and podcast summary service

A Go service that turns bookmarked YouTube videos and transcribed podcast episodes into searchable LLM summaries. Video transcripts come from YouTube's InnerTube API, podcast transcripts from cast2md, summaries from Claude or Mistral, storage is Postgres + pgvector. Triggers are Karakeep webhooks, manual URL submission, cast2md feed subscriptions and a deep link from cast2md; results are served over a web UI, an MCP endpoint and three Atom feeds.

It is not a transcription service — the domain is classic YouTube videos (talks, tutorials) plus podcast episodes cast2md has already transcribed. Livestreams, Shorts and playlists are out of scope by decision, and vimmary never downloads audio for podcasts.

Gotchas

web/dist/ is generated and embedded into the binary. web.go carries //go:embed all:web/dist, so go build ./cmd/vimmary fails outright when the directory does not exist — this is what a fresh checkout looks like, because .gitignore excludes it. Either build the frontend first (cd web && npm ci && npm run build) or create the stub the CI creates: mkdir -p web/dist && touch web/dist/.gitkeep.

Two compose files, different audiences. docker-compose.yml is the development stack and pulls :edge from a tailnet-internal registry, which is unreachable from outside the tailnet. compose.example.yml is the one the README points the public at; it pulls ghcr.io/meltforce/vimmary:latest. Changing one does not change the other.

Nothing in the startup path fetches a secret over the network, and that is the point. The init order in cmd/vimmary/main.go is config → tsnet → resolve the database password from the environment → migrations → DB → services → HTTP listener, and run() is that order — each step is a named function (startTailscale, openDatabase, buildService, buildHTTPServer, openListener), so the sequence is readable in one screen rather than inferred from 254 lines. Every defer stays in run; moving one into the function that created the thing it closes closes it immediately. The only remaining network dependency is tsnet itself. Until 2026-08-07 vimmary read three secrets from setec over the tsnet node during startup, and a node the tailnet had not yet placed got access denied — an answer the setec store retries forever. That produced a 6h23min outage with the container up and no listener; see INCIDENTS.md. Reintroducing any network call before the listener reintroduces that failure class.

Read the full file on GitHub · 456 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 456 lines · 6,226 tokens per session scan A 55a2e4535a9c

Subscribe to this mod's changes

vimmary CLAUDE.md is an instructions file published in the GitHub repository meltforce/vimmary (5 stars, last pushed 4d ago), licensed MIT. It adds 6,226 tokens to every session, about $0.0311 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.