openhandoff-mcp
Enables AI coding agents to persist, share, and retrieve project context locally via plain-text files, with support for capturing, packing, searching, and importing transcripts without external services.
README
OpenHandoff
Portable, local-first context handoffs between AI coding agents.
OpenHandoff keeps the durable project truth in two small files:
CONTEXT.mdfor people and Obsidian;context.jsonfor agents, MCP adapters, and automation.
The first MVP is deliberately boring and inspectable: no cloud account, no hidden database, and redaction happens before the handoff is written. Future adapters can read Codex, Claude Code, Cursor, and Windsurf transcripts without forcing a vendor-specific memory format.
OpenHandoff is designed for public repositories and team handoffs: files are plain text, the MCP server is dependency-free, and secret-shaped values are redacted before persistence.
Skill pack
The repository includes three portable skills under skills/:
openhandoff-context— capture, recover, and pack context between agents.openhandoff-privacy— audit handoffs and transcripts before sharing them.openhandoff-release— prepare tested, documented, reproducible releases.
Copy a skill directory into your Codex skills directory, or install it with the Codex skill installer using this GitHub repository. The skills are deliberately narrow so they can be used independently.
Quick start
python -m venv .venv
source .venv/bin/activate
pip install -e .
openhandoff init .context --title "My project"
openhandoff capture .context \
--title "My project" \
--decision "Use SQLite" \
--todo "Add the MCP adapter" \
--notes "The next agent should run the test suite first."
openhandoff show .context
For a normal user install, use pipx install openhandoff after a release is published. Development dependencies and checks are documented in CONTRIBUTING.md.
Build a compact context slice for a specific task. Matching decisions, TODOs, and note lines are kept first, then the result is trimmed deterministically to the requested budget:
openhandoff pack .context --task "MCP adapter" --max-chars 4000
MCP server
The dependency-free MCP server exposes load_handoff, save_checkpoint, search_handoff, and pack_context over stdio:
openhandoff-mcp
For a local agent configuration, use the command openhandoff-mcp with no network access. The server only reads and writes the handoff path supplied by the agent.
Example Codex configuration:
[mcp_servers.openhandoff]
command = "openhandoff-mcp"
args = []
Example Claude Desktop configuration:
{
"mcpServers": {
"openhandoff": {
"command": "openhandoff-mcp",
"args": []
}
}
}
Capture agent events
openhandoff-hook accepts a JSON event (or plain text) on stdin, redacts credential-shaped values, and appends the result to .context/events.jsonl:
printf '%s\n' '{"type":"agent_message","message":"finished"}' \
| openhandoff-hook --path .context
Codex can send its notify payload directly to the hook. Add this to your Codex configuration (the command receives the JSON payload on stdin):
notify = ["openhandoff-hook", "--path", ".context"]
For Claude Code, wire the same executable into the command hook in your settings. The exact settings file can vary by Claude Code version; this is an illustrative example:
{
"hooks": {
"afterTurn": [
{"command": "openhandoff-hook --path .context"}
]
}
}
Import a transcript
Codex and Claude Code JSONL event streams can be imported into the same format:
openhandoff import-transcript ./rollout.jsonl .context --title "Project handoff"
Roadmap
- Cursor and Windsurf transcript adapters.
- File and commit citations in task-specific context packs.
- Obsidian and GitHub sync with secret scanning and review gates.
Project health
- License: MIT; see LICENSE.
- Security reporting: see SECURITY.md.
- Contributions: see CONTRIBUTING.md.
- Release notes: see CHANGELOG.md.
- Architecture: see docs/architecture.md.
- Release process: see docs/releasing.md.
The project is early-stage and welcomes real-world feedback, integrations, and documentation improvements. Please do not commit chat transcripts, credentials, or private Obsidian data.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.