Two passes. One narrative.
TeamLaboration processes activity in two passes: each Claude Code session becomes a short structured summary, and all summaries within a week roll up into a single readable narrative. Here's how that works and how to drive it.
The pipeline
- 01 · CollectWalk
~/.claude/projects/Every poll (default five minutes) the collector diffs files by
mtimeand SHA-256. New or changed sessions are inserted into the local SQLite database with statuspending. Raw logs are never modified or copied — only read. - 02 · Summarize each chatOne structured summary per session
Pending sessions are sent to the Anthropic API. The model returns a small structured object — title, key topics, outcome — that gets stored as a
chat_summaryrow. Raw turns are not stored.{ "title": "Refactored auth middleware to fix session token storage", "project": "my-app", "key_topics": ["auth", "session tokens", "middleware refactor"], "outcome": "Rewrote session handler; all tests pass; deployed to staging.", "duration_minutes": 42 } - 03 · Roll up the weekAggregate summaries into a narrative
When a weekly report is generated, all per-chat summaries within the week window are sent to the model with a rollup prompt. Output is a 2–4 paragraph markdown narrative covering themes, accomplishments, and notable decisions — written in the first person.
If the week has more sessions than fit in one model call, the rollup uses a map-reduce pattern: batches of summaries are condensed first, then the condensed versions are summarized together. Individual chat failures are logged and skipped — a partial weekly report is generated rather than failing the whole thing.
Three ways to drive it
In order of how hands-off they are:
Let the daemon do everything
With ai_enabled = true and your Anthropic key saved in Settings, the daemon summarizes pending sessions every day at the configured hour (Settings → Schedule) and auto-generates the weekly report on the configured day of the week. Nothing to run — leave the daemon up and reports appear.
Click the button
Open http://localhost:7842, go to the Week view, click Generate Report. This runs both summarization and the weekly rollup for the selected week immediately using the daemon's Anthropic key. Already-summarized sessions are not re-summarized — only the rollup is regenerated, so the AI cost is bounded.
Let Claude Code summarize itself
Set ai_enabled = false. The daemon collects but never calls the Anthropic API. From inside any Claude Code session, run:
/mcp__teamlaboration__summarize_pending /mcp__teamlaboration__weekly_report These prompts make Claude Code itself act as the summarizer — it pulls pending session turns through MCP tools and writes results back via submit_summary / submit_weekly_report. Useful when you want to summarize with whatever model your Claude Code session is already running. Full MCP docs.
Re-running and re-generating
From the session detail view in the dashboard, or via the regenerate_summary MCP tool. Useful after prompt updates or when a summary feels off.
Click Generate Report again on the Week view. Previous versions are kept — list them via list_report_versions over MCP.
Mark a session as a highlight (or archive it) from the session detail view. Flags affect how the rollup prompt weighs sessions in the weekly narrative.
Exports & retention
- · Export any weekly report as Markdown or JSON from the Week view, or via
export_weekly_report. - · If
output_diris set in config, generated reports are mirrored there automatically — handy for committing to a journal repo. - · Summaries and reports older than 28 days are purged on daemon start (Solo tier). Export before they age out.
- · The session ledger (no content, just file path + status) is kept for 56 days so the collector can avoid re-summarizing files it has already processed.
What leaves your machine
In Solo tier, the only outbound network call is to api.anthropic.com using your API key, during summarization. No telemetry. No analytics. No TeamLaboration server. Raw Claude Code turns are sent to Anthropic only during the per-chat summarization step — they're never persisted server-side and never copied to disk by TeamLaboration after summarization completes.
When ai_enabled = false (the MCP slash-command workflow), even that call is gone — Claude Code makes its own model calls under its own credentials, and TeamLaboration only stores the resulting summaries.