Profile
Back to NewsBack
GitHub Trending 19 min
Reader Mode
zuiho-kai/bothouse: 把电脑上的 Claude Code、Codex、Gemini、DeepSeek 拉进一个群,组成共享记忆、自己分活的 AI 小团队;一个人调好的 AI,全队都能用。| Bring your local AI CLIs into one group chat as a team with shared memory — and share one tuned setup a

zuiho-kai/bothouse: 把电脑上的 Claude Code、Codex、Gemini、DeepSeek 拉进一个群,组成共享记忆、自己分活的 AI 小团队;一个人调好的 AI,全队都能用。| Bring your local AI CLIs into one group chat as a team with shared memory — and share one tuned setup a

13 hours ago

Promo video

Watch bothouse in 3 minutes: one message goes in; the crew splits the work, takes it on and hands it back. Click the cover to play.

bothouse promo video: an AI team at work — click to play

New installs default to Only when addressed: the role you @ answers, nothing extra to install. Smart routing can be turned on in the wizard or later on the panel's Gate page; it needs a judge model that returns logprobs, and the wizard offers a one-click preset for the Qwen3.5-4B we run ourselves (local, mlx-lm on Apple silicon; not downloaded automatically). See routing choices.

What it looks like

Using Claude Code, Codex and DeepSeek together used to mean switching between terminals and copying messages across. Close a window and the context is gone; step away and the work stops.

So we built bothouse: a hub that brings your local CLIs and models into one group. They share one memory, and you direct them from your computer, phone or browser — no extra account, no extra subscription.

What's next: team mode and hardware

Once it works for one person, we grow it in two directions.

Team mode: one person tunes the AI, the whole team uses it

Bring every teammate's Claude Code, Codex, Gemini and DeepSeek into one team group, and the team shares one set of AI know-how.

  • Shared experience: the team shares one memory. A nightly review checks against the original messages and records progress, corrections and lessons, so the next day every teammate's AI follows them. People new to AI get the setup the experts tuned.
  • Knows each person: it remembers each person's standards and habits separately, and answers each sender their own way.
  • Splits the work itself: say it once and the AIs divide the work; every handoff carries your original words, and a fresh AI checks the result.

Hardware: give a role a body

bothouse-iot connects small ESP32 round-screen boards. Each board is a role: talk to it, the role answers, and the dial face changes with it. See Hardware below.

Install

Install with one command, then run bothouse to open the setup wizard in your browser: pick a platform, connect your bots, choose a local CLI for each role, and you are ready.

curl -fsSL https://raw.githubusercontent.com/zuiho-kai/bothouse/main/install.sh | sh

The Windows command, package downloads, the background service and the DSH channel are in Getting started.

Let an AI agent set it up. Give Claude Code, Codex, DSH or any agent CLI this repo link and say "install bothouse and connect it to Discord"; it needs a bot token, the server ID and (optional) a channel ID from you. Agents: no browser needed, these three steps are the whole job (details and every error code in AGENTS.md):

curl -fsSL https://raw.githubusercontent.com/zuiho-kai/bothouse/main/install.sh | sh
~/.local/bin/bothouse module add discord --token "$(cat <token file>)" --guild <server ID> --channel <channel ID>
~/.local/bin/bothouse daemon install   # if it fails inside an agent sandbox: nohup ~/.local/bin/bothouse > ~/.bothouse/run.log 2>&1 &

module add prints JSON: ok: true means saved; with needs_user_action: true, pass every blocking warning's message and fix to the user. Done when the log shows discord: connected; then ask the user to @ the bot in the channel. A bot ignores its own messages, so do not try to test it with its own token.

Put it into DSH (desktop app or web) and @ members in a DSH channel. Say "install bothouse into DSH": no token, no browser, no bothouse service. Agents: these two commands are the whole job (see AGENTS.md):

curl -fsSL https://raw.githubusercontent.com/zuiho-kai/bothouse/main/install.sh | sh
~/.local/bin/bothouse module add dsh --lang en

ok: true means done; pass next_steps to the user as is. No Node needed: the desktop app's bundled one is used, the open app loads the plugin by itself, and the channel starts with one member, 鲸鱼娘. Do not restart the desktop app (you may be running inside it) and do not test the channel yourself.

What you can do with it

| You want | How bothouse helps | | --- | --- | | An AI team of your own | Bring the Claude Code, Codex, Gemini CLI or OpenCode you already signed in to; every role gets its own name, persona and session. | | A team from one account | Only one Codex or DeepSeek account? Create several members anyway, each with its own name, persona, job and session; they assign and hand back work by mentioning each other. | | Find it in the chat apps you use | @ it in Discord, Feishu, QQ, the self-hosted web chat or DSH web; Discord and Feishu already have phone apps, so you can hand out work from bed. | | Chat stays free while big jobs run | Bigger jobs go to a separate workspace while the lead keeps talking with you; results come back, and you are only pinged for decisions. | | Everyone remembers the same thing | All roles read and write one shared memory, so whoever picks up the job already knows the background. | | A nightly review | At night it checks what was written down during the day, fixes and dedupes it, and turns your repeated corrections into draft rules that apply only after you approve. | | Long jobs stay on track | Every handoff carries your original words; a second AI with a clean context checks the result; “fixed” needs evidence. | | Manage it from your phone | A built-in web dashboard shows who is busy and how much quota is used, lets you edit personas, open a project and add a note to work that is already running. | | Draw a picture when you ask for one | Optional and off by default: point [image_gen] at an OpenAI-compatible image service and the dashboard's 生图 page draws one picture into a local file. It never posts it for you — bothouse send --image is a separate, deliberate step. |

Model and reasoning selections are scoped to the current channel/session key. Use /model and /reasoning in that channel, or let the agent use cc-connect model list --json followed by model set --effort . CLI changes are queued until the next turn; the conversation is preserved. Selections survive restarts and /new, while other channels retain their own selections or project/directory defaults. CLI support and pinned model arguments still determine which settings a backend can apply.

Roles and avatars

Four AI roles sitting at one table, each working on a laptop

Every role has its own avatar and persona. They come in packs — pick one and it is ready to work; to make your own, see role packs (Chinese).

Screenshots

In the chat channel the lead hands two tasks to Workspace 1 and Workspace 2
One message, handed to a workspace: the lead sends big work out and chat carries on.
Workspace 1 task board listing running and finished tasks by role
Task board: what each workspace is doing and what landed today, at a glance.
Dashboard Roles page: five roles on different CLIs with status, current work and model
Roles: which CLI each role runs, what it is busy with, which model — pause or restart in one click.
Library page: persona cards from the default pack with avatars and one-line descriptions
Library: personas and avatars come in packs; pick one and it is ready to work.

_Top row: real channel footage. Bottom row: the author's own dashboard._

Memory you can see

The team's memory is a plain folder of Markdown files. Each incoming message first looks up the relevant pages; a nightly review fixes what was written down wrong. You can read and edit it directly; Git records every change and pushes it to your own private GitHub repo, so the memory follows you to another computer. See dispatcher and team memory (Chinese).

To browse that memory as a star map, open bothouse panel → Overview → Wiki galaxy. The galaxy is a subpage with a link back to Overview, rather than a separate navigation item. Existing /wiki-galaxy and DSH #wiki-galaxy bookmarks still work.

bothouse architecture: where you chat on the left (Discord, Feishu, QQ, the self-hosted web chat, DSH web); bothouse in the middle, running on your own computer and handling assignment, routing and the task board; the CLIs you already have below (Claude Code, Codex, Gemini CLI, DSH, OpenCode and more); shared memory (Markdown wiki, reviewed nightly) and the in-development memory forum on the right; a private GitHub repo that syncs the memory on the far right

How the team works

Proactive follow-up has explicit off, observe, and auto policies. Observation records local decisions without starting a proactive worker or sending a proactive confirmation; ordinary chat and explicit requests retain their existing routing and permission checks. Automatic admission requires administrator-bound platform identities and matching rules. Routing and wiki context do not grant execution authority. See proactive authorization for configuration, audit records, and revocation boundaries.

Task-bound result text can use the send command with task, revision and delivery ID to persist before sending. Each fragment has its own receipt; ambiguous sends remain visible as unknown instead of being blindly retried. See task text delivery for usage and platform boundaries.

You say one thing from your phone, computer or browser → the lead in the chat channel (the AI you talk to by default) takes it → big work goes to a workspace: @coder and @writer in Workspace 1, @researcher in Workspace 2 → they hand it back.

Chat keeps going the whole time; members take the work on and hand it back, and only decisions that need you come back to chat.

  • Speak when called: the lead answers by default; other roles follow along and reply when mentioned or named. Unaddressed messages go to jev, a lightweight dispatcher (a small model that only answers multiple-choice questions), which decides who picks them up. It can run on a free small model from SiliconFlow or the local Qwen3.5-4B we run ourselves (one-click preset in the wizard).
  • Shared memory: we extended our open-source llm-wiki into a memory shared by every role. It lives in local Markdown you can read and edit, and Git history records what the team learned.
  • Nightly review: when a session ends, idles for 30 minutes or errors, a fast model records progress in the Wiki. At night a slower, more thorough free model checks it against the original conversations to fix errors and fill gaps; on Sundays it reviews everything. Code checks every quoted instruction against your actual words and rejects invented quotes.
  • Guardrails and tools: dangerous commands are blocked; “fixed” needs verification evidence and “I'll check later” needs a timer; turn any check off with one message in chat. Built-in tools: check teammate progress, extract video frames and transcripts, search the web, and see how long each child agent has run and what state it is in.
  • Manual lead handoff: if the lead can no longer reply, bothouse handoff switch --to moves the role; task cards, workspaces and pending questions keep their IDs. See manual lead handoff.

Platforms

Discord and Feishu already have phone and desktop apps, so there is no extra wrapper to install.

| Platform | Status | Capabilities | | --- | --- | --- | | Discord | Full support | Multiple roles, mentions, task handoffs, teammate status and log channels; slash commands in servers and DMs | | Feishu (Lark) | Single role | Conversation with one connected role | | QQ official bot | Manual setup | Group/private chat, group @user and @everyone; see QQ Bot setup | | DSH desktop app / web | Experimental | A Channels page inside the DeepSeek Harness desktop app (default) or DSH web; see DSH |

QQ / NapCat users can configure the OneBot adapter manually. Quoted QQ messages retain their author and text, fetching missing originals through OneBot. Agents can send native quoted text replies with bothouse send --reply-to MESSAGE_ID --message 'reply'; see the adapter guide for same-conversation checks and verification limits.

The OneBot guide also covers optional paragraph splitting, original-image storage, labelled forwarded chats and a judging model using a self-hosted service or remote API. Personal prompts and model credentials are supplied by the operator.

Everyday actions in DSH Channels

  • Avatars: add or edit a member and open Optional → Avatar → Upload image to pick a local PNG (up to 256KB). The browser automatically resizes it to 256×256 and keeps it in the local data directory; click Restore default to remove the uploaded avatar.
  • Task board: the member sidebar shows task counts; Task board opens a dialog grouped by channel, workspace and owner. Completed tasks start collapsed, and Dispatch / Delivery links jump to the original messages.
  • Channel settings: pick a primary role per channel and save an existing absolute Working directory; choose whether to recreate that channel's DSH sessions now (clearing context) or leave that for the next time sessions are created. Workspaces inherit their parent channel's settings.
  • Images: image attachments have Download and Copy image; click to open a large preview and close it with Esc, the backdrop or the top-right button.

Remote access from your phone with Tailscale

bothouse runs on your home computer with a built-in web dashboard. Tailscale lets your phone reach it without renting a server or opening public ports.

  1. Connect devices: install Tailscale on the computer and your phone with the same account (macOS brew install --cask tailscale; Linux curl -fsSL https://tailscale.com/install.sh | sh) and note the computer's 100.x.y.z from tailscale ip -4.
  2. Enable the dashboard and live bridge: send /web setup to the bot or run bothouse web, then restart once. Or edit ~/.bothouse/config.toml:
[management]
   enabled = true
   host = "100.x.y.z"        # your Tailscale address
   port = 9820
   token = "replace-with-a-long-random-password"

[bridge] enabled = true # required for sending messages, not just viewing token = "replace-with-a-different-random-token"

  1. Sign in: open http://100.x.y.z:9820/ on your phone and enter the token. See uptime and token usage by role and model with daily and hourly heatmaps; add roles, edit personas and change models; open a project to add instructions to running work.
Network notes: start Tailscale first, then bothouse. Without host, it listens on all interfaces, so set it explicitly for remote access. With the bridge enabled, port 9810 also listens on all interfaces. To keep it on the tailnet, block 9810 on LAN and public interfaces with the host firewall.

Hardware: bothouse-iot

bothouse-iot is the hardware networking plugin. It connects ESP32 round-screen boards that speak the xiaozhi protocol, so each board becomes the body of one role: talk to the board and the words reach that role's bot; the bot replies and the board speaks it, with the dial showing idle / thinking / speaking. It joins bothouse as an external platform through the bridge protocol, so bothouse itself needs no changes. Firmware patches, flashing tools and wiring docs are in that repo.

bothouse and other projects: different focus

People often ask: DeepSeek now ships its own agent, and there are Tobs, DS Bot, OpenClaw and more — how is bothouse different?

Most of them are one agent with a crew of sub-agents. bothouse puts the several AIs you already use into one group chat, splits the work between them, and gives them one shared memory.

  • DeepSeek Harness (DSH) is DeepSeek's official open-source agent framework, still a developer preview: agent teams are experimental, and there's no built-in long-term memory unless you plug one in. bothouse's assignment, task board and shared memory are in daily use already — and DSH itself can join over ACP as one of the teammates.
  • Tobs and DS Bot are community bot projects built on DSH; every bot in the team runs on DSH. bothouse isn't tied to one agent: Claude Code, Codex, Gemini CLI, OpenCode and DSH each take their own jobs in the same group.
| | What it is | Which AIs | How several AIs work together | Memory | Where you chat | | --- | --- | --- | --- | --- | --- | | bothouse | A coordination layer on your own computer + web panel | Claude Code, Codex, Gemini CLI, OpenCode; DSH and others over ACP; OpenAI-compatible APIs | The lead role hands work to separate workspaces; task board; one thread per job | One shared Markdown wiki, reviewed nightly | Discord, self-hosted web, Feishu, QQ, DSH web (experimental) | | DeepSeek Harness | DeepSeek's official agent framework (developer preview) | DeepSeek by default; other providers can be added | Subagents; agent teams are experimental | No built-in long-term memory; memory plugins can be added | Its own desktop app and web UI | | Tobs | Bot plugin built on DSH | Models configured in DSH | @ whoever you need; assignments | One Git repo per bot | Feishu, Slack, Discord, QQ, WeChat | | DS Bot | Desktop app / plugin / Docker built on DSH | Models configured in DSH | A chief bot runs the team; group admins coordinate | Memory per bot and per group | In the app |

Mature personal assistants and coding tools get compared too:

| | What it is | How several AIs work together | Memory | How bothouse differs | | --- | --- | --- | --- | --- | | OpenClaw | Personal AI assistant with pluggable harnesses (Claude, Codex and more), 20+ chat apps | Team preset: a coordinator delegates to researcher, writer and reviewer | Sessions split per agent; Memory Wiki shared by default, can be split per agent | One assistant with swappable engines vs several signed-in CLIs working side by side in one group | | Hermes Agent | Self-improving personal assistant, any model | Isolated subagents in parallel | Manages its own memory, writes its own skills | It learns one person; bothouse gives a team one shared memory | | Orca | Multi-agent coding IDE using your own CLIs | Several agents race on one task; merge the best | Left to each CLI | It has you watch the race; bothouse lets you hand it off and walk away |

Which to pick: for a personal assistant you can reach anywhere and that learns you, OpenClaw and Hermes Agent are mature; to watch several coding agents race side by side, pick Orca; if you only use DSH and want a few bots, there are Tobs and DS Bot. If you already have several AI CLIs and want them to split the work in one group and share one memory — say it before bed, collect results in the morning — pick bothouse. Many of these can be used together.

Others people ask about

| | What it's good at | What bothouse adds | | --- | --- | --- | | Raft | People and agents in one new Slack-like workspace | No new app: plugs into the Discord, Feishu or web you already use; open source and self-hostable | | Cindy | One client for Claude Code and Codex; switch models without losing context | The lead role splits the work and hands it out, so you don't have to | | Tencent Mavis | System-level assistant: files, PC and phone apps | Several AIs split project work: code, research, review | | magpie / cc-switch | One place to manage model providers | Different layer: they decide which model, bothouse decides who takes which job and what the team remembers — use them together | | llm-wiki | Turns sessions into a layered wiki memory | bothouse's memory builds on it and shares it across roles |

Roadmap

  • Claim before starting: lock assignments so two members never start the same task.
  • Specialists on demand: “publish to the App Store” spins up a specialist that reads prior decisions, does the job and exits.
  • Role packs and a plugin marketplace: personas, memory templates and tools in one-step bundles; browse community roles.
  • Portable memory and semantic search: carry the Wiki between computers and models, with semantic retrieval beside keyword search.
  • Automatic workspace cleanup: clear context after the last assignment so the next task starts fresh.
  • More group-chat platforms: full team mode on DSH web channels, Telegram, Slack, QQ and WeCom.
  • Team-wide rules and skills: push the team's rules, skills and tool settings to every member's computer in one step.

Contributing

Contributions are welcome — start with CONTRIBUTING.md and AGENTS.md. Source builds with the web dashboard need the frontend built before Go and must not pass no_web; see dashboard build.

More: Getting started · A team from one CLI · Discord and Feishu setup · Codex bot session isolation · Dispatcher and team memory · Role packs · Per-role Wiki and nightly reflection · Guardrails and tools · Memory read-frequency report · Cross-CLI workflow hooks · Usage API · Self-hosted web protocol · Architecture · Lead collaboration scripts

Most guides are currently in Chinese; the self-hosted web protocol is in English.

Community

Questions, ideas and the teams you build are all welcome.

| Drop by | | | --- | --- | | Discord | chat with users and contributors | | GitHub Issues | bugs and ideas | | Pull requests | build it with us | | linux.do | Chinese community forum |

Repository status

GitHub repository status: stars, forks, open issues and PRs, PRs closed and commits in the last 30 days, latest release; text data at the links below.

Last 30 days: closed PRs include merged PRs; commits count all history reachable from the default branch, including merge and bot commits. Updated every six hours; the time on the card is the last successful update.

Text data and definitions · JSON · Update workflow

Star bothouse and come back to see the team grow.

Managing DSH members

The panel's Roles page can add, edit and delete DSH roster-managed members; config and external members are read-only. In an installed environment, adding a DSH role opens the daily member flow instead of reinstalling. Native members can select a DSH provider and model; Codex members can select advertised models and reasoning effort. The desired settings apply before the next turn, and the page shows their application status.

Panel providers apply to bridge projects that reference them. Manage DSH native routes in the DSH shell under Settings → Models; CLI members use local CLI authentication. Bridge project counts are separate from DSH member counts. See DSH panel APIs.

The panel's Plugins page can edit each installed plugin row's YAML configuration, including plugins without a native settings form. Saves preserve !!js tags and write the existing DSH profile patch with a backup; restart DSH to apply them. Clearing the editor restores the bundle defaults without changing the row's enabled state. A HOME-level override is read-only here. See plugin configuration APIs.

Credential fields use !bothouse/secret placeholders: leave a placeholder unchanged to retain its current value, replace the entire placeholder to update it, or set an empty string/remove the field to clear it. Nested keys containing key, token, secret, password, credential, authorization or cookie (case-insensitive) are hidden; anchors and aliases are also hidden to prevent alternate references exposing them. This is field-name based, not a plugin schema: arbitrary credentials embedded in other fields or comments cannot be identified reliably. Configuration requests are limited to 1 MiB, including the JSON envelope.

License and thanks

Star History

Star history of zuiho-kai/bothouse

Chat with me