Introduction
Ferryx is a native desktop terminal workspace for running several CLI coding agents — Claude Code, Codex, Antigravity (agy), or anything else you start from a shell — at the same time, each in its own Git worktree. It’s written in Rust on Tauri v2, parses terminal output with libghostty-vt, and renders panes with WGPU on a native child surface, so there’s no Electron in the stack. The project is source-available under the Ferryx License (free for individuals and companies under 50 people and USD 5M revenue; larger companies need a Team subscription for work use) and ships for macOS, Windows, and Linux. For the checkable version of every claim on this page, see product facts.
The problem it addresses
Run two coding agents in one working directory and they get in each other’s way. Both see the same files, both commit into the same history, and a refactor from one can invalidate the edit the other is halfway through. The usual workaround is to clone the repository once per agent and keep a terminal open for each clone. That works, but the clones drift apart and the upkeep is easy to forget.
Ferryx turns that workaround into a managed feature: each agent gets its own Git worktree, created for you and kept inside the repository. Two agents can edit one repository in parallel without touching each other’s files, and you watch every session from a single window. A status indicator shows when an agent needs attention, and on macOS the Dock icon carries a live attention counter.
Is Ferryx for you?
Ferryx is a good fit if you:
- run more than one CLI coding agent (for example Claude Code and Codex) on the same repository and want one worktree convention for all of them;
- want agent sessions to keep running after you close the window, and to replay missed output when you come back;
- want to check on or steer a long agent run from your phone;
- are an individual or a company small enough to use it free (see the license FAQ).
Ferryx is probably not for you yet if you:
- use a single agent vendor.
claude --worktreeor Codex’s built-in worktrees already isolate that vendor’s sessions, with less to install; see running coding agents in parallel. - need SSO, centrally managed accounts, or a cloud-hosted service. Ferryx does not offer them today.
- need prebuilt Linux or Windows ARM64 binaries, or run on a host without a GPU adapter. Those are not supported yet.
The main concepts
Most of Ferryx reduces to six concepts.
- Workspaces. A workspace groups tabs, panes, and sessions around one project. ⌘1 through ⌘9 switch between them, and ⌘B toggles the sidebar.
- Worktrees. Each agent that needs isolation gets a managed Git worktree under
.orca-worktrees/<workspace-id>/<slug>on a branch namedorca/<workspace-id>/<slug>, jailed to the repository root. - Panes and tabs. Terminals open as tabs and split into vertical or horizontal panes. ⌘T opens a terminal tab, ⌘D splits right, ⌘⇧D splits down, and you can drag a tab into any pane to rearrange the layout. Agents such as Claude Code, Codex, and Antigravity (agy) run here like any other command; status-detection manifests ship for 16 of them, including Claude Code, Codex, Cursor, Cline, GitHub Copilot CLI, OpenCode, Grok, and Kimi, so a pane can report whether its agent is working, waiting on you, or idle.
- Browser tabs. ⌘⇧B opens a browser tab beside the terminal panes, using the native WebView instead of a separate app. Documentation, a CI dashboard, or a deployed preview can live next to the sessions that depend on them.
- The daemon. A headless Rust PTY daemon owns the pseudoterminals, not the window. Closing or reloading the GUI doesn’t kill running processes while the daemon remains alive. Output sits in a ring buffer with monotonic sequence numbers, so reconnecting replays recent output; if the buffer has wrapped, the client is told there’s a gap instead of being shown corrupted output. Workspace state snapshots automatically, and the GUI reattaches to the daemon. Stopping the daemon or rebooting the host can still end live PTYs.
- Remote access. The daemon serves an authenticated gateway for a mobile web client. The terminal renders as a custom DOM grid rather than xterm.js, and a configurable relay URL covers access from outside your LAN. Between two paired Ferryx machines, a live session moves from the relay onto a direct QUIC path when the machines can reach each other, and returns to the relay if that path drops. Run a self-hosted relay to operate that tunnel and its account service yourself.
Install
Download from the releases page; the links below resolve against the latest release. Releases are calendar-versioned, so the newest tag is the one the release page shows.
- macOS: universal DMG for Apple Silicon and Intel, Ferryx_universal.dmg
- Windows: x64 installer, Ferryx_x64-setup.exe. It isn’t code-signed yet, so SmartScreen warns on first run; check the SHA-256 below before you run it. There is no Microsoft Store listing today, and the MSIX in the release is an unsigned Store-ingestion package rather than something you can install directly.
- Linux: Ferryx_amd64.AppImage or Ferryx_amd64.deb, both x64
Each release also publishes a SHA256SUMS.txt beside the binaries, so you can check a download before running it:
sha256sum -c SHA256SUMS.txtYour first session
- Open a terminal tab with ⌘T and start a shell or an agent.
- Split the pane with ⌘D (right) or ⌘⇧D (down) when you want two sessions visible at once.
- Add a browser tab with ⌘⇧B for whatever you keep checking in a second window.
- Sign in to your Ferryx account on a phone if a long run needs a check-in while you’re away.
The command palette (⌘K) is there if you’d rather browse actions than memorize keys, and the keyboard shortcuts page lists everything, including in-terminal search (⌘F).
Where to go next
- Product facts, a single sourced reference for the license, platforms, packages, agent manifests, worktree paths, and daemon behaviour.
- Technical architecture, for how the daemon, the replay protocol, and the rendering pipeline fit together.
- Keyboard shortcuts, the complete reference.
- Running coding agents in parallel, on why agents collide in a shared directory and how a worktree per agent fixes it.
- Git worktree workflow, the manual commands and where they get tedious.
- Remote terminal access, for checking a long run from your phone.
- Comparisons, architecture and licensing comparisons with other tools, deliberately without unmeasured performance claims.
Status
Ferryx is early software: the core is usable, but expect rough edges and breaking changes between releases. Releases are calendar-versioned and published frequently, so check the releases page for the current build and its notes. Terminal sessions and daemon communication work on macOS, Windows, and Linux. Dock badge counters are macOS-only; launchd helper code exists but automatic login-time daemon supervision is not wired up. Questions and bug reports are welcome in the Discord.