MCPcopy Index your code
hub / github.com/plastic-labs/honcho

github.com/plastic-labs/honcho @v3.0.11 sqlite

repository ↗ · DeepWiki ↗ · release v3.0.11 ↗
4,807 symbols 21,007 edges 444 files 3,136 documented · 65%
README

Honcho


Static Badge PyPI version NPM version Discord

Honcho is memory infrastructure for building stateful agents that understand changing people, agents, groups, projects, and ideas over time.

Store messages and events, let Honcho reason in the background, then query peer representations, session context, search results, or natural-language insights from any model or framework. Use it managed at api.honcho.dev or self-host the FastAPI server yourself.

Using Honcho as your memory system will earn your agents higher retention, more trust, and help you build data moats to out-compete incumbents.

Honcho has defined the Pareto Frontier of Agent Memory. Watch the video, check out our evals page, and read the blog post for more detail.

Contents

The Honcho project is split between several repositories, with this one hosting the core service logic — implemented as a FastAPI server. Client SDKs for Python and TypeScript live in the sdks/ directory.

Start Here

I want to... Path Get started
Give my coding agent persistent memory Claude Code, OpenCode, OpenClaw, Hermes, or any MCP client Integrations
Add memory to my product Python or TypeScript SDK Quickstart
Self-host Honcho Docker / local development Self-hosting

Why Honcho

Capability What it means
Reasoning-first memory Extracts conclusions from conversations and events, not just matching chunks.
Peer-centric model Tracks users, agents, groups, projects, and ideas as entities that change over time.
Multi-peer perspective Models what one peer knows about another when configured.
Managed or self-hosted Use api.honcho.dev or run the FastAPI server yourself.
Agent-tool integrations MCP, Claude Code, OpenCode, OpenClaw, Hermes, Cursor-compatible clients.

The Honcho Loop

  1. Store conversations, events, documents, or tool traces as messages on a session.
  2. Reason — Honcho processes the queue in the background and updates peer representations.
  3. Query — ask Honcho for context, search results, peer representations, or a natural-language answer.
  4. Inject — drop the result into any LLM call or agent framework.

Concretely: workspaces hold peers, peers participate in sessions, messages live on sessions, and Honcho builds a per-peer representation that you query through the Chat Endpoint or directly.

Quickstart

Get an API key at app.honcho.dev — when you sign up you'll be prompted to join an organization, which gets its own dedicated Honcho instance and $100 free credits. Or self-host and run against http://localhost:8000.

Python

pip install honcho-ai
# or: uv add honcho-ai
# or: poetry add honcho-ai
import os
from honcho import Honcho

# Managed service uses api.honcho.dev by default. For self-hosted, pass
# base_url="http://localhost:8000" or set HONCHO_URL.
honcho = Honcho(
    workspace_id="my-app-testing",
    api_key=os.environ["HONCHO_API_KEY"],
)

# 1. Store: peers and messages on a session
alice = honcho.peer("alice")
tutor = honcho.peer("tutor")
session = honcho.session("session-1")
session.add_messages([
    alice.message("Hey there — can you help me with my math homework?"),
    tutor.message("Absolutely. Send me your first problem!"),
])

# 2. Reason: happens asynchronously in the background.

# 3. Query: ask Honcho what it knows, or pull prompt-ready context.
answer = alice.chat("What learning styles does the user respond to best?")
context = session.context(summary=True, tokens=10_000)

# 4. Inject: hand the context to your model of choice.
from openai import OpenAI
client = OpenAI()
completion = client.chat.completions.create(
    model=os.environ.get("OPENAI_MODEL", "gpt-4o-mini"),
    messages=context.to_openai(assistant=tutor),
)

TypeScript

npm install @honcho-ai/sdk
# or: bun add @honcho-ai/sdk
import { Honcho } from "@honcho-ai/sdk";
import OpenAI from "openai";

const honcho = new Honcho({
  workspaceId: "my-app-testing",
  apiKey: process.env.HONCHO_API_KEY,
});

const alice = await honcho.peer("alice");
const tutor = await honcho.peer("tutor");
const session = await honcho.session("session-1");
await session.addMessages([
  alice.message("Hey there — can you help me with my math homework?"),
  tutor.message("Absolutely. Send me your first problem!"),
]);

const answer = await alice.chat(
  "What learning styles does the user respond to best?",
);
const context = await session.context({ summary: true, tokens: 10_000 });

const openai = new OpenAI();
const completion = await openai.chat.completions.create({
  model: process.env.OPENAI_MODEL ?? "gpt-4o-mini",
  messages: context.toOpenAI({ assistant: tutor }),
});

Note: background reasoning is asynchronous. Newly-added messages may take a moment to be reflected in chat/representation responses; for low-latency reads, use the representation endpoint.

What Honcho Gives You

Need API
Save interaction history session.add_messages(...)
Ask what Honcho knows about a peer peer.chat(...)
Get prompt-ready context session.context(...).to_openai(...) / .to_anthropic(...)
Hybrid search (BM25 + vector) peer.search(...), session.search(...), honcho.search(...)
Low-latency static representations peer.representation(...), session.representation(...)
Import documents session.upload_file(...)
Inspect background processing honcho.queue_status(...)

See the full SDK Reference and API Reference.

Integrations

Claude Code

Two ways, depending on how deep you want to go:

Plugin (richer integration — recommended for Claude Code users):

/plugin marketplace add plastic-labs/claude-honcho
/plugin install honcho@honcho

Raw MCP (works in any MCP client — Cursor, Cline, Windsurf, etc.):

claude mcp add honcho \
  --transport http \
  --url "https://mcp.honcho.dev" \
  --header "Authorization: Bearer hch-your-key-here" \
  --header "X-Honcho-User-Name: YourName"

Details: Claude Code guide · MCP guide.

OpenCode

opencode plugin "@honcho-ai/opencode-honcho" --global

Details: OpenCode guide.

OpenClaw

openclaw plugins install @honcho-ai/openclaw-honcho
openclaw honcho setup
openclaw gateway --force

openclaw honcho setup prompts for your API key, writes the config, and optionally migrates legacy MEMORY.md / USER.md / IDENTITY.md files into Honcho (non-destructive — originals are never deleted). Details: OpenClaw guide.

Hermes

hermes memory setup   # select "honcho", point at api.honcho.dev or your local server

Details: Hermes guide.

Add Honcho to your own codebase (agent skill)

For wiring the Honcho SDK into an existing application, install the integration skill — it explores your codebase, asks about integration preferences, generates the SDK setup, and verifies it works:

npx skills add plastic-labs/honcho

Then invoke /honcho-integration in Claude Code (or /honcho-dev:integrate via the plugin marketplace). Details: agentic development guide.

Other MCP clients

The same claude mcp add form (or its client-specific equivalent) works in any MCP-compatible client. See MCP guide.

Core Concepts

Honcho organises everything around peers — humans and AI agents alike are first-class entities. The peer model enables:

  • Multi-participant sessions with mixed human and AI agents
  • Configurable observation settings (which peers observe which others)
  • Flexible identity management for all participants
  • Support for complex multi-agent interactions

Peers exchange messages within sessions; Honcho reasons over those messages to build a representation of each peer that you can query.

  • Workspace (formerly App): top-level container; isolates data between use cases.
  • Peer (formerly User): any participant — human user or AI agent.
  • Session: a conversation context; many-to-many with peers.
  • Message: an atomic data unit (peer-to-peer communication or ingested document chunk).

What you query out of Honcho:

  • Conclusions — what Honcho has extracted about a peer (deductive and inductive). Exposed via the conclusions API.
  • Representations — static, low-latency snapshots of what Honcho knows about a peer (optionally session-scoped).
  • Peer Cards — compact identity summaries.
  • Session context / summaries — prompt-ready bundles for long-running conversations.

Internal storage (Collections & Documents)

Internally, Honcho stores peer-related observations in collections of vector-embedded documents. Collections are keyed by (observer, observed) peer pairs — the same mechanism powers self-representation (observer == observed) and cross-peer modelling (peer X's understanding of peer Y). These primitives are not exposed directly; the Conclusions API is the public surface.

Benchmarks & Evals

Honcho's evals span LongMemEval, LoCoMo, and other long-conversation benchmarks. See the evals page, the research blog post, and the Pareto-frontier announcement video for methodology and reproducible results.

Self-hosting

Honcho is open source under AGPL-3.0. You can run the full server locally with Docker, then point the SDKs at http://localhost:8000.

Quick start (Docker)

git clone https://github.com/plastic-labs/honcho.git
cd honcho
cp docker-compose.yml.example docker-compose.yml
cp .env.template .env       # fill in LLM_GEMINI_API_KEY / LLM_ANTHROPIC_API_KEY / LLM_OPENAI_API_KEY
docker compose up

Then point the SDKs at it:

honcho = Honcho(workspace_id="my-app-testing", base_url="http://localhost:8000")
# or: export HONCHO_URL=http://localhost:8000

Local development without Docker

Below is a guide on setting up a local environment for running the Honcho Server without Docker.

Prerequisites and Dependencies

Honcho is developed using python and uv.

The minimum python version is 3.10 The minimum uv version is 0.5.0

Setup

Once the dependencies are installed on the system run the following steps to get the local project setup.

  1. Clone the repository

```bash git clone https://github.com/plastic-

Extension points exported contracts — how you extend this code

PollableQueueStatus (Interface)
(no doc)
sdks/typescript/src/utils.ts
HonchoConfig (Interface)
(no doc)
mcp/src/config.ts
ConclusionCreateParams (Interface)
(no doc)
sdks/typescript/src/conclusions.ts
Env (Interface)
(no doc)
mcp/src/config.ts
MessageInput (Interface)
(no doc)
sdks/typescript/src/message.ts
ToolContext (Interface)
(no doc)
mcp/src/types.ts
SummaryData (Interface)
(no doc)
sdks/typescript/src/session_context.ts
WorkspaceResponse (Interface)
(no doc)
sdks/typescript/src/types/api.ts

Core symbols most depended-on inside this repo

get
called by 560
sdks/typescript/src/pagination.ts
peer
called by 389
sdks/typescript/src/client.ts
session
called by 305
sdks/typescript/src/client.ts
message
called by 241
sdks/typescript/src/peer.ts
get
called by 237
src/llm/caching.py
execute
called by 232
tests/unified/runner.py
flush
called by 171
src/telemetry/emitter.py
column_exists
called by 112
migrations/utils.py

Shape

Method 2,068
Function 1,906
Class 720
Route 59
Interface 54

Languages

Python92%
TypeScript8%

Modules by API surface

tests/telemetry/test_events.py114 symbols
sdks/python/src/honcho/aio.py98 symbols
tests/utils/test_agent_tools.py96 symbols
src/config.py81 symbols
tests/utils/test_clients.py58 symbols
src/schemas/api.py58 symbols
tests/telemetry/test_emitter.py56 symbols
sdks/typescript/src/session.ts53 symbols
tests/conftest.py52 symbols
tests/integration/test_telemetry.py51 symbols
src/utils/agent_tools.py51 symbols
sdks/python/src/honcho/api_types.py49 symbols

Dependencies from manifests, versioned

@biomejs/biome2.1.2 · 1×
@cloudflare/workers-types4.20241002.0 · 1×
@honcho-ai/sdk2.1.0 · 1×
@mintlify/scraping4.0.467 · 1×
@modelcontextprotocol/sdk1.26.0 · 1×
@types/bunlatest · 1×
@types/node24.0.1 · 1×
agents0.4.0 · 1×
dotenv17.2.3 · 1×
mint4.2.204 · 1×
nanoid5.1.7 · 1×

Datastores touched

dbDatabase · 1 repos

For agents

$ claude mcp add honcho \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact