OpenExp MCP
Memory for Claude Code: hooks record human and agent decisions, and a grade is assigned afterwards once the outcome is known.
- 59 ★ on the repository
- Last commit
- MIT
Broad access
Why this level
- Hooks continuously record observations and session transcripts, including file and command contents, into a vector database.
Install
- Works in
Manual install
git clone https://github.com/anthroos/openexp.gitThen `cd openexp` and `./setup.sh`: the script installs hooks, Qdrant and the MCP server.
Access and checks
How we reviewBroad accessThe tool can change data, run commands or handle secrets.
- Hooks continuously record observations and session transcripts, including file and command contents, into a vector database.
This is third-party code. Review the repository files before installing.
What it does
OpenExp records every decision in human and agent work as a trajectory step and links steps into a coherent journey such as a deal, a release or a project. Grading appears only at the end, when reality returns its verdict: `outcome` (`closed_won`, `closed_lost`, `failed`, `abandoned`) and a `grade` from 0 to 1. Intermediate steps are stored raw with no hand-labeled signals. Four Claude Code hooks run automatically: `SessionStart` injects relevant memories, `UserPromptSubmit` does a quick recall on every message, `PostToolUse` records observations after Write, Edit and Bash and `SessionEnd` ingests the transcript into Qdrant and extracts decisions asynchronously. Retrieval combines semantics, BM25 and recency, and an MCP server exposes memory tools. A publishing pipeline anonymizes trajectories with a ready prompt.
Who it is for. People who run deals, projects and releases with Claude Code and want to accumulate checkable experience about which decisions led where.
Good fit when
- You want the agent to remember decisions and context from earlier sessions.
- A deal closed and the chain of steps that led to it must be tied to the outcome.
- You need a set of decisions labeled by outcomes to train domain intuition.
- Experience must be anonymized before publishing.
Not a fit when
- You need a plain note store with no hooks or vector database.
- Session transcripts must not be saved to disk: the hooks record them continuously.
- Docker and Qdrant are unavailable on the machine.
Example request
Find decisions from the previous deal with this client in memory and show how it ended and what grade it got.MCP
- Transport
- stdio
- Authentication
- not required
Environment variables
ANTHROPIC_API_KEYsecret- Only needed for the optional anonymize and extract pipeline when publishing.
Limitations
Python 3.11 or newer, `jq` and Qdrant are required: either Docker, which `./setup.sh` starts itself, or your own binary. No API key is needed for core functions, and embeddings are computed locally with FastEmbed. An Anthropic key is needed for the optional anonymize and extract pipeline. Installation registers four hooks in Claude Code and an MCP server. The author states that Q-value scoring proved ineffective and was removed on 26 April 2026.
How to disable. Remove the four hooks and the MCP server entry from the Claude Code configuration, stop the Qdrant container and delete the `openexp` directory if the memory data is not needed.
FAQ
How do I install OpenExp?
Run `git clone https://github.com/anthroos/openexp.git`, enter the directory and run `./setup.sh`. The script installs four Claude Code hooks, starts Qdrant in Docker when needed and registers the MCP server.
What data do the hooks record?
Observations after Write, Edit and Bash, the session transcript at close and prompt context. They go to a local Qdrant, and decisions are extracted asynchronously at session end.
Is an API key needed?
Not for core functions, embeddings run locally via FastEmbed. An Anthropic key is only needed for the anonymization pipeline when publishing.
How is OpenExp different from Mem0 or Zep?
Those handle storage, while OpenExp adds outcome grading: it links steps into a trajectory and sets a final label when a deal closes or a release ships.
Which labels are set?
Only at the end of a trajectory: `outcome` with `closed_won`, `closed_lost`, `failed` or `abandoned` and a `grade` from 0.0 to 1.0.
Discussion
No questions or reviews yet.
Related
MCP serversShared memory for Claude Code, Codex and Cursor: a decision made in one session is recalled in another tool or on another machine.
Claude Code and Codex hooks search your notes and surface a known answer before a reply and after a failed command.
A Claude Code plugin with hooks and 26 skills: measures what the agent knows, blocks edits until code is read, keeps memory
Local long-term memory for agents: decisions, mistakes and preferences are stored on your machine and pulled into new sessions
An environment for Claude Code that keeps context across sessions via hooks, ledgers and handoffs, orchestrates agents and saves tokens
Hooks for Claude Code and OpenCode draw agent work as a pixel-art office: the main agent as a boss, subagents as employees.
README in short
The project calls itself a hippocampus for agents and methodologically refuses to label individual steps. It continues with the outcome-only labeling principle, four hooks, a publishing pipeline and project status.