Native Ghostty terminal engine, wgpu GPU rendering, and a headless Rust PTY daemon. No Electron anywhere.
Download · Website · Docs · Discord
An agent working in a native terminal pane, split beside an embedded browser tab.
| Platform | Package | |
|---|---|---|
| macOS | Universal DMG (Apple Silicon & Intel) | .dmg |
| Windows | Installer (x64, not code-signed yet) | .exe |
| Linux | Portable AppImage (x64) | .AppImage |
| Linux | Debian / Ubuntu package (x64) | .deb |
| Linux (Headless) | Server / VPS PTY Daemon & CLI (x64) | ferryx-cli |
The macOS, Windows, and Linux links resolve against the latest release. ferryx-cli is pinned
to v2026.09.11.1, the most recent release that publishes it; newer releases do not, so build it
from source (cargo build --release --bin ferryx-cli) if you need it current. Verify downloads
with the SHA256SUMS.txt published alongside the binaries:
sha256sum -c SHA256SUMS.txtEvery layer is engineered for minimal latency and autonomous agent collaboration.
Desktop terminal panes render through native libghostty and a GPU-accelerated wgpu pipeline, giving crisp font rasterization and low-latency throughput.
- libghostty terminal core
- wgpu GPU pipeline
- Offscreen WGPU render benchmark: 50-frame p50 3.10 ms on Apple M4 Max
Run parallel AI coding agents (Claude Code, Codex, Gemini CLI) in isolated split panes with real-time status indicators.
- Isolated worktree per agent
- Live status indicators
- Launch straight from the tab bar
Arbitrary vertical and horizontal splits with pointer-drag resizing and smooth layout transitions.
- Vertical and horizontal splits
- Pointer drag resizing
- Drag tabs into any pane
Authenticated remote access over QR or PIN. Stream terminal output to a dependency-free DOM terminal grid and steer agents from anywhere.
- 6-digit PIN pairing
- Streamed terminal grid
- Steer agents from a phone
Pair headless Linux servers, VPSs, and cloud instances as project-owning machines. Ferryx uses an outbound-only relay tunnel, so machines behind NAT, firewalls, or without public IPs / open SSH ports connect seamlessly.
- Single standalone binary (
ferryx-cli) with zero GUI/WebKit dependencies - Outbound encrypted relay tunnel: no inbound SSH, open ports, or public IP needed
- Native terminal split-panes and remote Git worktrees run directly on the machine
# 1. Download ferryx-cli on the remote Linux machine (x64)
# Pinned to the most recent release that publishes this binary.
sudo curl -fsSL https://github.com/Indosaram/ferryx/releases/download/v2026.09.11.1/ferryx-cli -o /usr/local/bin/ferryx-cli
sudo chmod +x /usr/local/bin/ferryx-cli
# 2. Start the headless PTY daemon in background
nohup ferryx-cli --daemon > /tmp/ferryx.log 2>&1 &
# 3. Generate a 10-minute machine pairing PIN
ferryx-cli pair generate --access machine
# 4. In Ferryx Desktop, open Settings (Cmd+,) > Remote > [Pair with PIN] and enter the 6-digit PINTauri v2 with the platform's native WebKit or WebView2 engine, paired with a headless Rust PTY daemon. The core runs on macOS, Windows, and Linux; selected OS integrations such as launchd, Dock badges, color emoji, and vibrancy remain macOS-first.
- Tauri v2 shell
- Headless Rust PTY daemon
- macOS, Windows, Linux
Workspace state snapshots automatically and the background daemon reattaches, so an exit or crash never costs you work.
- Layout snapshots
- Daemon survives the GUI
- Reattach with output replay
An architecture inventory of Ferryx's native Ghostty and Rust components. This is not a performance benchmark against Electron-based AI IDEs or terminal emulators.
| Architecture component | Ferryx implementation |
|---|---|
| Terminal parser | libghostty-vt |
| Desktop rendering | WGPU native child surfaces |
| PTY lifecycle | Headless Rust daemon with output replay |
| Embedded browser | Native WebView split-tabs |
| Mobile pairing | PIN/QR gateway with a custom DOM terminal grid |
| Agent supervision | Manifest-driven status detection and notifications |
Practical walkthroughs:
- Running coding agents in parallel — why agents collide in a shared working directory, and how a worktree per agent fixes it
- Git worktrees in practice — the manual commands, and where the manual flow gets tedious
- Remote terminal access — checking a long run from your phone
Honest comparisons against the alternatives, on architecture and licensing rather than unmeasured performance claims:
- Ferryx vs Warp
- Ferryx vs Wave Terminal
- Ferryx vs Conductor
- Ferryx vs Crystal / Nimbalyst
- Ferryx vs tmux + git worktree
- Ferryx and Ghostty — Ferryx embeds libghostty-vt; it is not a Ghostty competitor
- Bun 1.1+
- Rust with Cargo 1.80+
- Node.js 20+
- Tauri CLI v2
git clone https://github.com/Indosaram/ferryx.git
cd ferryx
bun install --cwd ui
bun install --cwd siteThe Tauri shell starts the UI dev server defined in src-tauri/tauri.conf.json:
cd src-tauri && cargo tauri devAstro + Starlight on port 14173:
bun run --cwd site dev- Landing page: http://localhost:14173/
- Documentation: http://localhost:14173/docs/introduction/
- Shortcut reference: http://localhost:14173/docs/shortcuts/
bun run --cwd ui test
bun run --cwd site build
cd src-tauri && cargo checkferryx/
├── src-tauri/ # Rust Tauri v2 core: PTY daemon, IPC, notifications, remote gateway
├── ui/ # React frontend: native terminal surface, layout, remote pairing
├── site/ # Astro + Starlight landing page and docs, deployed to GitHub Pages
└── docs/ # Specifications, audit logs, and reference material
Rust native core (src-tauri) owns pseudoterminal lifecycles, manages Git worktree
leases, hosts native child webviews, and runs an authenticated Axum WebSocket gateway
for mobile pairing. Terminal sessions live in a headless daemon rather than the GUI, so
closing the window never touches a PTY. Output lands in a ring buffer with monotonic
sequence numbers, and reattaching replays from the last sequence.
Frontend (ui) is the React shell rendered inside WebKit or WebView2. It drives pane
tiling, agent title detection, keyboard shortcuts, and terminal search overlays.
Site (site) is the static Astro and Starlight build that hosts the landing page,
guides, and an embedded demo running the real product components.
Contributions are welcome. Branch from main, run the validation commands above, and
open a pull request describing the user-visible result.
Questions and ideas are welcome in Discord.
This project is licensed under the Sustainable Use License (SUL-1.0): free to use, modify, and share for personal and non-commercial purposes.
Free code signing provided by SignPath.io, certificate by SignPath Foundation.
- Maintainer: @Indosaram
- Privacy: Ferryx stores workspace data locally. Remote access, embedded websites, external coding agents, and update services can exchange data over the network. See the Ferryx Privacy Policy for data handling and deletion choices.