Skip to content

Ferryx product facts

A single reference page of concrete, checkable facts about Ferryx. Every row names the file in the repository that backs it, so nothing here depends on marketing copy. Figures that have not been measured are marked as such rather than estimated.

What Ferryx is

Ferryx is a desktop terminal workspace for running several CLI coding agents at the same time. Each agent runs in its own terminal pane and, when isolation is requested, its own managed Git worktree. The desktop shell is Rust on Tauri v2, terminal output is parsed with libghostty-vt, panes render through WGPU on a native child surface, and a headless Rust daemon owns the pseudoterminals so sessions outlive the window.

Identity and licensing

FactValueSource
Project nameFerryxsrc-tauri/tauri.conf.json (productName)
Bundle identifiercom.ferryx.appsrc-tauri/tauri.conf.json
LicenseSustainable Use License 1.0 (SUL-1.0), source-available; permits your own internal business purposes, non-commercial use, or personal useLICENSE
Current releaseCalendar-versioned (vYYYY.MM.DD.N); see the latest published release and its notesReleases
Source repositorygithub.com/Indosaram/ferryxGitHub
PriceFree to downloadReleases

SUL-1.0 is not an OSI open-source license. It permits use and modification for your own internal business purposes or for non-commercial or personal use. Distribution must be free of charge and for non-commercial purposes, with the required notices preserved. Read the license for its full terms.

Platforms and packages

PlatformPackageRequirement
macOSUniversal DMG (Apple Silicon and Intel), signed and notarisedmacOS 10.15+
WindowsFerryx_x64-setup.exe installer, not code-signed yetWindows 10/11 x64 with WebView2
LinuxAppImage (x86_64)glibc 2.31+, WebKitGTK 4.0/4.1 with GTK 3
LinuxDebian/Ubuntu .deb (x86_64)glibc 2.31+, WebKitGTK 4.0/4.1 with GTK 3
Linux headlessferryx-cli single binary, PTY daemon and CLI (x86_64)No GUI or WebKit dependency

There is no Microsoft Store listing: the Store catalogue returns no Ferryx product, and the Ferryx_x64.msix in each release is an unsigned Store-ingestion package, not an installable one. Windows users install the .exe, which self-updates.

For the Linux headless ferryx-cli, install with the one-line installer, which resolves the current build rather than a pinned tag:

Terminal window
curl -fsSL https://relay.ferryx.dev/install.sh | bash

The release pipeline stages ferryx-cli beside the Linux AppImage and .deb (and, on macOS, as a universal binary), so the installer has a current artifact to fetch; it falls back to the GitHub release asset if the relay has no local copy. cargo build --release --bin ferryx-cli remains available for building from source.

Every release publishes SHA256SUMS.txt beside the binaries, so a download can be checked with sha256sum -c SHA256SUMS.txt before it is run.

Coding agents

Agents are ordinary commands: anything you can start in a terminal runs in a Ferryx pane, including Claude Code, Codex, and Gemini CLI. What is agent-specific is status detection — reading a pane’s output to decide whether that agent is working, waiting on you, or idle.

Status-detection manifests ship for eleven agents: Antigravity, Claude Code, Cline, Codex, GitHub Copilot CLI, Cursor, Gajae Code (gjc), Grok, Kimi, OMO, and OpenCode (src-tauri/src/agent_detect/manifests/, registered in src-tauri/src/agent_detect/engine.rs). Detection drives the pane status indicator, notifications, and the macOS Dock attention badge.

Git worktree isolation

FactValueSource
Managed worktree path.orca-worktrees/wt-<slug> inside the repositorysrc-tauri/src/worktree/
Branch namingorca/<workspace-id>/<slug>src-tauri/src/worktree/
Path safetyManaged worktree paths are jailed to the repository rootsrc-tauri/src/worktree/

The application manages worktree creation, naming, and removal using these conventions.

Sessions and the daemon

FactValueSource
PTY ownerHeadless Rust daemon, not the GUI processsrc-tauri/src/daemon/
TransportUnix domain socket on Unix; loopback TCP on Windowssrc-tauri/src/daemon/
Output buffer512 KiB ring buffer per session with monotonic sequence numberssrc-tauri/src/terminal/output_hub.rs
Reconnect behaviourMissed output is replayed; if the buffer wrapped, the client is told there is a gap instead of being shown a corrupted transcriptsrc-tauri/src/terminal/output_hub.rs

Closing or reloading the desktop window does not kill running agent processes.

Remote access

FactValueSource
GatewayAuthenticated Axum WebSocket serversrc-tauri/src/remote/
Pairing6-digit PIN (also available as a QR code)src-tauri/src/remote/
Mobile terminalCustom DOM grid, no xterm.js dependencyui/src/remote/
Off-LAN accessConfigurable outbound relay tunnel; no inbound SSH port or public IP requiredsrc-tauri/src/remote/

A terminal exposed over a network is a shell on your machine. Keep remote access off unless you need it, and prefer a trusted network path.

Rendering and architecture

LayerImplementationSource
Terminal parserlibghostty-vt via FFIsrc-tauri/src/native_terminal/sys/ffi.rs
Desktop rendererWGPU native child surfaces (Metal, Vulkan, DX12)src-tauri/src/native_terminal/renderer/
Application shellTauri v2 with the OS webview; no Electron or bundled Chromiumsrc-tauri/tauri.conf.json
Embedded browserNative WebView split-tabs beside terminal panesui/src/components/browser/
UIReact 18 with Zustand state and binary pane split treesui/src/state/

What is not claimed

No comparative performance numbers against Electron applications, other terminals, or other agent workspaces are published here, because none have been measured under a shared methodology. The only figure the project publishes is an internal offscreen WGPU render benchmark (50-frame p50 of 3.10 ms on an Apple M4 Max), which measures Ferryx’s own render path and nothing else.

Where to go next