A plugin marketplace for Claude Code, powered by Honcho from Plastic Labs.
| Plugin | Description |
|---|---|
| honcho | Persistent memory for Claude Code sessions |
| honcho-dev | Skills for building AI apps with the Honcho SDK |
Add the marketplace to Claude Code:
/plugin marketplace add plastic-labs/claude-honcho
Then install the plugin(s) you want:
/plugin install honcho@honcho
/plugin install honcho-dev@honcho
You'll need to restart Claude Code for the plugins to take effect. Follow the instructions below for setting up each plugin.
Persistent memory for Claude Code using Honcho.
Give Claude Code long-term memory that survives context wipes, session restarts, and even ctrl+c. Claude remembers what you're working on, your preferences, and what it was doing — across all your projects.
Bun is required to run this plugin. Install it with:
curl -fsSL https://bun.sh/install | bash- Go to app.honcho.dev
- Sign up or log in
- Copy your API key (starts with
hch-)
macOS / Linux -- add these to your shell config (~/.zshrc, ~/.bashrc, or ~/.profile):
# Required
export HONCHO_API_KEY="hch-your-api-key-here"
# Optional (defaults shown)
export HONCHO_PEER_NAME="$USER" # Your name/identity
export HONCHO_WORKSPACE="claude_code" # Workspace nameThen reload your shell:
source ~/.zshrc # or ~/.bashrcWindows (PowerShell) -- set a persistent user environment variable:
# Required
[Environment]::SetEnvironmentVariable("HONCHO_API_KEY", "hch-your-api-key-here", "User")
# Optional
[Environment]::SetEnvironmentVariable("HONCHO_PEER_NAME", $env:USERNAME, "User")
[Environment]::SetEnvironmentVariable("HONCHO_WORKSPACE", "claude_code", "User")Then restart your terminal so the new variables take effect.
/plugin marketplace add plastic-labs/claude-honcho
/plugin install honcho@honcho
# Exit Claude Code (ctrl+c or /exit)
# Start it again -- you should see the Honcho pixel art and memory loading on startup.
claude/honcho:interview
Claude will interview you about your personal preferences in order to kickstart a representation of you. What it learns will be saved in Honcho and remembered forever. The interview is specific to the peer name you chose in your environment: it will carry across different projects!
Tell Claude how to use its memory by adding directives to your personal ~/.claude/CLAUDE.md
(not a project-level CLAUDE.md). We use the personal file because Honcho is about you — your
preferences and memory follow you across every project, not just one repo. A project-level
CLAUDE.md would only apply when working in that specific directory.
Paste this into Claude Code:
Read your
~/.claude/CLAUDE.md(create it if it doesn't exist). Add the following directives, keeping any existing content:# Honcho Memory You have persistent memory via Honcho. Context about me, my preferences, and our past work is loaded automatically at the start of every session. ## How to use it: - Trust the Honcho context injected at session start. It contains what you know about me — act on it. Do not ignore it or ask me things you already know. - Use `chat` or `search` mid-conversation when you need context beyond what was loaded at startup. - Use `create_conclusion` to save new insights as you learn them: my preferences, decisions, patterns I like, things I've asked you not to do. - I should never have to repeat myself. If I've told you something before, you should already know it. ## Honcho Integration for Projects - When working on a Python or TypeScript project that involves AI agents or LLM chat but lacks persistent memory, use the `/honcho-integration` skill to add Honcho. Don't wait to be asked — suggest it early.Save the file.
This ensures Claude actively uses Honcho's memory — not just passively receiving context at startup, but saving new insights and querying for deeper context throughout your conversations.
- Persistent Memory — Claude remembers your preferences, projects, and context across sessions
- Survives Context Wipes — Even when Claude's context window resets, memory persists
- Git Awareness — Detects branch switches, commits, and changes made outside Claude
- Flexible Sessions — Map sessions per directory, per git branch, or per chat instance
- AI Self-Awareness — Claude knows what it was working on, even after restarts
- Cross-Tool Context — Link workspaces across Claude Code, Cursor, and other hosts so context flows between tools
- Team Support — Multiple people can share a workspace and build context together
- MCP Tools — Search memory, query knowledge about you, and save insights
The honcho plugin provides these tools via MCP:
| Tool | Description |
|---|---|
search |
Semantic search across session messages |
chat |
Query Honcho's knowledge about the user |
create_conclusion |
Save insights about the user to memory |
get_config |
View current configuration and status |
set_config |
Change any configuration field programmatically |
| Command | Description |
|---|---|
/honcho:status |
Show current memory status and connection info |
/honcho:config |
Interactive configuration menu |
/honcho:setup |
First-time setup — validate API key and create config |
/honcho:interview |
Interview to capture stable, cross-project user preferences |
All configuration lives in a single global file at ~/.honcho/config.json. You can edit it directly, use the /honcho:config skill, or use the set_config MCP tool. Environment variables work for initial setup but the config file takes precedence once it exists.
Session strategy controls how Honcho maps your conversations to sessions. Change it with /honcho:config or set_config:
| Strategy | Behavior | Best for |
|---|---|---|
per-directory (default) |
One session per project directory. Stable across restarts. | Most users — each project accumulates its own memory |
git-branch |
Session name includes the current git branch. Switching branches switches sessions. | Feature-branch workflows where context per branch matters |
chat-instance |
Each Claude Code chat gets its own session. No continuity between restarts. | Ephemeral usage, experimentation, or when you want a clean slate each time |
Controls how Honcho stores and retrieves conclusions about you. Change it via set_config or edit config.json directly. Requires a Claude Code restart.
| Mode | Behavior | Best for |
|---|---|---|
unified (default) |
All agents write to your self-observation collection (observer=you, observed=you). Conclusions are portable — switch between Claude, Hermes, or any agent without losing memory. |
Most users, when you want to build a unified context hub, agent-switching |
directional |
Each AI peer keeps its own separate view of you (observer=aiPeer, observed=you). Claude's observations stay with Claude, Hermes' with Hermes. |
Multi-peer workspaces where you want isolated per-peer(agent) representations |
Peer defaults: The plugin does not explicitly set
observeMeorobserveOtherson peers — it uses the server-side defaults. If you want to change how a peer observes (e.g., disable self-observation), update the peer's defaults via API or on app.honcho.dev. The only override the plugin applies isobserveOthers: trueon the AI peer indirectionalmode.
To change:
- Ask Claude: "Set my observation mode to directional"
- Or edit
~/.honcho/config.json:{ "observationMode": "directional" } - Or per-host:
{ "hosts": { "claude_code": { "observationMode": "directional" } } }
Note: Switching modes doesn't automatically migrate existing conclusions. Each mode reads from a different collection. See Migrating Observations below to move conclusions between collections.
When switching observation modes, conclusions stored under the old mode's collection won't be visible to the new mode. Use the migration script to copy them over:
# Requires: pip install honcho-ai
# Set your API key: export HONCHO_API_KEY="hch-..."
# Dry run — see what would be migrated (directional → unified)
python scripts/migrate-observations.py \
--workspace agents \
--from-observer claude \
--user ajspig \
--dry-run
# Execute the migration
python scripts/migrate-observations.py \
--workspace agents \
--from-observer claude \
--user ajspig
# Execute and delete the source conclusions after migration
python scripts/migrate-observations.py \
--workspace agents \
--from-observer claude \
--user ajspig \
--delete-sourceThe script:
- Reads all conclusions from the source collection (e.g.,
observer=claude, observed=ajspig) - Deduplicates by content against the destination (e.g.,
observer=ajspig, observed=ajspig) - Creates only the conclusions that don't already exist in the destination
- Handles rate limiting with automatic retries
To migrate in the other direction (unified → directional):
python scripts/migrate-observations.py \
--workspace agents \
--from-observer ajspig \
--to-observer claude \
--user ajspigIf you use multiple AI agents, run the script once per agent:
# Migrate Claude's observations to unified
python scripts/migrate-observations.py -w agents --from-observer claude --user ajspig
# Migrate Hermes' observations to unified
python scripts/migrate-observations.py -w agents --from-observer hermes --user ajspigRun with --help for all options.
Session names are prefixed with your peerName by default (e.g., alice-my-project). Set sessionPeerPrefix: false if you're the only user and want shorter names.
The plugin auto-detects which tool is running it (Claude Code, Cursor, etc.) and reads the matching block from hosts. Each host gets its own workspace and AI peer name, so data stays separated by default.
Host detection priority:
HONCHO_HOSTenv var (explicit override)cursor_versionin hook stdin (Cursor detected)CURSOR_PROJECT_DIRenv var (Cursor child process)- Default:
claude_code
If you want all hosts to share a single workspace (instead of per-host isolation), set globalOverride: true and a flat workspace field:
{
"globalOverride": true,
"workspace": "shared",
"hosts": {
"claude_code": { "aiPeer": "claude" },
"cursor": { "aiPeer": "cursor" }
}
}All tools will read and write to the shared workspace. Each tool still uses its own AI peer name.
Multiple people can share context by pointing to the same workspace. Each person uses their own peerName as identity, and sessions are automatically prefixed with it to avoid collisions.
Person A (~/.honcho/config.json):
{
"apiKey": "hch-v2-team-key...",
"peerName": "alice",
"hosts": {
"claude_code": {
"workspace": "team-acme",
"aiPeer": "claude"
}
}
}Person B (~/.honcho/config.json):
{
"apiKey": "hch-v2-team-key...",
"peerName": "bob",
"hosts": {
"claude_code": {
"workspace": "team-acme",
"aiPeer": "claude"
}
}
}Both Alice and Bob write to the team-acme workspace. Their sessions are namespaced (e.g., alice-my-project, bob-my-project) so data doesn't collide, but Honcho's dialectic reasoning can draw on context from both users. If you want fully independent sessions, set sessionPeerPrefix: false — but this is not recommended in shared workspaces.
Environment variables work for initial bootstrap (before a config file exists). Once ~/.honcho/config.json is written, the config file takes precedence for host-specific fields like workspace.
| Variable | Required | Default | Description |
|---|---|---|---|
HONCHO_API_KEY |
Yes | — | Your Honcho API key from app.honcho.dev |
HONCHO_PEER_NAME |
No | $USER |
Your identity in the memory system |
HONCHO_WORKSPACE |
No | claude_code |
Workspace name (used only when no config file exists) |
HONCHO_AI_PEER |
No | claude |
AI peer name |
HONCHO_HOST |
No | auto-detected | Force host detection: claude_code, cursor, or obsidian |
HONCHO_ENDPOINT |
No | production |
production, local, or a full URL |
HONCHO_ENABLED |
No | true |
Set to false to disable |
HONCHO_SAVE_MESSAGES |
No | true |
Set to false to stop saving messages |
HONCHO_LOGGING |
No | true |
Set to false to disable file logging to ~/.honcho/ |
┌─────────────────────────────────────────────────────────────────┐
│ Claude Code │
├─────────────────────────────────────────────────────────────────┤
│ SessionStart │ UserPrompt │ PostToolUse │ SessionEnd │
│ ─────────── │ ─────────── │ ──────────── │ ────────── │
│ Load context │ Save message │ Log activity │ Upload all │
│ from Honcho │ to Honcho │ to Honcho │ + summary │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ Honcho API │
│ │
│ Your messages and Claude's work → Persistent Memory → │
│ Retrieved as context at session start │
└─────────────────────────────────────────────────────────────────┘
The plugin hooks into Claude Code's lifecycle events:
- SessionStart: Loads your context and history from Honcho
- UserPrompt: Saves your messages and retrieves relevant context
- PostToolUse: Logs Claude's actions (file edits, commands, etc.)
- PreCompact: Anchors a memory snapshot before context compaction so knowledge survives summarization
- Stop: Flushes any pending messages
- SessionEnd: Uploads remaining messages and generates a summary
-
Check your API key is set:
echo $HONCHO_API_KEY # macOS / Linux echo $env:HONCHO_API_KEY # Windows PowerShell
If empty, set it (see Step 2 in Quick Start) and restart your terminal.
-
Check the plugin is installed:
/pluginYou should see
honcho@honchoin the list. -
Restart Claude Code after making changes.
-
Run
/honcho:statusto see connection state, workspace, and session info.
Make sure saveMessages is not set to false in your config (or HONCHO_SAVE_MESSAGES in env).
Via config file:
{ "endpoint": { "environment": "local" } }Or via env var:
export HONCHO_ENDPOINT="local" # Uses localhost:8000
# or
export HONCHO_ENDPOINT="http://your-server:8000/v3"export HONCHO_ENABLED="false"Or set "enabled": false in your config file. Restart Claude Code to take effect.
Skills for building AI applications with the Honcho SDK.
This plugin provides skills to help you integrate Honcho into your projects and migrate between SDK versions.
| Command | Description |
|---|---|
/honcho-dev:integrate |
Add Honcho memory to your project or bot framework |
/honcho-dev:migrate-py |
Migrate Python code to the latest Honcho SDK |
/honcho-dev:migrate-ts |
Migrate TypeScript code to the latest Honcho SDK |
/plugin install honcho-dev@honcho
/plugin uninstall honcho@honcho
/plugin uninstall honcho-dev@honcho
/plugin marketplace remove honcho
Then remove the environment variables from your shell config if desired.
MIT — see LICENSE
- Issues: GitHub Issues
- Discord: Join the Community
- X (Twitter): @honchodotdev
- Plastic Labs: plasticlabs.ai
- Honcho: honcho.dev — The memory API
- Documentation: docs.honcho.dev
- Blog: Read about Honcho, Agents, and Memory

{ // Required "apiKey": "hch-v2-...", // Identity "peerName": "alice", // Your name (default: $USER) // Host-specific settings — each tool gets its own workspace and AI peer "hosts": { "claude_code": { "workspace": "claude_code", // Workspace for Claude Code sessions "aiPeer": "claude", // AI identity in this workspace }, "cursor": { "workspace": "cursor", "aiPeer": "cursor" } }, // Session mapping "sessionStrategy": "per-directory", // "per-directory" | "git-branch" | "chat-instance" "sessionPeerPrefix": true, // Prefix session names with peerName (default: true) // Message handling "saveMessages": true, "messageUpload": { "maxUserTokens": null, // Truncate user messages (null = no limit) "maxAssistantTokens": null, // Truncate assistant messages (null = no limit) "summarizeAssistant": false // Summarize instead of sending full assistant text }, // Context retrieval "contextRefresh": { "messageThreshold": 30, // Refresh context every N messages "ttlSeconds": 300, // Cache TTL for context "skipDialectic": false // Skip dialectic chat() calls in user-prompt hook }, // Observation mode "observationMode": "unified", // "unified" (default) | "directional" // Endpoint "endpoint": { "environment": "production" // "production" | "local" // or: "baseUrl": "http://your-server:8000/v3" }, // Miscellaneous "localContext": { "maxEntries": 50 }, // Max entries in claude-context.md "enabled": true, "logging": true, // Advanced: force all hosts to use the same workspace "globalOverride": false }