Your machines.
Your agents.
One page.

Type a task on any device. A machine you own picks it up and runs Claude Code, Codex or opencode in its own worktree, streaming every step back live.

MIT licensed · One Rust binary · macOS and Linux

Drives
Claude Code Codex opencode
Any model through opencode
OpusSonnetHaikuCodex modelsKimi K2GLMDeepSeekQwenOpenRouterOllamaLM Studio
Three steps

Turn the computers you already have into a fleet of coding agents

No API keys for Claude or Codex: Sidefleet uses the login already on each machine. No open ports: machines only ever call out to your control plane.

spare-laptop
$ 
Sidefleet control plane is running.

  Open the page:     http://spare-laptop:7373/
  Connect a machine: sidefleet connect …

1Start Sidefleet on one machine

The web page, the API and Postgres on one box. If it has an agent, it's your first worker too.

Claude Code signed in
Codex signed in
opencode OpenRouter
14 git checkouts matched by remote
systemd service survives reboots

2Connect your machines

sidefleet connect finds your agents and repos and installs a service. Or paste a prompt and let the agent connect itself.

Add dark mode to the settings page
Claimed by Mac mini0.4s

3Type a task from anywhere

Your phone on the couch, a borrowed laptop, the desk. The least busy machine with that repo and agent picks it up.

Machines3 online
Mac minimacOS · arm64 · parallel 3
CPU 38%
2 running
vps-fra-1Linux · x86_64 · parallel 4
CPU 12%
1 running
MacBook PromacOS · arm64 · parallel 2
CPU 4%
usage limit until 14:00

Every machine, on one page

Each connected machine shows up live with its repos, agents, CPU and running tasks. Each task lands on the least busy machine that has the repo and the agent, or you pin one.

  • Different accounts, one fleet. When one machine hits its usage limit, its task moves to another.
  • Repos match by git remote, whatever the folder is called on each machine.
  • Run several at once. Set how many tasks each machine takes in parallel.

Watch it work. Reply from your phone.

The agent's narration and tool calls stream in within milliseconds and survive reloads and dropped connections. It's a conversation: reply to keep going, and the agent resumes the same session.

  • Reply while it works and the message waits its turn, or press Send now to interrupt.
  • Screenshots show inline, so you can ask for one from the couch.
  • Drop, paste or attach images to a task and the agent gets them too.
Add dark mode to settingsRunning
Mac mini · Opus 5.5 · sidefleet/9c2e
Reply…

Survives a machine dropping

Turn on “Move if it drops” and the worker pushes the task's own branch at most once a minute while the agent edits. If the machine goes quiet, another one with the repo picks up from the last pushed commit, with a digest of the thread so far.

Port the search indexer to the new job queueRunning
Elapsed0m 00s
Machines1
Last push—
Lost worknone
start5 min10 min
MacBook ProCodex
asleep
Mac miniCodex · continues
mainyour checkout, untouched
  • sidefleet/9c2eAdd dark mode to settings
  • sidefleet/41afBump axum and fix the build
  • sidefleet/d07bWrite the 0.4 release notes
  • sidefleet/7f3aAdd a password strength meter to sign-up

Every task gets its own branch

Each task runs in its own git worktree on a sidefleet/<id> branch, so several tasks on one repo run side by side without touching your checkout. Choose “In place” when a task needs installed dependencies or local config.

When it's done, read through the changes on the page, then merge the branch like any other.

Rewind any message. Fork into any agent.

Every message's files are snapshotted before and after, so you can put the worktree back to how it was before any of them. Or start a new thread from any message, with a different agent and model.

The conversation carries on, and a restore can itself be undone.

You

Move the cart total into a hook

Restore to before
Claude

Moved it into useCartTotal; 3 files changed, tests pass.

Fork from here
You

Now cache it in localStorage too

Restore to before
Claude

Added a cache layer and a migration for old carts.

Fork from here

Your code never leaves your machines

Sidefleet is a control plane and a worker you run yourself. There's no Sidefleet cloud in the middle: the agents run where your code already lives.

  1. 01
    No open ports. Workers only make outbound HTTP calls to your control plane: register, heartbeat, claim, events.
  2. 02
    No API keys to hand over. Claude Code and Codex use the sign-in already on that machine.
  3. 03
    Secrets redacted twice. Anything that looks like a credential is scrubbed on the worker, then again on the control plane.
  4. 04
    Tokens stored as SHA-256 digests and never logged.
  5. 05
    Made for your tailnet. Put the control plane on Tailscale: no port forwarding, no public exposure.
  6. 06
    Permission modes per task. Read and edit files, full access for unattended runs, or read only for questions.

This is the real page

sidefleet · spare-laptop:7373
A task running on a VPS, streamed live to the page A finished task with its changes, ready for a follow-up Reviewing a task's diff The Machines page The task box, with running and recent tasks in the sidebar

Free, open source, and yours

Downloads a prebuilt sidefleet into ~/.local/bin with no sudo, or builds from source when there's no release for your platform.

1 · Install on every machine
curl -fsSL https://raw.githubusercontent.com/foodaka/side-fleet/main/install.sh | sh
2 · Start the control plane (needs Postgres)
sidefleet serve
3 · Connect the others, with the line the page shows you
sidefleet connect --control <url> --token <t>
Hosted · Early access

Rather not run a server? We'll host it.

Sign in with GitHub and connect your machines. There's no control plane or Postgres to keep running. The agents and your code still stay on your machines.

One email when there's a spot for you. Nothing else.

Questions

Does it need API keys?

Not for Claude Code or Codex: Sidefleet uses the login already on each machine, so usage counts against that account's plan. opencode brings any other model through its own providers, like OpenRouter or a local Ollama.

Where does my code go?

Nowhere new. Agents run on your machines, in worktrees of checkouts that are already there. The control plane is yours too, and only sees the agent's narration and tool calls, with secrets redacted.

Can I use it from my phone?

Yes. The page works on any browser that can reach your control plane. Put it on Tailscale and it's reachable from your phone anywhere, without exposing it to the internet.

My laptop went to sleep mid-task. Is the work lost?

Not if the task has “Move if it drops” on: the worker pushes the task's own sidefleet/… branch as it goes, and another machine with the repo continues from the last pushed commit. Without it, the task stops with the machine.

Is there a hosted version?

It's in early access: the control plane runs for you and you sign in with GitHub. The worker stays open source and runs on your machines, so your code doesn't move. Request early access.

Which platforms does it run on?

macOS (arm64 and x86_64) and Linux (x86_64 and arm64). The control plane needs Postgres; one Docker command sets it up.

Can I switch agents halfway through a task?

Yes: fork the thread from any message into another agent and model. The new agent gets the conversation so far as a transcript and starts from the files as they were at that point.

Is it OK to run my subscription this way?

Sidefleet drives your own sign-ins, headless. Check the terms of your subscriptions for automated or unattended use, and never share or resell access to an account through it.

Put your machines to work

Your desk Mac, a Mac mini, a VPS. One page to run agents on all of them.