The open source terminal built for coding agents. Native macOS, powered by Ghostty.
Run many coding agents in parallel and always know which one needs you.
- Agent status, always visible. Every workspace shows working, blocked, or idle. Claude Code, Codex, and OpenCode report it directly; agents without hooks (Gemini CLI, Copilot CLI, Cursor Agent, Aider) get it from reading the terminal screen against patterns you can override in
~/.config/programa/agent-detection/. - Notifications built for agents. A waiting agent's pane gets a ring, its tab lights up, and ⌘⇧U jumps to the latest unread.
- Vertical workspace sidebar. Git branch, PR status, working directory, listening ports, and the latest notification for every workspace, at a glance.
- Diff review panel. Split a review panel beside an agent's terminal, comment on the diff, and send the comments straight into the agent's input. It refreshes itself when the agent goes idle.
- Git worktrees as workspaces.
programa worktree create <branch>checks out a worktree and opens it as its own workspace, badged under its parent repo. - In-app browser. Split a scriptable browser next to your terminal; agents can snapshot the page, click, fill forms, and evaluate JS against your dev server.
- Native and fast. Swift/AppKit with libghostty rendering, no Electron. Reads your existing
~/.config/ghostty/configfor themes, fonts, and colors.
More: named layouts (programa layout save/apply), SSH workspaces where browser panes route through the remote network, a markdown viewer panel, instant agent splits (⌘D / ⌘⇧D, ⌘⇧C for Claude Code), the command palette (⌘⇧P), and a CLI plus Unix-socket JSON-RPC API scriptable end to end.
or
brew tap darkroomengineering/programa
brew install --cask programaPrograma auto-updates: every commit on main that passes CI ships automatically as the latest release. On relaunch it restores layout, directories, scrollback, and browser state. Live processes don't survive a relaunch yet.
Running many agents in Ghostty splits, the problem was never the terminal. It was knowing which agent needed me. Native notifications all say "waiting for your input" with no context, and GUI orchestrators lock you into their workflow (and Electron).
Programa is a terminal, a browser, notifications, workspaces, and a CLI to control all of it, primitives you compose yourself rather than a prescribed workflow. What you build with them is yours.
⌘⇧P opens the command palette, which lists every action. Full reference: docs/keyboard-shortcuts.md. Everything is editable in Settings → Keyboard Shortcuts.
Agents running inside programa (Claude Code, Codex, OpenCode) can drive the app itself, splitting panes, reading a sibling pane's output, spawning and coordinating a helper agent, all without stealing your focus. programa claude/codex/opencode install-integration installs SKILL.md alongside the existing hooks; see docs/agent-skill.md for the full walkthrough.
darkroom.engineering · Issues · Discussions · @darkroomengineering
GPL-3.0-or-later. Programa began as a GPL fork of cmux by Manaflow, Inc.; modifications © Darkroom Engineering.
