Firetower

Open source/Self-hosted/No account

Run any coding agent,
on your own servers,
from anywhere.

Give Firetower a machine you can SSH into and a repository. It picks a host, cuts a branch, makes a worktree, starts tmux, launches the agent and keeps it running. Then it does the part that actually costs you time: it tells you the moment it stops being useful without you.

FiretowerThu 09:41

New session

What should we work on?

Needs you 1

juniperMigrate the settlement job off the nightly cron

Two tables have a settled_at. Should I backfill both, or is invoices.settled_at derived?

Sessions 2

How it fits together

Execute your favourite
agent on any machine.

Firetower reaches each machine over SSH and starts a worker there. The agents run on that machine — in tmux, on their own worktree — which is why closing your laptop costs nothing and why the app itself never has to be the thing that is busy.

  • *a session that has stopped and needs you
  • oone still working, nothing to do
  • sshhow the app reaches a machine you own

Workers are authoritative.

They write what happened to their own log before reporting it. When the control plane comes back it asks for everything since the last thing it saw — so a closed laptop costs nothing and a reconnect is a replay, not a guess.

The worker never opens a port.

It reads frames from stdin and writes them to stdout, so who dials is a transport detail: a child process, a container exec, or SSH. The daemon cannot tell the difference, and neither can a firewall.

What one sentence of work turns into

$rate-limit the webhook receiver, 100/min per key
  1. 01picks a hostfrom the fleet, or the one you named
  2. 02cuts a branchoff the mirror it already keeps warm
  3. 03makes a worktreeso two sessions never share a checkout
  4. 04starts tmuxand the session outlives every connection to it
  5. 05copies your variablesand runs the repository's init scripts
  6. 06launches the agentwith credentials handed over at start, in memory only
  7. 07keeps it runningand records what happened before reporting it
Then: attach from a browser or a phone, answer it, review the diff, push the branch, open the pull request, destroy the workspace.