Agent-readable docs
Tapes Documentation
Operator and integrator reference for the tapes server: capture, derive, query, search, cassettes, and the private ingest write path. Use this set to install, run, configure, and extend the Go binary in this repository. Client capture and read commands live in tapesctl and are cited only where this server requires them.
Pages
- OverviewWhat tapes captures, which binary owns the database, default listen ports, and the first docs routes after install.
- InstallationInstall the tapes server and tapesctl client, bootstrap local PostgreSQL and Ollama, and verify with tapes version and tapes local status.
- QuickstartStart tapes serve, point tapesctl at :8081, seed demo data, list sessions, and capture one real agent against :8082.
- Capture and deriveAppend-only raw_turns, the lossy reduction stored beside raw_response, and the idempotent deriver that projects sessions, traces, and spans.
- Sessions, traces, and spansDeterministic derived IDs, session rollups, trace-as-turn, span kinds, and how subagent threads rejoin through transcript anchors.
- Read API vs ingestTwo sealed contracts, two ports, and the trust boundary: :8081 is the public read surface and :8082 is a private in-cluster write path.
- Cassettescassette/v1alpha1 admission: OpenAPI plus x-tapes-cassette, path rewrite under /v1/cassettes/{name}, and operator-owned process lifecycle.
- Capture an agentPoint Claude, Codex, pi, or a generic provider client at capture: tapesctl start/capture vs a fixed-port proxy on :8080, always writing ingest on :8082.
- Search spansSemantic search over embedded main-conversation LLM spans via GET /v1/search/spans, tapesctl search, and the MCP search tool.
- Inspect and exportList sessions, browse traces and raw_turns, enable the optional API web UI, and stream GET /v1/sessions/{id}/export as JSONL.
- Generate skillsServer skill store and /v1/skills routes, transcript spine used for generation, and how tapesctl generate/list/sync talk to this API.
- Run a cassette locallyAdmit the bundled hello-world cassette with Compose, --cassettes, and tapesctl against the republished /v1/cassettes surface.
- Configure embeddingsSwitch embedding.provider between ollama and openai, set model and dimensions, store keys with tapes auth, and run or disable the embed worker.
- CLI referencetapes commands and flags: init, local, serve, status, auth, config, backfill, raw equivalence, dev, and version. tapesctl is the client, not this binary.
- Configuration referenceDotdir resolution, flag then TAPES_ then config.toml precedence, dotted keys, defaults, credentials.toml, and the cassettes array.
- Read APICompiled GET /openapi for :8081: sessions, traces, spans, stats, search, skills, admin, MCP, cassette proxy, and CONTRACT seal rules.
- Ingest APIPrivate write contract on :8082: POST /v1/ingest, POST /v1/ingest/transcript, body cap, JSON error envelope, and 413 reject_oversize.
- MCPStreamable HTTP MCP at /v1/mcp: cassette tools marked x-tapes-mcp, the legacy search tool, and stateless transport limits.
- Split the stackRun proxy, api, ingest, derive-worker, and embed-worker as separate processes, including flags, DSNs, and independent failure domains.
- Gateway capturetapes-extproc Envoy adapter: env config, gRPC recv limits, ingest POST of completed turns, and RawResponseMode for the capture ratchet.
- Prove the capture ratchetoff, dual, and raw reducer modes, plus tapes raw equivalence classes, excluded fields, and the read-only comparison against stored reductions.
- TroubleshootingWrong-port capture, missing OpenAI embed keys, ingest 413, attribution-repair 200 vs 202, --wipe data loss, and GOEXPERIMENT=jsonv2 build failures.
- ContributeNix or Make build, make test through Dagger, OpenAPI CONTRACT seals, sqlc generate, PR title labels, and tapes vs tapesctl ownership.
Complete Markdown
The complete agent-readable Markdown files are published separately from this HTML page.