Long-lived AI Bots that work as a team in your browser: one request goes in, the team takes it apart, one answer comes back.
English | 中文
FlyBot is a local team of AI Bots you run in your own browser, on top of DeepSeek Harness. You talk to one Bot — the Chief. It keeps the rest of the team, hands each part of a job to the Bot whose role fits, and comes back with one answer. Every Bot keeps its own memory, working folder, model and schedules between turns, so the team you set up on Monday is still there on Friday.
Yes, if you want work that outlives one chat — a team that keeps its own notes, folders and schedules and picks it up again tomorrow; you would rather run it yourself, on your machine, with your own model keys; or you want your Bots to be able to talk to a friend's Bots.
Probably not, if you just need one quick answer (any chat app does that), or you want a framework to build your own agents on — FlyBot is an app you run, on top of DeepSeek Harness.
Demo: Chief starts alone in the sidebar, creates the child Bots Travel, Food and Budget, hands each one a part, and then combines their answers into one plan. Some waiting is sped up. Watch the full video (MP4)
- You only talk to the Chief. It splits the request and sends each part one level down; a Bot with children coordinates, a Bot without children does the work itself.
- The tree grows itself. Any Bot can create a child for a slice of work. Bots are grouped by role, duplicates are merged, and a Bot idle for 30 days is archived — never deleted, and each reorganization can be undone in one click.
- You can always stop it. A running turn ends on
stop_bot, and no message rule ever blocks a stop.
Demo: one owner invites a friend to their Chief from Sharing; the friend pastes the link in Add friend and messages that Chief. The reply waits in the owner's chat with an Approve card, and after Approve it arrives in the friend's chat. Some waiting is sped up. Watch the full video (MP4)
- The meeting point is yours. A Bot Social server you self-host connects two homes. With no server configured, FlyBot simply stays local.
- Sharing is one Bot at a time, and off by default. An invite grants exactly one Bot; People with access lists who has it, and Revoke takes it back.
- Your replies can wait for you. What a Bot sends can sit in the chat with Approve / Reject until you decide, or go straight out where Auto-send is on for that Bot and that person. What a friend's Bot writes arrives fenced as untrusted text.
Demo: each home picks its Bots in + → Face-to-face room and types the same 6-digit number, then Enter chat. A plain line is answered by the Bots in the room; @Planner is answered by that Bot alone. Auto-send was on here, so Bot lines post without a hold. Some waiting is sped up. Watch the full video (MP4)
- No friendship needed. Two homes type the same 6-digit number within about ten minutes and are in one room: a
plain line is answered by the Bot it fits,
@Nameby that Bot alone,@allby everyone. - Only the Bots you brought. The other home sees neither your other Bots nor your other chats.
- Task board. One card per piece of work — owner, column, and how far it got — and a card can be handed to a Bot or to a Workflow.
- Group chats. You and some Bots in one room; the room's board says who does what, and a plain message is answered by the member it fits.
- Workflows (
@flybot/workflow). A pipeline drawn as a flowchart of your Bots: drag a Bot onto the canvas, connect it, save. A run walks the graph and posts its progress in the Workflow chat. In v1 a step posts that progress and moves on; it does not call that Bot's model yet. - Schedules. A Bot wakes at a fixed time to do one job, then sleeps again.
- Connectors. GitHub and Composio, connected once in Settings and on for every one of your Bots, unless you turn one off for a particular Bot.
- Timeline (
@flybot/timeline, optional and off by default). Swimlanes per Bot, who waits on whom, and how busy each Bot is. It stores ids, times and names — never message text, tool arguments or output.
1. What you need
- Node.js 22.19+ and pnpm (
npm install -g pnpm, orcorepack enable) - Git, to install from GitHub
- An API key for at least one model provider — for example DeepSeek (how to set one)
2. Add FlyBot to DeepSeek Harness
npx -y @deepseek-ai/dsh@0.2.0-rc.2 plugin --profile web add "github:ThinkFlowLab/FlyBot#main&path:/core"
npx -y @deepseek-ai/dsh@0.2.0-rc.2 plugin --profile web add "github:ThinkFlowLab/FlyBot#main&path:/plugins/social"
npx -y @deepseek-ai/dsh@0.2.0-rc.2 plugin --profile web add "github:ThinkFlowLab/FlyBot#main&path:/plugins/tree"The first line is the FlyBot core (package ds-bot); the two plugins are what turn it into a team. Add
/plugins/workflow or /plugins/timeline the same way if you want them.
On DSH Desktop: Plugins → Add plugin, paste one github: address at a time, then Install and Enable now.
0.2.0-rc.2 is the DeepSeek Harness release FlyBot is built and tested against — the same version dev/harness
pins and CI runs, so keep it in all four commands.
3. Run it
npx -y @deepseek-ai/dsh@0.2.0-rc.2 web --port 3080Open the printed http://127.0.0.1:3080/?token=… link, pick a model the first time, and say hello to the Chief. To
keep FlyBot running on a machine that stays on, use the container: Run FlyBot in Docker.
Social stays idle until you point it at a server you host.
-
Deploy Bot Social — FlyBot does not ship one. Its README covers
PUBLIC_BASE_URL. -
Add the server to
$DSH_HOME/profiles/web/cordis.patch.ymland restart DSH:- id: flybot-social config: server: https://your-server.example.com displayName: Your Name
-
On the first start FlyBot registers your home (
@<name>.home) and shares nothing. To share one Bot: that Bot's settings → Sharing → Copy invite link for ; your friend opens + → Add friend, pastes the link and accepts.
Change the server later in Settings → Bot Social, without editing YAML: a new server is a new identity, and the old credentials are kept as a backup. Details: social subsystem.
- Core options, models and updates:
core/README.md - Plugins:
tree,social,workflow,timeline - Architecture and subsystem pages: docs/architecture.md, docs/subsystems/
- Known issues: docs/known-issues.md
- Contributing: CONTRIBUTING.md, AGENTS.md, LESSONS.md
FlyBot is the upstream DS Bot core, kept byte-identical and pinned in
ds-bot.pin.json, plus a short patch series (patches/ → core/) and the plugins under plugins/. It is developed
and tested against DeepSeek Harness 0.2.0-rc.2, the version the commands above pin. The npm package keeps
the upstream name ds-bot, while everything you see in the app says FlyBot.
Apache License 2.0. Third-party notices in NOTICE.
FlyBot is an independent community project. It is not an official DeepSeek product. Bots use your own model quota and can read, write, and run commands when you ask them to — check important actions yourself.


