A local, single-user memory desk for Claude Code and Codex work. It mines session exhaust into reviewed cards, then injects at most three tiny citations into the next run — or returns nothing when the match is weak.
Ask Afterwit what earlier sessions learned and it refuses to dump a transcript. It returns a few cited cards, or nothing.
The source pile is real: Claude Code JSONL, Codex JSONL, memory markdown, and project docs. The product is the restraint layer between that pile and the next agent. Ingest normalizes events, distill promotes only resolved outcomes, review gates trust, and injection stays capped at ≤3 cards / ≤600 tokens VERIFIED.
The name is literal. Afterwit means wisdom that arrives too late; this system catches that late session-wisdom before the next context window pays to rediscover it.
A coding-agent session finally finds the fix, defends the decision, names the environment trap, and then the context window closes.
The next agent starts clean and pays the same tax again. The transcript technically remembers everything, but at human scale it remembers too much: false starts, dead ends, raw logs, and hundreds of megabytes nobody will reread before asking for help.
FIG. 1 shows the failure before the mechanism. Paid-for intelligence falls off the end of the session; the next run begins with no useful memory in hand.
Claude Code JSONL, Codex JSONL, memory docs, and project docs enter through four adapters. Each one normalizes into the same Event shape with source lines, project, timestamp, role, kind, text, and metadata — and calls redaction before returning anything.
The prompt is deliberately conservative: empty output is common and good. Candidates need visible resolution evidence and source lines. False starts remain in the transcript; only decisions, error-fix pairs, gotchas, preferences, facts, and snippets that actually resolved can move forward.
Afterwit dedupes, merges, supersedes, and confidence-gates. Agent-written cards and low-confidence candidates go to a queue. The reviewed batch report shows the posture in practice: 190 queued cards reviewed, 187 approved, 3 left queued, and no automatic promotion to trusted memory. VERIFIED REPORT
Trusted knowledge becomes one markdown file per card with mandatory sources. SQLite is deliberately disposable: rebuild deletes derived rows and reindexes from wiki markdown. That means audit, rollback, sync, and provenance stay ordinary file operations instead of becoming opaque database lore.
The proactive path is small on purpose: threshold-gated ranking, verified-only by default, maximum three cards and six hundred tokens. Weak matches fall below the floor. Returning nothing is not a miss; it is the feature that keeps context trustworthy.
The full retrieval surface stays available through eight MCP tools: recall, lookup, why, file context, project brief, related cards, save insight, and feedback. VERIFIED The dashed ember arc is the product's discipline loop: usage feeds future ranking, and injection disables if the 30-day hit-rate falls below 20% over at least 20 servings. DESIGNED FOR
The obvious design was semantic code search: index the bodies, embed the snippets, and let agents paste old code into new contexts.
Memory systems are usually rewarded for surfacing something. For coding agents, wrong-but-related context is worse than silence.
The hard decisions all rhyme: do less proactively, keep more provenance, and make trust revocable.
These are the six forks that shaped the product. Each row starts with the tempting failure mode and ends with the constraint that made Afterwit useful instead of noisy.
hh inject lexical, verified-only, boring, and fast.One number a skeptic should push on, answered before the interview: p95 <200ms is a budget, not a measured distribution. The verified latency evidence here is one Wave 3 report of 50ms. VERIFIED SINGLE The page does not dress one sample as a benchmark.
What that buys an agent: not a second brain, not a transcript dump, and not a chatbot memory fantasy. Just the smallest verified reminder that changes the next move — with a citation attached.
Ask what your agents keep relearning →A dossier about trusted memory should say exactly where trust ends.
Afterwit currently has one user: me. It is v0.1.0, P4 is complete, and the cleanest idea in this ledger lives on one machine. There is no README, no LICENSE file, and no git remote configured in the verified repo-local state.
The public-release story is future work, not something this page should imply. The db_schema adapter is P5 and unbuilt. The injection hot path has one verified 50ms report; p95 <200ms is still a budget, not a measured distribution. The reviewed corpus exists, but real card bodies and paths are private and stay off this page.
That candor is the trust gate. Afterwit means wisdom too late; this project earns the name only if it captures hindsight without pretending it has already become a platform.
Bring the failure your tools keep rediscovering. The page is inert, but the offer is simple: turn hindsight into cited, review-gated memory that knows when to stay silent.