fleet
self‑hosted · open source · MCP‑native

Run a fleet of AI coding agents from your phone

Self-hosted, in one Telegram supergroup — each agent gets its own topic. Voice or text, files back, live sessions. No account. No vendor app.

Telegram‑native · multi‑agent · real terminals · park & wake · Codex too · fully self‑hosted

View on GitHub Read the docs

Runs Claude Code and Codex · v2.0.0 on npm · MIT

What it does

A whole team of agents, in your pocket

The power of terminal coding agents — unchained from the terminal, and from any vendor.

Talk from Telegram

Text, voice, and files — both directions. Voice notes are transcribed — Groq, OpenAI, or local Whisper. Kick off a task from anywhere; get a diff or a file back in the chat.

Spawn & manage a fleet

Spawn agents on demand with /spawn and run several at once — one forum topic per agent, so every session stays its own clean thread.

Real terminals, park & wake

Every agent is a real terminal window you can watch — or take over and type. Close it and it parks, freeing RAM; message its topic and it wakes with context intact.

MCP-native, Codex too

Each agent ships a bundled MCP server — send_message / send_file straight back to its topic. Runs Claude Code and Codex (official CLI, no fork).

How it works

A thin Telegram layer over local runners

No backend, no webhook — one local process. Telegram is just the remote.

architecture
 your phone                        your machine
+--------------+                 +---------------------------+
| Telegram     |   getUpdates    | fleet runner              |
| supergroup   | <= long-poll => |  |- agents: claude·codex  |
|              |   no webhook    |  |  (real pty terminals)  |
| 1 topic =    |   no URL        |  |- bundled fleet MCP     |
| 1 agent      | <-- replies --- |  `- ~/.fleet config       |
+--------------+                 +---------------------------+
      no backend · no cloud · nothing leaves your machine
runner — one local process (fleet start); long-polls Telegram — no public URL, works behind NAT.
agents — Claude Code & Codex in real pty terminals; watch them, or type into them directly.
fleet mcp — bundled MCP server in every agent; send_message / send_file back to its topic.
~/.fleet — config, secrets & sessions in one local file; queued messages survive restarts.
Get started

Two commands and a bot token

From zero to a working fleet in about five minutes — nothing to deploy.

terminal
$ npm i -g @sand0vvv/fleet
$ fleet init     # wizard → ~/.fleet
$ fleet start    # long-polls Telegram
then, in your supergroup: /link once → /spawn ~/path/to/project — each agent gets its own topic and a real terminal window
1Create the bot & group

@BotFather/newbot → copy the token. New group → enable Topics → add the bot as admin.

2Install & start

npm i -g @sand0vvv/fleet, then fleet init — an interactive wizard — and fleet start. Config and secrets stay in ~/.fleet.

3Link & spawn

Send /link in the group — once. Then /spawn a project per agent; text or voice the topic, get diffs and files back.

Node ≥ 18 · Claude Code logged in · Codex optional · Windows / macOS / Linux · MIT

See it live

Under a minute, phone to diff

Spawn an agent, hand it a task by voice, watch the work land back in the chat.

FAQ

Questions

The honest answers — including how this differs from what already exists.

Claude Code already has remote features — why fleet?
Hosted remotes are cloud products — an account, a vendor app, a relay in the middle. fleet is the opposite: everything runs on your machine. The runner long-polls Telegram — no backend, no webhook, no public URL — and your keys and sessions stay in ~/.fleet. One supergroup holds the whole roster, each agent in its own topic, and it drives Codex as well as Claude Code. Want a managed service? Use those. Want to own the whole loop? That's fleet.
Do I need an account or a separate app?
No. You use the Telegram you already have, plus a bot token you create with @BotFather in about a minute. Nothing to sign up for, nothing to install on your phone.
Where do the agents actually run?
On your machine or a VPS — your files, your API keys, your git. Telegram is just the remote: tasks in, diffs and files back. One local process (fleet start) long-polls Telegram — no public URL, works behind NAT — and nothing routes through anyone's cloud except Telegram's own bot API.
Claude only, or Codex too?
Both. Claude Code natively, Codex via the official codex CLI — no fork. Same topics, same voice notes, same controls either way.
What happens when I close an agent's window?
It parks — the process stops and frees RAM, but the session survives. Messages sent while it's parked are queued on disk; the next one wakes the agent and it continues where it left off. /hide parks it on purpose, /show brings the window back.
Is it free?
Yes — MIT-licensed open source, a personal project shared as-is. The only costs are your own: your Anthropic/OpenAI usage and wherever you host it. Full setup lives in the GitHub README.
Who built this

Built by @sand0vvv

fleet is the tool my own agents run on, every day. I build the same kind of thing for clients — MCP servers, Claude/Codex integrations, agent systems that make a product usable by AI agents. Fixed scope, shipped in days, not months. If you're building in this space, my DMs are open.