A native terminal
for coding agents.

For macOS, Windows and Linux. Claude Code, Codex and any CLI agent keep running when you close the app, remote Linux boxes connect without SSH, and every tab shows which agent is waiting on you.

macOS, Windows, and Linux · source-available under the Ferryx License · product facts

Skip past the live preview

See the workspace before you install

A web demo of the desktop app’s sidebar, tabs and split panes, with a scripted agent session. Ferryx itself is a native app, not a browser app.

The live preview loads as you scroll to it.

Why Ferryx

Speed. Isolation. Total control.

Ferryx pairs a headless Rust daemon that outlives the window with a measured WGPU terminal path and a leak-checked libghostty-vt boundary.

Rendering

Native Ghostty & wgpu Engine

Desktop terminal panes render directly via native libghostty and a GPU-accelerated wgpu pipeline for crisp font rasterization and low-latency throughput.

  • libghostty terminal core
  • wgpu GPU pipeline
  • 50-frame offscreen p50 3.10 ms on M4 Max

Agents

Multi-Agent Workspaces

Orchestrate parallel AI coding agents (Claude, Codex, Antigravity) in isolated split-panes with real-time status indicators.

  • Isolated worktree per agent
  • Live status indicators
  • Launch from the tab bar

Layout

Flexible Split-Pane Tiling

Arbitrary vertical and horizontal terminal splits with responsive pointer drag resizing and smooth layout transitions.

  • Vertical & horizontal splits
  • Pointer drag resizing
  • Drag tabs into any pane

Remote

Mobile Web Pairing

Secure, authenticated remote web access after you sign in to your Ferryx account with an email magic link. Stream terminal output through a dependency-free DOM grid and steer agent workflows on the go.

  • Account sign-in pairing
  • Streamed terminal grid
  • Steer agents from a phone

Architecture

Zero Electron Overhead

Built on Tauri v2 and native WebView2/WebKit engines paired with a headless Rust PTY daemon. The core is cross-platform; selected OS integrations remain macOS-first.

Read the architecture deep dive →
  • Tauri v2 shell
  • Headless Rust PTY daemon
  • Cross-platform core, macOS-first integrations

Reliability

Resilient Persistence

Workspace state snapshots automatically, and the background daemon keeps sessions alive when the app quits or updates. Stopping the daemon or rebooting the host can still end live terminals.

  • Layout snapshots
  • Daemon survives the GUI
  • Reattach with replay

Next release

A Supervisor for Your Agent Lanes

On main, not in the current download yet. The supervisor watches each supervised pane, sends agent questions to your Inbox, phone or Slack instead of answering for you, shows each lane's goal and next step, and confirms that an instruction it sends actually started a turn.

  • Questions go to you; it never picks an answer for you
  • Holds off while you type; Take over pauses it
  • Shows exactly what it typed

Agents

Works with the agents you already use

Any command that runs in a terminal runs in a pane — Claude Code, Codex, Antigravity (agy), or anything else you can type.

Status detection ships for the 16 agents above and reads each pane as working, waiting on you, or idle. It drives the pane status indicator, desktop notifications, and the Dock attention badge on macOS.

Architecture, Not a Benchmark

A source-linked inventory of what Ferryx implements. It does not claim comparative performance without comparative measurements.

Implementation Inventory

Each row names the repository location that supports the claim.

ComponentFerryx implementationEvidence
Terminal parserlibghostty-vtsrc-tauri/src/native_terminal/sys/ffi.rs
Desktop rendererWGPU native child surfacessrc-tauri/src/native_terminal/renderer/
PTY lifecycleHeadless Rust daemon with sequenced replaysrc-tauri/src/daemon/ · terminal/output_hub.rs
Embedded browserNative WebView split-tabsui/src/components/browser/
Mobile terminalDependency-free DOM gridui/src/remote/RemoteTerminal.tsx
Agent supervisionManifest-driven status detectionsrc-tauri/src/agent_detect/