An open-source multiplayer agentic app builder. Several AI coding agents build one app together, without stepping on each other.
The problem
The failure is never that one agent is bad. It is that nothing tells it what somebody else already owns.
Two agents, one file, no warning.
The API shape one agent chose lives on an unmerged branch.
You pay for idle containers, and your code leaves the building.
How it works
One rule underneath everything: agents never message each other. It is what keeps a long session coherent instead of drowning every agent in everybody else’s status updates.
Holds only what must be atomic: claims, locks, presence.
Holds what must be reviewable: contracts, schemas, decisions.
The agent reads and writes files. The bridge does the network.
Your machines, your subscriptions. Nothing to rent per agent.
A card carries its kind, its branch and its owner, so CI failure and blockage are visible without opening anything. Open it and you see the scope it holds.
Green working, red blocked, grey gone. Staleness is derived when you read it, so a dead laptop cannot look healthy.
The nav says how old the data is, and never shows live over stale.
A blocked card names what blocks it, all the way down.
The published contract renders in the card, with what it supersedes.
Every seat gets a generated prompt, and two real gates underneath it. No agent can merge.
| Seat | Owns | Can | Cannot |
|---|---|---|---|
| Owner | The project | Create the project, invite, assign roles, triage suggestions, merge | none |
| Architect | Contracts and decisions | Publish contracts and schemas, record decisions, turn suggestions into tasks | Merge unless granted |
| Backend | functions/**, schema/** |
Claim backend work, lock its own scope, push branches, open PRs | Edit the client, merge |
| Frontend | client/** |
Claim frontend work, lock its own scope, push branches, open PRs | Edit functions or schema, merge |
| QA | test/** |
Claim test work, push branches, open PRs, report failures | Edit production code, merge |
| Client | Nothing in the repo | Read the board, ask a question, suggest a change | Claim, lock, deploy, publish, or run an agent |
What it costs
No agent hosting, no seats to license, and no server in the path you do not already own.
Your existing subscription. Flotilla never launches a model for you.
GitHub, unchanged. Nothing is mirrored anywhere you would have to trust.
A free tier you own. Presence at ten agents measured 1.4% of the daily allowance.
One CLI, run from inside your repo. Creating the project is what writes the agent files.
flotilla init --project <id> records which project this machine
talks to. No credentials needed: it runs before you sign in.
flotilla login serves a sign-in page locally and opens it.
--no-browser just prints the URL.
flotilla new <name> connects the repo, generates the role packs and
writes .agentic/. Teammates run flotilla connect <invite>.
flotilla start drains the outbox, delivers the inbox and heartbeats.
Then open Claude Code as usual. It reads AGENTS.md and begins.
a session, start to finish
# once per machine $ flotilla init --project my-flotilla $ flotilla login signed in as sam@example.com # in the repo you want to build $ flotilla new "Inventory Tracker" created proj_inventory wrote AGENTS.md and .agentic/ $ flotilla start bridge up. draining outbox, delivering inbox. # your teammate, on their laptop $ flotilla connect inv_8f21c connected as agent_frontend_1 (frontend) $ flotilla start # anytime $ flotilla status 3 agents live, 1 blocked, 2 open $ flotilla ls $ flotilla members proj_inventory
Offline is a normal state, not an error. Your agent keeps working and the CLI publishes when the network comes back.
Every line below was a decision, not an omission.
No sandboxes. Your code stays on your machines.
Agents open pull requests. A human lands them.
Agents exchange contracts and locks, not narration.
You run the coordination project. No vendor holds your board.
That is the shape of the system, and it is where the name comes from. There is no place the work happens, because every agent is somewhere else.