Session memory for AI coding agents. Search past sessions, extract rules, and track what works.
io.github.burnssa/afterpaths β MCP Server
Afterpaths is an MCP server providing session memory for AI coding agents. It can search past sessions, extract rules, and track what works. The goal is to identify which model and approaches perform best for a given stack and to avoid repeating costly dead ends.
π οΈ Key Features
Session memory for AI coding agents
Search past sessions
Extract rules
Track what works
π Use Cases
Compare results across Claude Code, Cursor, and Codex
Capture discoveries as rules from prior sessions
Identify approaches that lead to breakthroughs vs. expensive dead ends
β‘ Developer Benefits
A single view across AI coding tools
Ability to guide an agent team away from repeated mistakes
β οΈ Limitations
No additional implementation details (e.g., tool list, API surface, or limits) are provided in the available source data.
Extract rules from what worked. Track what didn't. Find the best models for your stack.
You're running Claude Code, Cursor and Codex, but which model actually works best for your stack? What approaches lead to breakthroughs vs. expensive dead ends? How do you stop your agents from making the same mistakes?
Afterpaths gives you a single view across all your AI coding tools: compare what's working, capture discoveries as rules, and guide your agent team away from costly diversions.
Afterpaths Demo
What you're seeing:
ap audit β Overview of your sessions, models used, and rule status
ap show 5 --raw β Raw session transcript (the messy JSONL data, made readable)
ap show 5 β LLM-generated summary extracting discoveries, dead ends, and decisions
head .claude/rules/gotchas.md β Rules automatically extracted and ready for Claude's next session
The Problem
You're managing multiple agents - retaining critical context and learning from sessions is painful:
Repeated mistakes β Your agents hit the same gotchas. Three weeks later, same dead end, same wasted tokens.
No cross-tool visibility β Is Opus actually better than Sonnet for your codebase? Is Cursor outperforming Claude Code? You're guessing.
Rules are tedious β After a costly diversion, the last thing you want is to write a CLAUDE.md rule. So you don't. And the knowledge evaporates.
Sessions vanish β Session content is obscurely logged and hard to extract. Then it's often auto-deleted after 30 days. That breakthrough architecture decision? Context gone.
Afterpaths captures sessions across tools, surfaces what's working, and generates rules automaticallyβso your agents learn from every session, and you retain all your rich session context.
How It Works
code
Your Sessions Afterpaths
βββββββββββββββ ββββββββββββββββββββββββββββββββββββ
Claude Code βββΊ ap log βββΊ Browse sessions across IDEs
Cursor ap stats βββΊ Analytics: tokens, activity, errors
Codex ap summarizeβββΊ Session summaries (what happened)
ap rules βββΊ Rule files (what to remember)
ap search βββΊ Find past discussions & discoveries
β
βΌ
.claude/rules/ Β· .cursor/rules/
β
βΌ
Your next session is smarter
Quick Start
bash
pip install afterpaths
# Navigate to your project (rules are project-specific)cd ~/code/your-project
# Run audit to see what you have
ap audit
The audit shows your sessions across all tools, model performance, and whether you have rules set up. No API key needed.
From there, the recommended flow:
bash
# 1. Browse sessions and find significant work
ap log# 2. Summarize important sessions (requires API key)export ANTHROPIC_API_KEY="sk-ant-..."
ap summarize 1
# 3. Extract rules from summaries β .claude/rules/
ap rules
# 4. Search across past sessions
ap search "database schema"
ap search "auth" --deep # also search raw transcripts# 5. Track ongoing performance
ap stats
ap stats --daily
Tip:ap is the short alias for afterpaths. Both work identically.
All commands support --json for structured output (e.g., ap log --json, ap show 1 --json, ap search "query" --json).
See docs/commands.md for the full command reference and recipes.
From Session to Rules
Real example: A bug causing 76 missing sessions became a rule that prevents the same mistake.
While building afterpaths, sessions for a project weren't showing up. The path (let's call it) /Users/Code/foo_bar was being decoded as /Users/Code/foo/bar. After investigation, we discovered Claude Code uses lossy path encodingβboth / and _ become -.
The summary captured the discovery:
markdown
## Discoveries-**Claude Code's path encoding is lossy**: Project paths in `~/.claude/projects/`
are encoded by replacing `/` with `-`, but underscores are ALSO converted to
hyphens. Three different paths encode identically:
-`/Users/Code/foo_bar` β `-Users-Code-foo-bar` -`/Users/Code/foo-bar` β `-Users-Code-foo-bar` -`/Users/Code/foo/bar` β `-Users-Code-foo-bar`
ap rules extracted it into .claude/rules/gotchas.md:
markdown
-**Claude Code lossy path encoding**: Claude Code encodes project paths by
replacing both `/` and `_` with `-`, making them indistinguishable when
decoding. When decoding, try underscore variants alongside hyphen variants
at each greedy step, preferring longer segments (single directories) over
nested paths.
_Source: 91b1ffbc_
Next time Claude works on path decoding in this codebase, it already knows about the lossy encodingβno need to rediscover it.
Why Afterpaths
Without
With Afterpaths
Discover gotcha, forget to document it
ap summarize captures it with full context
Hit the same issue 3 weeks later
Rule in .claude/rules/ prevents it
No idea what's working
ap stats shows tokens, sessions, error rates
Sessions scattered across IDEs
ap log unified view across Claude + Cursor
Learnings siloed per tool
Rules sync to .claude/rules/ and .cursor/rules/
What Gets Extracted
Category
What it captures
Example
Dead Ends
Approaches that failed
"Don't use X because Y"
Decisions
Architectural choices
"We chose Redis over Postgres because..."
Gotchas
Non-obvious warnings
"Watch out for X when doing Y"
Patterns
Techniques that worked
"For X, use pattern Y"
Each rule includes source session references so you can trace back to the original context.
Cursor sessions: the adapter reads several known chat/composer formats from
state.vscdb (including workbench.panel.aichat.view.aichat.chatdata,
composer.composerData, and allComposers), but Cursor changes its storage
schema often and some sessions will return Entries: 0 even when the
state.vscdb file is present. When this happens, ap show <ref> --raw and the
afterpaths_show_session MCP tool emit a warning rather than silently
returning empty. The raw file is untouched β if you need that session, opening
state.vscdb directly with sqlite3 will still work.
Tool provenance features (ap show --artifacts, commit tracing, file
activity) only cover sessions whose entries the adapter can read.
MCP Server
Afterpaths includes an MCP server that puts session history directly into your agent's tool list. Instead of relying on agents to discover the CLI, the MCP server makes session search, summaries, and rules available as native tools.
bash
# Install with MCP support
pip install afterpaths[mcp]
# Add to Claude Code
claude mcp add afterpaths -- afterpaths-mcp
# Or run directly
python -m afterpaths.mcp_server
Tools exposed:
Tool
Description
afterpaths_list_sessions
List recent sessions for context recovery
afterpaths_show_session
Read session summaries and transcripts
afterpaths_show_artifacts
Show artifacts ledger: files written/edited with provenance
afterpaths_summarize
Generate summaries for sessions
afterpaths_search
Search across past sessions (auto-escalates to transcripts on 0 summary hits)
afterpaths_get_rules
Get extracted rules (dead ends, decisions, etc.)
Once configured, agents can ask "have we seen this before?" or "what were the dead ends?" and get answers from your session history.
Privacy
All local β Summaries and rules stay in your project
Each rule file is split into a manual section (preserved across ap rules runs) and an auto section (regenerated each run):
markdown
# Gotchas: Things to Watch For
<!-- afterpaths:manual:start -->
_Add project-specific notes here β preserved across `ap rules` runs._
<!-- afterpaths:manual:end -->
<!-- afterpaths:auto:start -->
> Auto-generated by `afterpaths distill` | Updated: 2026-04-21 12:00> Sources: 3 session(s)## Rules-**Some extracted rule**: ...
_Source: abc12345_
<!-- afterpaths:auto:end -->
Put hand-curated rules or project-specific reminders between the manual:start / manual:end markers β they'll survive every ap rules run. Content outside those markers (and outside the recognized boilerplate) blocks the run as a safety check. Pass --force to overwrite anyway, or wrap the content in manual markers to preserve it.
If you're upgrading from an earlier version and your rule files contain only auto-generated content, markers are inserted automatically on the next ap rules run with an empty manual section β no action required.
Roadmap
Claude Code session parsing
Cursor session support
Session analytics (tokens, errors, daily trends)
LLM summarization
Automatic rule extraction
Multi-target export (Claude, Cursor)
Codex CLI support
Cross-session search (ap search)
JSON output (--json flag)
MCP server for agent integration
Semantic search across sessions
Benchmarking and productivity insights
License
MIT
Manage your AI coding agents. Learn what works. Stop repeating mistakes.
Install
Configuration
Environment variables
ANTHROPIC_API_KEYsecret
Anthropic API key for session summarization and rule extraction. Not required for search, list, show, or rules tools.
OPENAI_API_KEYsecret
OpenAI API key (alternative to Anthropic) for summarization.