plastic-labs/honcho

★ 7,266⑂ 0

Memory library for building stateful agents

About plastic-labs/honcho

plastic-labs/honcho is an open-source project on GitHub, mainly written in Python. Memory library for building stateful agents It currently holds 7,266 stars and 0 forks with 0 open issues, and was last pushed on an unknown date (repository created unknown).

Project Overview

AI Homed tracks it on the AI Agent Memory board.

GitHub Repository Details

Repository plastic-labs/honcho · default branch - · size 0 KB · watchers 0 · source: GitHub REST API and repository README

README

https://github.com/plastic-labs/honcho/blob/HEAD/Honcho

---

Static Badge PyPI version NPM version CLI 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, run a local stack with honcho start, 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. The honcho-cli package lives here too.

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 | | Run Honcho locally | Install CLI, then honcho start --setup | CLI | | Inspect a deployment | honcho workspace inspect, honcho doctor | CLI | | Self-host from source | Docker Compose or 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, honcho start locally, 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 install the CLI and run honcho start --setup, then point the SDK at 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(...) | | Ask across the whole workspace | honcho.chat(...) / honcho.chat_stream(...) | | 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

Honcho ships a first-party memory plugin for every major coding agent. They all read the same ~/.honcho/config.json, so one key configures all of them — and pointing two at the same workspace gives them one shared memory.

| Agent | Install | Source | | ---------------- | ------------------------------------------------------- | ------------------------------------------------------------------ | | Claude Code | /plugin marketplace add plastic-labs/claude-honcho | claude-honcho | | Codex | npm install -g @honcho-ai/codex-honcho | codex-honcho | | Cursor | curl -fsSL .../cursor-honcho/main/install.sh \| bash | cursor-honcho | | DeepSeek Harness | dsh plugin --profile add @honcho-ai/dsh-honcho | dsh-honcho | | OpenCode | opencode plugin "@honcho-ai/opencode-honcho" --global | opencode-honcho | | OpenClaw | openclaw plugins install @honcho-ai/openclaw-honcho | openclaw-honcho | | Hermes | hermes memory setup | built in upstream | | Any MCP client | claude mcp add honcho --transport http ... | MCP guide |

Get a key at app.honcho.dev, then honcho init (or uv tool install honcho-cli && honcho init) writes it to ~/.honcho/config.json once for every integration.

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 · repo.

Codex

npm install -g @honcho-ai/codex-honcho
codex-honcho install      # registers hooks + MCP + skill in ~/.codex

Restart Codex to load the hooks. Details: Codex guide · repo.

Cursor

curl -fsSL https://raw.githubusercontent.com/plastic-labs/cursor-honcho/main/install.sh | bash

Windows (PowerShell): irm https://raw.githubusercontent.com/plastic-labs/cursor-honcho/main/install.ps1 | iex. The installer wires global hooks and MCP config. Details: cursor-honcho.

DeepSeek Harness

dsh plugin --profile  add @honcho-ai/dsh-honcho

A native Cordis plugin. It injects memory into the system prompt and captures new information from the session event feed. The model gets three tools — honcho_search, honcho_chat, and honcho_remember — and you can run /honcho to check status. Details: DeepSeek Harness guide · repo.

OpenCode

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

Details: OpenCode guide · repo.

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 · repo.

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). The same command also installs the memory skills — honcho-memory (concepts: the recall/record loop, session and peer strategy, plus how to connect and drive an MCP-connected Honcho) and honcho-cli (inspecting a deployment, or running a local stack with honcho start). 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.

CLI

honcho-cli inspects a Honcho deployment from the terminal, or runs a personal local stack with Docker.

uv tool install honcho-cli
honcho init                 # Honcho API key or browser login + server URL
honcho start --setup basic  # local stack: LLM provider key + Docker
honcho doctor

honcho init authenticates the CLI against a Honcho server. honcho start --setup is a separate step: it writes the LLM provider key the local deriver needs and starts API + deriver + Postgres + Redis.

Full commands and local-stack details: CLI reference · honcho-cli/README.md. To develop the server from source, see Self-hosting.

Core Concepts

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

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

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. To run a personal instance, install the CLI (uv tool install honcho-cli) and then honcho start --setup. The paths below are for building from source, contributing, or deploying without the CLI.

Quick start (from source, 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

git clone https://github.com/plastic-labs/honcho.git

2. Enter the repository and install the python dependencies

We recommend using a virtual environment to isolate the dependencies for Honcho from other projects on the same system. uv will create a virtual environment when you sync your dependencies in the project.

cd honcho
uv sync

This will create a virtual environment and install the dependencies for Honcho. The default virtual environment will be located at honcho/.venv. Activate the virtual environment via:

source honcho/.venv/bin/activate

3. Set up a database

Honcho utilizes Postgres for its database with pgvector. An easy way to get started with a postgres database is to create a project with Supabase

Alternatively, a docker-compose template is available with a sample database configuration. To use Docker:

cp docker-compose.yml.example docker-compose.yml
docker compose up -d database

4. Edit the environment variables

Honcho uses a .env file for managing runtime environment variables. A .env.template file is included for convenience. Several of the configurations are not required and are only necessary for additional logging, monitoring, and security.

Below are the required configurations:

DB_CONNECTION_URI= # Connection uri for a postgres database (with postgresql+psycopg prefix)

LLM Provider API Keys

LLM_GEMINI_API_KEY= # API Key for Google Gemini (used for deriver, summary, and dialectic minimal/low by default) LLM_ANTHROPIC_API_KEY= # API Key for Anthropic (used for dialectic medium/high/max and dream by default) LLM_OPENAI_API_KEY= # API Key for OpenAI (used for embeddings when EMBED_MESSAGES=true)
Note that the DB_CONNECTION_URI must have the prefix postgresql+psycopg to
function properly. This is a requirement brought by sqlalchemy

The template has the additional functionality disabled by default. To ensure that they are disabled you can verify the following environment variables are set to false:

AUTH_USE_AUTH=false
SENTRY_ENABLED=false

If you set AUTH_USE_AUTH to true you will need to generate a JWT secret. You can do this with the following command:

python scripts/generate_jwt_secret.py

This will generate a JWT secret and print it to the console. You can then set the AUTH_JWT_SECRET environment variable. This is required for AUTH_USE_AUTH:

AUTH_JWT_SECRET=<generated_secret>

Once auth is enabled, use scripts/generate_jwt.py to mint tokens for local development and scripting:

# Admin token (full access, no expiry)
uv run python scripts/generate_jwt.py --admin

Admin token expiring in 24 hours

uv run python scripts/generate_jwt.py --admin --expires 24h

Workspace-scoped token

uv run python scripts/generate_jwt.py --workspace my-workspace --expires 30d

Capture a token for use in curl/scripts

TOKEN=$(uv run python scripts/generate_jwt.py --admin --print-only) curl -H "Authorization: Bearer $TOKEN" http://localhost:8000/v3/workspaces

Duration units: s (seconds), m (minutes), h (hours), d (days), w (weeks), y (years).

5. Run database migrations

With the database set up and environment variables configured, run the migrations to create the necessary tables:

uv run alembic upgrade head

This will create all tables for Honcho including workspaces, peers, sessions, messages, and the queue system.

6. Launch Honcho

With everything set up, you can now launch a local instance of Honcho. In addition to the database, two components need to be running:

Start the API server:

uv run fastapi dev src/main.py

This is a development server that will reload whenever code is changed.

Start a background worker (deriver):

In a separate terminal, run:

uv run python -m src.deriver

The deriver generates representations, summaries, peer cards, and manages dreaming tasks. You can increase the number of derivers to improve runtime efficiency.

Contributors: see CONTRIBUTING.md for pre-commit setup. Deploying to Fly.io: see Self-hosting docs → Deploying on Fly.io.

Configuration

Honcho uses a flexible configuration system that supports both TOML files and environment variables. Configuration values are loaded in priority order: environment variables > .env file > config.toml > defaults.

Copy the example file to get started:

cp config.toml.example config.toml

The file is organized by subsystem — [app], [db], [auth], [cache], [llm], [deriver], [dialectic], [summary], [dream], [peer_card], [webhook], [metrics], [telemetry],

GitHub Stars & Activity

7,266Stars
0Forks
0Open issues
PythonLanguage

GitHub Popularity

GitHub stars7,266
Forks0
Open issues0
Primary languagePython
License-
Stars gained today0
Created-
Last pushed-

Trending History

Trending statusnot on today's boards

Related AI Projects

1

666ghj / MiroFish

Python★ 74,064⑂ 0
2

mem0ai / mem0

Python★ 65,695⑂ 0
3

bojieli / ai-agent-book

Python★ 48,844⑂ 0
4

volcengine / OpenViking

Python★ 38,148⑂ 0
5

topoteretes / cognee

Python★ 30,855⑂ 0
6

MemoriLabs / Memori

Python★ 16,849⑂ 0
7

NevaMind-AI / memU

Python★ 14,418⑂ 0
8

semantica-agi / semantica

Python★ 13,301⑂ 0

More AI Rankings