Skip to content

Partners

Partners are persistent companions with their own identity, soul, model policy, library, memory, and channel configuration. They are not a separate bot engine: every inbound message — from the web or from an IM app — is routed through the same ChatOrchestrator → AgenticChatPipeline loop that powers the main Chat Workspace. A Partner is “a chat that has a personality and a phone number.”

Open Partners in the left sidebar. The page lists every companion with its avatar, status, description, and connected channels, and a New partner button to create more.

The Partners page: companion cards with channel badges, and a New partner button

A Partner is a synthetic user workspace under data/partners/<id>/workspace/. That workspace holds the partner’s soul, its copied knowledge bases, copied skills, notebooks, memory, and channel runtime state. Because the layout mirrors a normal chat workspace, every tool — RAG, read_skill, notebooks, memory, MCP-deferred tools — works for a Partner with no separate implementation.

The practical consequences:

  • One brain, many doors. The partner’s reasoning is identical whether you talk to it in the web UI or through WeChat, Telegram, or Slack — channels are just delivery adapters.
  • A copied library, not a live link. Knowledge bases, skills, and notebooks are copied into the partner workspace at assignment time, so the partner keeps working even as you change context elsewhere.
  • Its own memory. A partner reads and writes its own memory and can read its owner’s main memory — but it can only write to its own.

Press New partner and complete the wizard:

  1. Identity — name, avatar, description, and default reply language.
  2. Soul — the partner’s role and communication style. This becomes its SOUL.md.
  3. Mind — model selection, enabled system tools, MCP tools, and delivery preferences.
  4. Library — assign knowledge bases, skills, and notebooks (copied into the partner workspace).
  5. Review — confirm the workspace and channel setup before starting.

Everything chosen here stays editable afterwards from the partner detail page.

Open a partner to land on its Chat tab — a full conversation view that behaves like the main workspace, but as that companion. The tabs across the top are Chat, Configure, Channels, and Archive.

A partner's Chat tab: it greets in its own voice and recalls memory about you

Because a partner has memory, it builds up a picture of you over time. Ask it “what do you know about me?” and you’ll see a Recalling memory step — the partner reads its own memory layers before answering in its soul. The Configure tab covers identity, soul, mind, and library; Archive preserves old conversations.

Channels are delivery adapters around the same partner brain. The Channels tab lists every supported app down the left; pick one to configure its credentials and behavior on the right, then Save and enable it.

The Channels tab: pick an IM app on the left and configure it on the right

Most channel cards share a few switches:

FieldMeaning
EnabledStart this channel for the partner. Leave off while you collect credentials.
Send ProgressDeliver narration/progress for long-running turns. Useful where a silent 60-second wait feels broken.
Send Tool HintsDeliver one-line tool-call hints such as rag(query=…). Turn off for quieter production channels.
Allow FromAllowlist of user ids, group ids, emails, or * (one per line). Empty usually denies all; * opens the channel.

The rest of each card is channel-specific (base URLs, tokens, polling). For the full list of apps and per-channel setup steps, see the Channel Matrix — start with WeChat, WeCom, or QQ / NapCat.

A partner can also be connected as a subagent and consulted from a normal chat turn — DeepTutor sends your question into the partner’s own session and folds its answer back. See Subagents.

Terminal window
deeptutor partner list
deeptutor partner create math-tutor --soul "Socratic math tutor"
deeptutor partner start math-tutor
deeptutor partner stop math-tutor

The CLI is handy for smoke tests, but the web UI is the recommended place to configure channels — it masks secrets and shows each channel’s schema inline.