Run Claude Code, Codex, Cursor Agent, OpenCode, and Antigravity side by side, each in its own worktree.
Hand a live conversation from one agent to another, review their diffs, and approve their requests from your iPhone.
flotilla-launch.mp4
Flotilla Companion on TestFlight for iPhone and iPad (iOS/iPadOS 26+). Awaiting Apple approval: the public link will accept testers once Beta App Review approves the build.
To pair, open Settings β iPhone Companion β Pair iPhone in Flotilla on your Mac, then scan the QR code in the companion. Keep both devices reachable over LAN or Tailscale.
- Native, not Electron. Flotilla is SwiftUI from top to bottom, with Liquid Glass, real macOS windows, the Dock and the menu bar. It is not a web view wrapped in a browser runtime.
- The real CLIs, on the plans you already pay for. Every agent runs as its own interactive CLI in a real terminal. No SDK sits in between and nothing extra is billed, and new CLI features work the day they ship.
- Agents are interchangeable mid-task. Hit a rate limit with Claude? Hand the live session to Codex. The transcript is transcoded into the other agent's native format, not summarized, so the conversation carries over intact.
- A phone app that's actually native. The iPhone companion is a real iOS app with Live Activities and Lock Screen controls. It pairs straight to your Mac over LAN or Tailscale with end-to-end encryption, so there is no account and no cloud relay.
- Five agents, one launcher. Start Claude Code, Codex CLI, Cursor Agent, OpenCode, or Antigravity from one New Session window, with a model and reasoning effort picker for each and an Act/Plan mode toggle.
- Every session in its own worktree. Sessions can get an isolated git worktree automatically, so parallel agents never step on the same checkout. Worktrees and branches get names that match the task.
- Sessions that outlive the app. Agents run inside tmux, so quitting or updating Flotilla doesn't kill them. Relaunch it and every terminal reattaches right where it was.
- Watch the whole fleet or one agent. Switch between a Mission Control grid (pick its columns Γ rows), a Kanban board, and a focused single-session view.
- Names itself. Apple Intelligence titles each session from its first prompt, so the sidebar reads like a to-do list instead of
session-7. - Keyboard-first. A command palette (βK) reaches every session, project, and action.
![]() Mission Control grid |
![]() Kanban board |
- Accurate status for every session. Flotilla wires each provider's own lifecycle hooks and backs them up with a terminal-screen classifier. Each session shows a distinct status: working, waiting for you, ready, finished, or crashed. Status comes from real events, not idle-timeout guesses.
- Attention everywhere you look. Waiting sessions show up as native notifications, a Dock badge, and a menu bar item, so you can work in another app and still know when to come back.
- See what the agent sees. Screenshots an agent takes or views open in an inspector panel with zoom, so UI work is reviewable at a glance.
Move a running session to a different agent without losing the thread. Flotilla reads the source agent's native transcript, converts it to a neutral model, and writes it back out in the destination's own format. The new agent resumes what it believes is its own prior session. The worktree, board position, and history all stay put, and the handoff finishes in under a second. No model call is involved. β How handoff works
- A real review window. Read an agent's changes in a file-by-file diff and leave line or file comments. Then send the review back to the same agent, or start a fresh agent (of any provider) to address it.
- CI that talks back. GitHub Actions checks show up on each session's branch. When one fails, send the failure straight to the agent that caused it.
- Git, visualized. Every project gets a commit graph (DAG), history browser, commit details, and a live diff panel.
- Know which agent wrote what. Commit attribution records the agent, model, and prompt behind each commit. It is stored on your Mac by default, or shared in the repo if you choose. Commits from agent sessions you haven't seen yet are flagged.
![]() Diff panel |
![]() Commit graph |
- Home dashboard. A customizable widget grid with a commit heatmap, codebase growth, activity stats, and your projects with their custom icons and accent colors.
- Files and editing. A file browser with VS Code Material icons and a Monaco-powered editor with Markdown preview and βS save.
- Instructions in one place. Browse and edit every agent's rules and skills (
CLAUDE.md,AGENTS.md,GEMINI.md,.cursorrules,SKILL.md, and more) from a single Instructions view.
![]() Home dashboard |
![]() Command palette |
The Flotilla Companion for iPhone is a remote control for the Flotilla running on your Mac. The Mac keeps the real terminals, and the phone does the rest:
- Answer agents from anywhere. Allow or deny permission requests, answer questions, and approve or revise plans for every agent.
- Watch without opening the app. A Fleet Radar Live Activity in the Dynamic Island and on the Lock Screen shows which sessions are working and which are waiting.
- Full control. Create, prompt, stop, restart, hand off, and delete sessions. Read transcripts, diffs, commits, and files.
- Private by design. It pairs once over LAN or Tailscale and uses an end-to-end encrypted link that the Mac app hosts itself. There are no accounts and no third-party servers. β Companion docs
| Agent | Status hooks | Handoff from | Handoff to | iPhone approvals |
|---|---|---|---|---|
| Claude Code | β | β | β | β |
| Codex CLI | β | β | β | β |
| Cursor Agent | β | β | β | β |
| Antigravity | β | β | β | β |
| OpenCode | β | β | β | β |
Flotilla launches each CLI you already have installed and signed in, so it never needs your API keys.
- macOS 26.0+
- Xcode with Swift 6.0 toolchain
- XcodeGen (
brew install xcodegen)
git clone <this-repo>
cd Flotilla
xcodegen generate
make run| Command | Purpose |
|---|---|
make build |
Debug build via xcodebuild |
make run |
Build and launch the app |
make test |
Run unit tests |
make test-ui |
Run UI tests |
make build-companion |
Build the iOS companion for the simulator |
make run-companion-demo |
Run the companion on its fixture fleet (no Mac pairing needed) |
make clean |
Remove build artifacts |
See AGENTS.md for the full architecture reference, package layout, and build/test conventions.
Flotilla is a SwiftUI app backed by 11 local Swift packages (Packages/) split along protocol boundaries β SessionKit, GitKit, PersistenceKit, TerminalKit, AgentKit, HooksKit, TranscriptKit, CompanionKit, DesignSystem, SettingsKit, and ProcessKit. The iOS companion (FlotillaCompanion) shares several of these with the Mac app. See AGENTS.md for the full breakdown.
| File | Covers |
|---|---|
docs/ui-vocabulary.md |
Canonical names for every UI region and component, with screenshots |
docs/companion.md |
iPhone companion architecture, pairing handshake, and protocol |
docs/session-handoff.md |
How a live session moves between agents |
docs/provider-hooks.md |
Per-provider hook wiring and status-transition matrix |
docs/testing.md |
Testing policy |
Flotilla is early (v0.1.0, beta) and built primarily for its own author's workflow. Expect rough edges.
The Claude, Codex, Cursor, OpenCode, and Antigravity logos are trademarks of their respective owners. They are included only to identify each provider and are not covered by the MIT license.









