memorX
Your AI picks up exactly where you left off — across commits, plans, and sessions.
One command to install. Zero-friction capture via Claude Code hooks. A live local dashboard so you can see your AI's memory. Single Go binary, zero runtime dependencies, 100% local.
go install github.com/arbazkhan971/memorx/cmd/devmem@latest
memorx install # wires Claude Code hooks + MCP server in one shot
memorx dashboard # open http://127.0.0.1:37778 — live memory stream
That's it. Open Claude Code and every session automatically knows where you left off.
Why memorX
Every AI coding CLI (Claude Code, Codex, Cursor, Windsurf, Gemini CLI) suffers from amnesia. Close a session, lose all context. Switch tools, start from scratch. You waste 5–10 minutes per session re-explaining your project, decisions, and progress.
memorX fixes this. One binary, works everywhere, remembers everything.
What you get
- Zero-friction capture — 5 Claude Code lifecycle hooks auto-capture sessions, commits, and decisions. No tool calls required.
- Live local web dashboard —
memorx dashboard opens a real-time web UI showing active feature, plan progress, memory stream, git timeline, and search. Embedded in the binary, no Node or Bun required.
- Cross-process live event stream — SSE-driven live updates work across the hook subcommand, the MCP server, and the dashboard via a tiny file-based event log at
.memory/events.jsonl.
- Auto-briefing on every session — the
SessionStart hook injects a "welcome back" summary into every new Claude Code conversation.
- Transcript summarization — on
SessionEnd, memorX reads the Claude Code JSONL transcript and stores a rule-based summary (tool counts, edited files, commits, decisions). No LLM call, fully deterministic.
- Git-native —
PostToolUse hook watches for git commit and auto-syncs commits with intent classification (feature/bugfix/refactor), matching commits to plan steps.
- Plan persistence — plans survive across sessions, auto-track progress from commits.
- Bi-temporal facts — tracks what's true now AND what was true before (contradiction resolution, time-travel queries).
- Memory linking — A-MEM/Zettelkasten-style connections between related memories.
- 3-layer progressive-disclosure search —
memorx_search_index → memorx_timeline → memorx_get_memory, token-efficient recall.
- Privacy tags — wrap anything in
<private>…</private> and it's stripped at the storage boundary. Works uniformly across hooks, MCP tools, and import.
- Universal MCP — works with Claude Code, Cursor, Codex, Windsurf, Gemini CLI — any MCP client.
Install
One command (recommended)
go install github.com/arbazkhan971/memorx/cmd/devmem@latest
memorx install
memorx install detects Claude Code, writes hook entries to ~/.claude/settings.json, registers the MCP server via claude mcp add, and creates ~/.memorx/settings.json. Idempotent and non-destructive — re-running is safe and existing non-memorx hooks are preserved.
Verify
memorx doctor # self-test: DB, hooks, binary on PATH
Manual setup (other MCP clients)
# Claude Code
claude mcp add -s user --transport stdio memorx -- memorx
# Cursor — add to .cursor/mcp.json:
{ "mcpServers": { "memorx": { "command": "memorx", "transport": "stdio" } } }
Dashboard
memorx dashboard # :37778 by default
memorx dashboard --port 8080 # custom port
The dashboard shows:
- Active feature with branch + plan progress bar
- Memory counts (features, notes, facts, commits, sessions)
- Live event stream (updates in real-time as hooks and MCP tools write)
- Recent memories with type tags (decision / blocker / note / ...)
- Recent commits with intent tags (feat / fix / refactor / ...)
- Search box — live full-text search across all notes
Pure Go net/http + embedded HTML via //go:embed. No Node, no bundler, no external process.
How the live stream works across processes
The MCP server, hook subcommands, and dashboard all run in separate processes. They share updates through a tiny JSONL event log at .memory/events.jsonl:
- Any process that publishes an event (hook, MCP tool) appends a line to the log.
- The dashboard's background goroutine tails the file and re-publishes each new entry into its in-process broker.
- SSE subscribers on
/api/events receive the live stream.
The log is opportunistically truncated to the last 256 events when it exceeds 1 MB, so it never grows unbounded.
How it works