Three sibling Python tools that synthesize raw daily activity — git diffs over an Obsidian vault, agent CLI session traces, and ambient notes captures — into narrative recap sections written idempotently into the vault's daily check-in note.
Each tool reads one source, renders one section, and writes it into the same check-in file. Re-runs replace the section in place; hand-edits outside the marker survive.
| Tool | Source | Output |
|---|---|---|
vault-review |
git log over the vault |
Deterministic delta recap (what notes changed) |
agent-review |
agentsview Postgres (Claude / Codex / Gemini CLI session logs) |
LLM-synthesized daily narrative report |
memex-review |
serverless-memex /thoughts API |
Deterministic capture-inbox section (triage surface) |
The result, in a single day's check-in note:
journal/checkins/2026-05-19.md
├── ## vault-review — 2026-05-19 ← what you wrote/edited in the vault
├── ## agent-review — 2026-05-19 ← what you did across Claude/Codex/etc.
└── ## memex-review — 2026-05-19 ← what you captured (inbox for triage)
The three tools are independently installable and independently deployed. They live together because they share — by deliberate convention — the same shape:
- Same CLI verbs.
run today,run yesterday,run YYYY-MM-DD,run YYYY-MM-DD..YYYY-MM-DD,show,reset, with global--dry-runand--printflags. - Same project layout (
config.py,<source>.py,dossier.py,vault.py,cli.py— seeAGENTS.mdfor the mirror spec). - Same marker-bracketed idempotency. Every section is wrapped in a predictable HTML comment marker; the writer strips and replaces by regex. Human edits outside the marker are preserved.
- Same
pydantic-settingsconfig shape. All config via env or.env;VAULT_PATHandTZare common across all three, plus per-source credentials.
The monorepo is what makes the shape enforceable. Drifting one tool away from the family pattern is visible in a diff; without colocation, the three would slowly stop behaving like peers.
Deterministic where possible; LLM only where it adds clear value.
Two of the three tools have no LLM at all — vault-review is pure
git log → markdown, memex-review is pure REST hydration → markdown.
Only agent-review calls an LLM (Claude), and even there the extraction
phase is deterministic SQL and only the digest+synthesis stages are
generative. This keeps cost, latency, and reproducibility predictable.
Capture-side vs synthesis-side. The system separates raw capture
(serverless-memex, agent CLI logs, raw git diffs) from synthesis (the
recap sections in the check-in note). The check-in note is the synthesis
surface a human reads; the capture surfaces are the firehose the tools
read.
The vault is the durable store. Each tool writes back into the vault git repo, which auto-syncs across machines. There is no separate database of "recap state" — if you can reach your vault, you have the full history.
Hosting is decoupled from the workloads. Deterministic periodic jobs (these three tools) have a different security/scrutiny profile from agent runtimes, even when they share a box. The tools assume nothing about their host beyond "Linux with cron, the credentials they need, and (where applicable) a vault checkout."
Each tool stands alone — pick whichever source you care about first.
# vault-review — the simplest entry point (no LLM, no Postgres, no
# external service; just a git-tracked vault).
cd vault-review/
uv tool install .
vault-review run today --dry-run --print
# memex-review — requires a deployed serverless-memex instance.
cd memex-review/
uv tool install .
memex-review run today --dry-run --print
# agent-review — requires an agentsview Postgres + Anthropic API key.
cd agent-review/
uv sync
uv run agent-review today --dry-run --printAll three default to VAULT_PATH=~/vault and TZ=America/Los_Angeles.
Override via .env or environment variables — see each tool's README
for the full config surface.
All three are designed to run as overnight cron jobs on a Linux host
with the vault checked out locally. Each tool ships a
deploy/run-<tool>-daily.sh wrapper that:
- Sources credentials from
~/.secrets. - Runs the tool for "yesterday".
- Commits and pushes the resulting check-in note change.
Stagger the cron lines by at least 30 minutes per tool so they don't
race on the vault git lock. See AGENTS.md for the
deployment recipe.
| Tool | Status | Running daily since |
|---|---|---|
vault-review |
Stable, in production | 2026-04 |
memex-review |
Stable, in production | 2026-05 |
agent-review |
Beta — today works end-to-end; cron deploy gated on credential-hygiene (dedicated PG user + Anthropic key) |
not yet daily |
serverless-memex— the Cloudflare Worker that backsmemex-review. MCP server for capture-side knowledge storage.
auto-review/
├── README.md # this file
├── AGENTS.md # contributor guide (mirror layout, deploy recipe)
├── decisions/ # ADRs
├── doctor/ # cron health-check wrapper across all three siblings
├── vault-review/ # tool 1
├── agent-review/ # tool 2
└── memex-review/ # tool 3
MIT — see LICENSE.