How firetower-cloud/firetower works
Firetower is a self-hosted control plane for running coding agents on local or remote machines. A user connects a client to the control plane, configures repositories and hosts, then starts work; the control plane selects a host and uses SSH to reach a worker, which creates an isolated worktree and runs the agent under tmux. Clients also support conversation, task tracking, previews, voice, and fleet management. The tree and README document these capabilities; sampled code confirms selected client and task behavior, so unsampled subsystem wiring is shown only where documented.
Main entry points: api.rs HTTP API · runtime.rs Session runtime · tasks.rs Tracker tasks · App.tsx Desktop app
Components 22
Client apps
- Desktop app
desktop/src/App.tsx - Mobile app
mobile/app/(tabs)/index.tsx - Web console
web/app/page.tsx - Client API
desktop/src/api/workspaces.ts
Control plane
- HTTP API
crates/ft-server/src/api.rs - Accounts and auth
crates/ft-server/src/auth.rs - Control-plane database
crates/ft-server/src/db.rs - Fleet orchestration
crates/ft-server/src/fleet.rs - SSH transport
crates/ft-server/src/transport.rs - Tracker tasks
crates/ft-server/src/tasks.rs - Preview proxy
crates/ft-server/src/preview.rs - Secrets vault
crates/ft-server/src/vault.rs - Update service
crates/ft-server/src/updates/mod.rs
Worker execution
- Worker entry
crates/ft-worker/src/entry.rs - Session runtime
crates/ft-worker/src/runtime.rs - Git worktree
crates/ft-worker/src/git.rs - Terminal session
crates/ft-worker/src/tmux.rs - Coding agent
crates/ft-worker/src/agents.rs
Connected services
- Issue tracker
- Git host
- Updater container
crates/ft-updater/src/main.rs
Other components
- Developer
Connections 24
- Developer → Desktop app: uses
- Developer → Mobile app: uses
- Developer → Web console: uses
- Desktop app → Client API: requests
- Client API → HTTP API: HTTPS
- Mobile app → HTTP API: HTTPS
- Web console → HTTP API: HTTPS
- HTTP API → Accounts and auth: authenticates
- HTTP API → Control-plane database: reads/writes
- HTTP API → Fleet orchestration: dispatches work
- Fleet orchestration → SSH transport: connects to worker
- SSH transport → Worker entry: runs remotely
- Worker entry → Session runtime: starts session
- Session runtime → Git worktree: creates worktree
- Session runtime → Terminal session: starts terminal
- Session runtime → Coding agent: launches
- Tracker tasks → Issue tracker: fetches issues
- HTTP API → Tracker tasks: serves task requests
- Tracker tasks → Git host: queries issues
- HTTP API → Preview proxy: serves previews
- HTTP API → Secrets vault: manages secrets
- HTTP API → Update service: requests updates
- Update service → Updater container: calls update service
- Updater container → HTTP API: recreates deployment