Skip to content
zuiho-kaiPublic

About

适配不同平台的团队协作与记忆插件

Resources

Contributing

Security policy

Stars

56 stars

Watchers

0 watching

Forks

Latest commit

 

History

2,434 Commits

Folders and files

Repository files navigation

bothouse: your local AI CLIs in one group chat — a team that hands out its own work

bothouse

English | 中文

Release License Platforms Stars Discord

bothouse: put Claude Code, Codex, Gemini CLI and DeepSeek on your computer into one group chat — an AI team that shares one memory and divides up its own work.

Video · Install · Features · Screenshots · Memory · Releases · Compare · Community · Docs

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

The setup wizard offers Only when addressed for quiet group participation without a routing model. Smart routing can use a local 0.6B model; it must provide logprobs and is 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.

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.

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.

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 <exact-id> --effort <level>. 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).

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 a local Qwen 0.6B.
  • 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 <project> 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
Self-hosted web Team mode A local, Discord-like web UI with multiple roles, mentions and task handoffs
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 web Experimental A Channels page inside DSH web; see DSH channels

QQ / NapCat users can configure the OneBot adapter manually.

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"
  3. 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.

Release highlights

Full history in Releases.

Version What's new
0.1.43 (2026-10-31) A burst of messages sent while a role is busy is answered as one turn; truncated handbacks save the full text first and say where to read it; QQ group @ mentions; images in DSH can be viewed, copied and downloaded; a real desktop window on Windows.
0.1.42 (2026-10-30) Each chat channel pins a task board (waiting for you / running / parked); every task gets its own thread; teammates always hand back results in four plain-language parts; replies about running work go straight to its workspace.
0.1.41 (2026-10-30) /model shows the model a channel is actually using; a workspace question pauses only the task it names; bothouse-dsh is published to npm with each release.
0.1.40 (2026-10-29) A reply blocked by a hook is no longer cut to its last line; Grok roles get the ask-only guard too.

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.

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.

License and thanks

Star History

Star history of zuiho-kai/bothouse

外部变化需要跟进已有任务时,可用结构化 cron/poll 或鉴权 webhook,并通过本地 task event-source、task events、task event-ack 管理来源与回执。配置、样例及各平台能力边界见 外部任务事件。

Workspace final reports remain pending until the dispatcher verifies their artifacts. The board distinguishes pending review from paused work; overdue review reminders survive restarts. See handback verification. 模型额度冷却按账号及已知共享额度组保存:切到独立额度目标不会清空原目标的期限,切回仍受限制;共享额度的模型不能靠切换绕过限制。旧版本的角色级冷却只有在测得目标额度可用后才对该目标放行,无法查询时保留限制。模型切换仍须使用已有入口,由用户明确选择。

About

适配不同平台的团队协作与记忆插件

Resources

Contributing

Security policy

Stars

56 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages