Honcho is a Memory Provider PluginHoncho is integrated into the Memory Providers system. All features below are available through the unified memory provider interface.
What Honcho Adds
Dialectic reasoning: After each conversation turn (gated by
dialecticCadence), Honcho analyzes the exchange and derives insights about the user’s preferences, habits, and goals. These accumulate over time, giving the agent a deepening understanding that goes beyond what the user explicitly stated. The dialectic supports multi-pass depth (1–3 passes) with automatic cold/warm prompt selection — cold start queries focus on general user facts while warm queries prioritize session-scoped context.
Session-scoped context: Base context now includes the session summary alongside the user representation and peer card. This gives the agent awareness of what has already been discussed in the current session, reducing repetition and enabling continuity.
Multi-agent profiles: When multiple Mibyan instances talk to the same user (e.g., a coding assistant and a personal assistant), Honcho maintains separate “peer” profiles. Each peer sees only its own observations and conclusions, preventing cross-contamination of context.
Setup
Architecture
Two-Layer Context Injection
Every turn (inhybrid or context mode), Honcho assembles two layers of context injected into the system prompt:
- Base context — session summary, user representation, user peer card, AI self-representation, and AI identity card. Refreshed on
contextCadence. This is the “who is this user” layer. - Dialectic supplement — LLM-synthesized reasoning about the user’s current state and needs. Refreshed on
dialecticCadence. This is the “what matters right now” layer.
contextTokens budget (if set).
Cold/Warm Prompt Selection
The dialectic automatically selects between two prompt strategies:- Cold start (no base context yet): General query — “Who is this person? What are their preferences, goals, and working style?”
- Warm session (base context exists): Session-scoped query — “Given what’s been discussed in this session so far, what context about this user is most relevant?”
Three Orthogonal Config Knobs
Cost and depth are controlled by three independent knobs:
These are orthogonal — you can have frequent context refreshes with infrequent dialectic, or deep multi-pass dialectic at low frequency. Example:
contextCadence: 1, dialecticCadence: 5, dialecticDepth: 2 refreshes base context every turn, runs dialectic every 5 turns, and each dialectic run makes 2 passes.
Dialectic Depth (Multi-Pass)
WhendialecticDepth > 1, each dialectic invocation runs multiple .chat() passes:
- Pass 0: Cold or warm prompt (see above)
- Pass 1: Self-audit — identifies gaps in the initial assessment and synthesizes evidence from recent sessions
- Pass 2: Reconciliation — checks for contradictions between prior passes and produces a final synthesis
dialecticDepthLevels — e.g., ["minimal", "medium", "high"] for a depth-3 run.
Passes bail out early if the prior pass returned strong signal (long, structured output), so depth 3 doesn’t always mean 3 LLM calls.
Session-Start Prewarm
On session init, Honcho fires a dialectic call in the background at the full configureddialecticDepth and hands the result directly to turn 1’s context assembly. A single-pass prewarm on a cold peer often returns thin output — multi-pass depth runs the audit/reconcile cycle before the user ever speaks. If prewarm hasn’t landed by turn 1, turn 1 falls back to a synchronous call with a bounded timeout.
Query-Adaptive Reasoning Level
The auto-injected dialectic scalesdialecticReasoningLevel by query length: +1 level at ≥120 chars, +2 at ≥400, clamped at reasoningLevelCap (default "high"). Disable with reasoningHeuristic: false to pin every auto call to dialecticReasoningLevel. Available levels: minimal, low, medium, high, max.
Configuration Options
Honcho is configured in~/.honcho/config.json (global) or $mibyan_HOME/honcho.json (profile-local). The setup wizard handles this for you.
Self-Hosted Honcho with Authentication
When pointing Mibyan at a self-hosted Honcho server,mibyan honcho setup (and mibyan memory setup) ask for a local JWT / bearer token after the base URL. Paste a JWT signed with the server’s AUTH_JWT_SECRET (the Honcho compose env var) to enable authenticated access; leave it blank for servers running with AUTH_USE_AUTH=false. The local token is stored under the host block (hosts.<host>.apiKey in honcho.json), separate from any cloud apiKey, so you can flip the Cloud or local? prompt back to cloud later without losing either credential.
Full Config Reference
Session strategy controls how Honcho sessions map to your work:
per-session— eachmibyanrun gets a fresh session. Clean starts, memory via tools. Recommended for new users.per-directory— one Honcho session per working directory. Context accumulates across runs.per-repo— one session per git repository.global— single session across all directories.
sessions mappings use the logical session working directory, not the backend’s launch directory. Desktop/TUI project workspaces and ACP session directories are passed during agent construction, including deferred builds. When no directory is supplied, Honcho uses the runtime cwd resolver: session context, then the scoped terminal.cwd setting, then the process launch directory.
Messaging gateways keep their stable per-chat session key regardless of strategy or title. For other sessions, per-session identity takes priority, followed by a manual directory mapping, an explicit title, and the configured strategy.
Automatically generated Mibyan titles (derived or llm), including lineage titles for Desktop branches, are display metadata and do not override sessionStrategy. An explicit user title remains an intentional session-name override for non-gateway, non-per-session sessions without a manual mapping.
Sessions created before title provenance was recorded retain legacy behavior: because an old automatic title cannot be distinguished from an old user title, a title with no source is treated as an explicit override.
Recall mode controls how memory flows into conversations:
hybrid— context auto-injected into system prompt AND tools available (model decides when to query).context— auto-injection only, tools hidden.tools— tools only, no auto-injection. Agent must explicitly callhoncho_reasoning,honcho_search, etc.
In
tools mode, the model is fully in control — it calls honcho_reasoning when it wants, at whatever reasoning_level it picks. Cadence and budget settings only apply to modes with auto-injection (hybrid and context).
Startup behaviour and initOnSessionStart. In hybrid and context mode the session is created in a background thread and startup fails open if Honcho is slow or down. tools mode is different by design: with initOnSessionStart: false (the default) nothing touches Honcho until the first honcho_* tool call, and with initOnSessionStart: true the session is created synchronously during agent construction so a tool call on turn 1 never races a half-initialized session. That guarantee means startup waits for Honcho: if the server is unreachable, every SDK call in that eager path runs to its connection/timeout limit before the agent is ready, which on Desktop shows up as request timed out: session.resume / prompt.submit (the renderer gives up after 30 s). Keep initOnSessionStart at false on Desktop and whenever your Honcho is a local service that may not be running, and set timeout (seconds) in honcho.json to bound each call if you do enable it.
Gateway Identity Mapping
These settings only matter when you run the Mibyan gateway — the one entrypoint where users arrive with platform-native runtime IDs (Telegram UID, Discord snowflake, Slack user). CLI, TUI, and desktop sessions have no runtime ID and always resolve topeerName, so off-gateway these keys do nothing.
The setup wizard detects whether a gateway platform is connected and skips this step entirely if not. When it runs, it asks one question — who talks to this gateway? — and derives the keys:
Pick
[e] at the prompt to set the three keys directly instead.
The resolver tries the keys top-down, first match wins: pinUserPeer → userPeerAliases[id] → runtimePeerPrefix + id → raw runtime ID → peerName → session-key fallback.
Each turn is written under the peer of whoever wrote it, so in a shared chat the first person to message no longer collects everyone else’s facts. A turn from another bot (a Bot Mode DM tagged bot:<profile>, or a platform account the adapter flags as a bot) always gets its own peer: pinUserPeer unifies one person’s accounts, never a bot. Its turn lands in a per-sender a2a session (see a2aSessions), and honcho_conclude / honcho_profile refuse writes while such a turn runs, since conclusions and cards describe the human.
Deprecated key
pinPeerName is a legacy alias for pinUserPeer — still read for back-compat (pinUserPeer wins where both are set), never written. Re-running setup migrates it onto the canonical key.Observation (Directional vs. Unified)
Honcho models a conversation as peers exchanging messages. Each peer has two observation toggles that map 1:1 to Honcho’sSessionPeerConfig:
Two peers × two toggles = four flags.
observationMode is a shorthand preset:
Override the preset with an explicit
observation block for per-peer control:
Server-side toggles set via the Honcho dashboard win over local defaults — Mibyan syncs them back at session init.
Tools
When Honcho is active as the memory provider, five tools become available:CLI Commands
Themibyan honcho subcommand is only registered when Honcho is the active memory provider (memory.provider: honcho in config.yaml). On a fresh install, configure Honcho directly with mibyan memory setup honcho (or run mibyan memory setup and pick it from the list); the mibyan honcho subcommand then appears on the next invocation.
Migrating from mibyan honcho
If you previously used the standalone mibyan honcho setup:
- Your existing configuration (
honcho.jsonor~/.honcho/config.json) is preserved - Your server-side data (memories, conclusions, user profiles) is intact
- Set
memory.provider: honchoin config.yaml to reactivate
mibyan memory setup and select “honcho” — the wizard detects your existing config.

