Calyx
Health Pass
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 265 GitHub stars
Code Pass
- Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
A native macOS terminal app built on Ghostty for running and supervising coding agents
Calyx
Run more coding agents without babysitting more terminals.
Calyx is a native macOS terminal for running and supervising coding agents (Claude Code, Codex, OpenCode, and Hermes...) in parallel. It keeps every agent visible and controllable with one approval inbox, live status, persistent sessions, agent-readable command history, and inline diff review -- without replacing the terminal workflow you already use.
Documentation · Latest release · MIT license
Demo
Three Claude Code agents run in parallel while Calyx keeps approvals and command output in one control surface (36s):
https://github.com/user-attachments/assets/a04e1161-e296-4791-9b7c-3ef84d990089
Install
Homebrew
brew tap yuuichieguchi/calyx
brew install --cask calyx
Manual download
- Download
Calyx.zipfrom the latest release. - Unzip it and move
Calyx.appto/Applications.
Calyx requires macOS 26 Tahoe or later. Direct downloads update through Sparkle; Homebrew installations update with brew upgrade.
Why Calyx
See which agent needs you
The Agents Sidebar shows every connected agent as working, blocked, idle, or done. Unread badges and click-to-focus navigation replace the loop of checking terminal tabs one by one.
Approve tool calls from one inbox
Claude Code and Codex permission prompts appear in a shared in-window approval queue. Inspect the exact request, allow or deny it, and move through pending requests without hunting for the pane that raised them. Enable the integration explicitly in Settings; nothing is automatically approved unless you separately opt in.
Review code without leaving the terminal
Inspect working changes and commit history in the Git sidebar, add comments to individual diff lines, and submit the complete review directly to a Claude Code, Codex, OpenCode, or Hermes pane.
Give agents a terminal they can understand
Calyx exposes panes, commands, captured output, browser tabs, language servers, and peer agents through MCP and its bundled CLI. Agents can coordinate work, wait for commands to finish, and inspect results instead of relying on sleep timers or copied output.
Features
Agent supervision
- Agents Sidebar -- live status for Claude Code, Codex, OpenCode, and Hermes, with unread badges, last-seen timestamps, and click-to-focus navigation
- Approval Inbox -- one opt-in queue for Claude Code and Codex permission prompts across every pane, with Allow, Deny, per-pane or global session-scoped approval, and safe fallback to the agent's own prompt
- Approval Queue Navigation -- inspect and decide pending requests in any order, with automatic navigation to the nearest remaining request
- Agent Cockpit -- MCP tools for listing, creating, and splitting panes; commands and keystrokes remain approval-gated unless auto-approve is enabled
- Command Log -- structured commands, working directories, exit status, and captured output exposed to agents through MCP; known secret patterns are redacted before exposure
Code review and agent coordination
- Git Source Control -- working changes, staging state, commit graph, branch visualization, and inline diffs in the sidebar
- Diff Review Comments -- comment on individual lines and submit a complete review directly to an agent pane (demo video)
- AI Agent IPC -- built-in MCP messaging lets agents discover and communicate with peers across tabs and panes (demo video)
- LSP Proxy MCP -- hover, definition, references, rename, diagnostics, and other language-server features for agents; missing servers can be installed from Settings
Sessions and remote work
- Persistent Sessions -- opt-in daemon-backed terminals survive app quit and crashes, with a Session Browser, recovery flow, and optional on-disk history
- Remote Sessions -- deploy
calyx-sessiononce to an SSH host from~/.ssh/config, then browse and reattach to remote persistent sessions - Agent Resume -- offer to resume the agent CLI conversation associated with a reattached session
- Layout Restore -- restore tabs, splits, and working directories on launch
- herdr Integration -- browse and manage herdr workspaces as native split-pane tabs; herdr-hosted agents also appear in the Agents Sidebar
Terminal workspace
- libghostty Engine -- Metal GPU-accelerated rendering powered by Ghostty v1.3.1
- Tab Groups and Split Panes -- color-coded collapsible groups, tab renaming and reordering, horizontal and vertical splits, directional focus, and split zoom
- Command Palette -- search and run operations with
Cmd+Shift+P - Ghostty Compatibility -- read
~/.config/ghostty/config, hot-reload most settings, and bind Calyx operations through Ghostty keybind actions - Search and Navigation -- highlighted scrollback search, native overlay scrollbar, smooth trackpad and mouse-wheel scrolling, and prompt-line cursor click-to-move
- Input Tools -- shell-escaped drag and drop, multiline Compose Overlay, clipboard safety confirmation, and Secure Keyboard Entry
- Quick Terminal and Notifications -- a system-wide drop-down terminal plus OSC 9/99/777 desktop notifications
- Liquid Glass Appearance -- macOS 26-native glass UI, eight theme presets, custom colors, and adaptive text color (demo video)
Browser automation
- Browser Tabs -- non-persistent WKWebView tabs alongside terminal tabs, limited to http and https with popups blocked
- Scriptable Browser -- 25 bundled
calyx browsercommands for accessibility snapshots, clicking, filling, evaluation, screenshots, waits, and inspection
Keyboard Shortcuts
Group Operations (Ctrl+Shift)
| Shortcut | Action |
|---|---|
Ctrl+Shift+] |
Next group |
Ctrl+Shift+[ |
Previous group |
Ctrl+Shift+N |
New group |
Ctrl+Shift+W |
Close group |
Tab Operations (Cmd)
| Shortcut | Action |
|---|---|
Cmd+T |
New tab |
Cmd+W |
Close focused pane (whole tab if nothing narrower to close) |
Cmd+Option+W |
Close tab |
Cmd+Shift+W |
Close window |
Cmd+Shift+Option+W |
Close all windows |
Cmd+1--9 |
Switch to tab |
Cmd+Shift+] |
Next tab |
Cmd+Shift+[ |
Previous tab |
Split Operations
| Shortcut | Action |
|---|---|
Cmd+D |
Split right |
Cmd+Shift+D |
Split down |
Cmd+Option+Arrow |
Focus between splits |
Search
| Shortcut | Action |
|---|---|
Cmd+F |
Find in terminal |
Cmd+G |
Next match |
Cmd+Shift+G |
Previous match |
Escape |
Close search bar |
Notifications
| Shortcut | Action |
|---|---|
Cmd+Shift+U |
Jump to most recent unread notification tab |
Global
| Shortcut | Action |
|---|---|
Cmd+Shift+P |
Command palette |
Cmd+Shift+E |
Toggle compose overlay |
Cmd+Shift+B |
Session Browser |
Cmd+Enter / Ctrl+Cmd+F |
Toggle full screen |
Compose Overlay
| Shortcut | Action |
|---|---|
Enter |
Send text to terminal |
Shift+Enter |
Insert newline |
Escape |
Close overlay |
IPC (Inter-Pane Communication)
AI agent instances (Claude Code, Codex CLI, OpenCode, Hermes) running in different Calyx tabs or panes can communicate with each other via a built-in MCP server.
- Open the command palette (
Cmd+Shift+P) and run Enable AI Agent IPC - Start agents (Claude Code, Codex, OpenCode, or Hermes) in two or more terminal panes
- Each instance automatically registers as a peer and can send/receive messages
Config is auto-written to ~/.claude.json, ~/.codex/config.toml, ~/.config/opencode/{opencode.json,AGENTS.md}, and ~/.hermes/config.yaml when the respective tool is installed. Restart running agent instances to pick up the new MCP server.
Available MCP tools: register_peer, list_peers, send_message, broadcast, receive_messages, get_peer_status. receive_messages deletes each message from the inbox as it returns it, so a message is only ever delivered once.
The same server exposes cockpit tools that control Calyx (pane_list, pane_split, tab_create; approval-gated: pane_run, pane_send_keys, palette_execute) and command-log tools (terminal_list_commands, terminal_read_output, terminal_await_command; requires the zsh/fish shell integration, installed automatically while Settings -> Agents -> Track shell commands is on). Command text and output are redacted for known secret patterns (tokens, passwords, API keys, JWTs) before agents can read them; output still being redacted reports {"output_pending": true} from terminal_read_output until it finishes.
To disable, open the command palette and run Disable AI Agent IPC.
LSP Proxy MCP
Calyx can expose language server features to CLI AI agents through the same MCP server used by AI Agent IPC. Agents can call tools such as lsp_hover, lsp_definition, lsp_references, lsp_rename, and lsp_diagnostics to get symbol-aware results from TypeScript, Python, Rust, Go, Swift, and other language servers instead of relying on grep.
Setup
- Open the command palette (
Cmd+Shift+P) and run Enable AI Agent IPC. - Restart or reconnect your AI agent so it picks up the
calyx-ipcMCP server. - Optional: open Settings -> LSP and enable auto-install for missing language servers.
Calyx keeps language servers running in the background, syncs file changes from disk, and starts the right server on the first lsp_* call for a workspace.
Browser Scripting
Agents can programmatically control browser tabs via 25 CLI commands, similar to cmux's browser automation.
- Open a browser tab and navigate to a page
- Use
calyx browsercommands from any terminal tab — no enable step needed
CLI Commands
calyx browser list # List all browser tabs
calyx browser snapshot --tab-id <id> # Accessibility tree with element refs
calyx browser get-text h1 --tab-id <id> # Get element text
calyx browser click a --tab-id <id> # Click element
calyx browser fill input --value "text" # Fill input field
calyx browser eval 'document.title' # Execute JavaScript
calyx browser screenshot # Capture to temp file
calyx browser wait --selector ".loaded" # Wait for condition
calyx browser get-attribute a href # Get element attribute
calyx browser get-links # List all links (JSON)
calyx browser get-inputs # List all form inputs (JSON)
calyx browser is-visible '#sidebar' # Check element visibility
calyx browser hover '#menu-item' # Hover over element
calyx browser scroll down --amount 500 # Scroll page/element
The calyx CLI binary is bundled inside Calyx.app/Contents/Resources/bin/. To install it to your PATH, run Install CLI to PATH from the command palette.
The browser server starts automatically with the app and listens on localhost:41840. Connection info is written to ~/.config/calyx/browser.json.
Building from Source
Prerequisites
- macOS 26+ (Tahoe)
- Xcode 26+
- Zig (version matching ghostty's
build.zig.zon) - XcodeGen (
brew install xcodegen)
Building
# Clone with submodules
git clone --recursive https://github.com/yuuichieguchi/Calyx.git
cd Calyx
# Build libghostty xcframework
cd ghostty
zig build -Demit-xcframework=true -Dxcframework-target=native
cd ..
# Copy framework
cp -R ghostty/macos/GhosttyKit.xcframework .
# Generate Xcode project & build
xcodegen generate
xcodebuild -project Calyx.xcodeproj -scheme Calyx -configuration Debug build
Architecture
Calyx uses AppKit for window, tab, and focus management with SwiftUI for view rendering, bridged via NSHostingView.
- All ghostty C API calls go through the
GhosttyFFIenum @MainActorenforced on all UI and model code- Action dispatch via
NotificationCenter
Tech stack: Swift 6.2, AppKit, SwiftUI, libghostty (Metal), XcodeGen
Contributing
Bug reports and feature ideas are welcome as issues. External pull requests are not accepted. See CONTRIBUTING.md.
Known Limitations
- Cursor click-to-move on full-width text -- cursor placement may be offset on Japanese/full-width text lines because Ghostty's cursor-click-to-move internally translates clicks into arrow-key steps over terminal cells.
- Calyx-managed config keys --
background-opacity,background-blur,background-opacity-cells,font-codepoint-map,foregroundare overridden by Calyx for Glass UI. See Settings > Ghostty Config Compatibility for the full list.
License
This project is licensed under the MIT License.
Acknowledgements
Built on libghostty by Mitchell Hashimoto (MIT License).
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found