Skip to content

Roost

Roost is a desktop terminal multiplexer for AI coding agents. It runs on macOS and Linux, presents a sidebar of projects with tabs inside each project, and notifies you when an agent in a tab needs your attention.

The terminal engine is libghostty-vt, the parser/screen-state library extracted from Ghostty. Roost ships two native UIs — Swift + AppKit on macOS (Roost.app) and Rust + gtk4-rs on Linux (roost). There is no daemon: each UI embeds the workspace, the PTY supervisor, and a JSON IPC server in-process. External tooling (roostctl, Claude Code hooks) reaches the running UI over a Unix domain socket speaking newline-delimited JSON; see IPC for the wire format. Persistence is a small state.json written atomically.

A legacy Go + GTK4 prototype is retained for reference. See Legacy (Go prototype) if you're running that binary.

Install

Linux (Ubuntu Noble / Pop!_OS 24.04+) via apt — add the apt.stridelabs.ai repo once, then:

sudo apt install roost

macOS — download Roost-<version>.dmg from the latest GitHub release and drag Roost.app into /Applications.

Building from source instead? See Installation.

What it does

  • One window with a project sidebar and per-project tabs.
  • One libghostty-vt terminal per tab, persistent across restarts.
  • Companion CLI (roostctl) for firing notifications from inside a tab.
  • OSC 9 / OSC 777 fallback so non-CLI tools still trigger notifications.
  • Native desktop notifications when a non-focused tab pings you.

What it is not

  • Not a Ghostty replacement.
  • Not a tmux replacement.
  • Not multi-window — one window, projects in the sidebar, tabs in each project.
  • Not split-pane — one terminal per tab.
  • Not a browser host.
  • Not a Windows app — macOS and Linux only.

Quick example

# From inside any Roost tab — fires a notification on this tab.
roostctl notify --title "Build done" --body "tests pass"

If the tab is not currently focused you'll see:

  • A needs attention indicator on the tab in Roost.
  • A native desktop notification (macOS Notification Center or freedesktop notifications on Linux).

Next steps

  • Installation — apt + DMG, plus the from-source toolchain and how to verify the install.
  • First Run — what happens on launch and where state lives.
  • Keybindings — tab and project switching, platform-native modifiers.
  • Notifications — how the notification pipeline works.
  • Claude Code Hooks — wire roostctl notify into Claude.
  • Architecture — how the UIs, IPC socket, and CLI fit together.
  • Vision — the durable design decisions and migration path.