loomlog
Local, cross-agent dev journal for Claude Code, Codex, and Gemini CLI.
Passively weaves the sessions your AI tools already log into an Obsidian-compatible vault,
then lets you recall any day ("what did I do?") and reflect with research-backed
frameworks. No API key. Token-cheap.
loom = the three agents' threads, woven into one log + knowledge graph.
Status: published on npm. Claude Code
and Codex are fully supported; Gemini CLI is best-effort/experimental (it logs prompts
only and auto-deletes sessions). See grill-loomlog-20260607.md
for the full locked design and RELEASING.md for the release pipeline.
Why
Your AI coding sessions already get logged to disk — but they scatter across three
tools and (for Claude Code & Gemini) get auto-deleted after a while. loomlog
captures them promptly into durable Markdown you own, and lets you ask
"what did I do today?" across every agent at once.
- Capture is mechanical (no LLM) → 0 tokens. It just parses logs the agents
already write. Secrets are redacted before anything is stored.
- Reports run inside your agent via a slash command — the host model formats
them, so there's no API key and no extra cost.
- Storage is plain Markdown in a folder. Point it at an Obsidian vault and the
graph (Daily ↔ Project ↔ Topic) lights up automatically.
How it works
agent session logs ──(capture, mechanical, 0 tokens)──▶ <vault>/Daily/*.md , Projects/*.md
│
/report (slash command) ───┘──▶ host model writes your report
| Agent | Auto-deletes logs? | Capture strategy |
|---|
| Claude Code | Yes (30d default) | Stop hook → capture immediately |
| Codex | No | lazy scan at report time |
| Gemini CLI | Yes (on by default) | scheduled daily scan (experimental) |
Recall — "what did I do?"
Forgot what you worked on? Ask loomlog. The first arg is a query (mechanical, 0 tokens,
works in a plain terminal):
loomlog 2026-06-08 # a specific day loomlog today | yesterday
loomlog week # last 7 days loomlog month # last 30
loomlog <project> # one project's history loomlog patterns # what work you do most
patterns answers "what kind of work do I do?" — your command-type mix, time split across
projects, agent usage, busiest days, and recent commits (loomlog reads your git commit
messages straight from the logs — your own "what I shipped" log, 0 tokens).
Reflect — structured retrospection, grounded in the research
Recall is what; reflection is so what / now what. Reflection runs inside your AI agent
(Claude Code / Codex / Gemini) as a slash command — because the back-and-forth needs a model,
and loomlog's rule is the host model does it, no API key. loomlog mechanically fills the
factual layer; the agent walks you through a real reflective-practice framework; the result is
saved to Reflections/<date>.md (a folder capture never overwrites).
How a daily reflection actually goes — in Claude Code, after a day of work, you type:
/loomlog:reflect
and the agent:
- pulls today's facts (
loomlog reflect --json under the hood),
- shows you What you did — per project: intent, key files, work type, and the
commits you shipped,
- asks you the So What questions one at a time — "今日いちばん重要だった作業は?",
"詰まったのはなぜ?", "新しく分かった/決めたことは?" — you answer in the chat,
- asks the Now What — "次にやること/変えることは?",
- writes the finished reflection to
~/loomlog/Reflections/2026-06-09.md and links it back to
that day's note (so it shows up in your Obsidian graph).
/loomlog:reflect # daily — What / So What / Now What (Borton→Driscoll)
/loomlog:weekly # weekly — Gibbs Reflective Cycle (1988)
Pick a different framework with an argument: /loomlog:reflect aar (After-Action Review, good
when the day was blocker-heavy), kpt, or ywt. Under the hood it's just
loomlog reflect --template <t> --json → you answer → loomlog reflect-save (≈0 extra tokens,
no API key). In a bare terminal without an agent, use the Recall commands above instead —
loomlog reflect alone only prints the model-facing JSON.
Quick try (dev)
npm install
# Capture one Claude Code transcript into a vault:
npx tsx src/cli.ts capture ~/.claude/projects/<proj>/<session>.jsonl --vault ./my-vault
cat ./my-vault/Daily/*.md
Install
npm install -g loomlog
loomlog init # creates ~/loomlog, writes the Obsidian graph config,
# registers the vault with Obsidian, detects your agents
export LOOMLOG_VAULT=~/loomlog