A macOS 26+ native terminal application built on libghostty with Liquid Glass UI.
- libghostty terminal engine -- Metal GPU-accelerated rendering via Ghostty v1.3.1 submodule
- Liquid Glass UI -- native macOS 26 Tahoe design language with customizable theme color (8 presets + custom hex/color picker; Ghostty preset reads your Ghostty config's background color). Text color adapts automatically: Ghostty preset follows Ghostty's foreground config, other presets switch between white/black based on theme color luminance (demo video)
- Tab Groups -- 10 color presets, collapsible/expandable sections with chevron toggle, double-click to rename groups or individual tabs, drag-to-reorder tabs in tab bar and sidebar
- Split Panes -- horizontal and vertical splits with directional focus navigation
- Command Palette -- search and execute all operations with
Cmd+Shift+P - Session Persistence -- tabs, splits, and working directories auto-saved and restored on restart
- Desktop Notifications -- OSC 9/99/777 support with rate limiting
- Browser Integration -- WKWebView tabs alongside terminal tabs (http/https only, non-persistent storage, popup blocking)
- Scrollback Search --
Cmd+Fto search terminal scrollback with match highlighting,Cmd+G/Cmd+Shift+Gto navigate matches - Drag and Drop -- drag files, URLs, or text onto the terminal to insert content (file paths are shell-escaped)
- Smooth Scrolling -- trackpad uses full smooth pixel scrolling via sub-row CALayer transform; notched mouse wheel adds a velocity-based animation for smoother transitions. Togglable in Settings
- Native Scrollbar -- system overlay scrollbar for terminal scrollback
- Cursor Click-to-Move -- click on a prompt line to reposition cursor (requires shell integration)
- Git Source Control -- sidebar Changes view with working changes (staged/unstaged/untracked), commit graph with branch visualization, and inline diff viewer with review comments
- Diff Review Comments -- click the gutter
+button to add inline comments to diff lines, then Submit Review to send directly to a Claude Code, Codex, OpenCode, or Hermes terminal tab (demo video) - AI Agent IPC -- MCP server for communication between AI agent instances (Claude Code, Codex CLI, OpenCode, Hermes) across tabs and panes (demo video)
- LSP Proxy MCP -- exposes language server features such as hover, definition, references, rename, and diagnostics to AI agents over the same MCP server as AI Agent IPC. Missing servers can be auto-installed via Settings.
- Scriptable Browser -- 25 CLI commands for browser automation (like cmux): snapshot, click, fill, eval, screenshot, wait, get-attribute, get-links, get-inputs, is-visible, hover, scroll. No enable step needed.
calyxCLI bundled in the app - Ghostty config compatibility -- reads
~/.config/ghostty/config(most keys hot-reload on save; see Settings for Calyx-managed keys) - Compose Overlay -- floating text editor over the terminal for comfortable multiline input (
Cmd+Shift+E), useful for writing long commands or AI prompts (demo video) - Quick Terminal -- system-wide drop-down terminal toggled via global keybind
- Clipboard Confirmation -- prompts before pasting potentially unsafe content (respects Ghostty's
clipboard-paste-protectionsetting) - Secure Keyboard Entry -- prevents other apps from intercepting keystrokes (toggle via app menu)
- Auto-update -- Sparkle-based updates for direct downloads (Homebrew installs use
brew upgrade)
| Shortcut | Action |
|---|---|
Ctrl+Shift+] |
Next group |
Ctrl+Shift+[ |
Previous group |
Ctrl+Shift+N |
New group |
Ctrl+Shift+W |
Close group |
| Shortcut | Action |
|---|---|
Cmd+T |
New tab |
Cmd+W |
Close tab |
Cmd+1--9 |
Switch to tab |
Cmd+Shift+] |
Next tab |
Cmd+Shift+[ |
Previous tab |
| Shortcut | Action |
|---|---|
Cmd+D |
Split right |
Cmd+Shift+D |
Split down |
Cmd+Option+Arrow |
Focus between splits |
| Shortcut | Action |
|---|---|
Cmd+F |
Find in terminal |
Cmd+G |
Next match |
Cmd+Shift+G |
Previous match |
Escape |
Close search bar |
| Shortcut | Action |
|---|---|
Cmd+Shift+U |
Jump to most recent unread notification tab |
| Shortcut | Action |
|---|---|
Cmd+Shift+P |
Command palette |
Cmd+Shift+E |
Toggle compose overlay |
| Shortcut | Action |
|---|---|
Enter |
Send text to terminal |
Shift+Enter |
Insert newline |
Escape |
Close overlay |
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, ack_messages, get_peer_status
To disable, open the command palette and run Disable AI Agent IPC.
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.
- 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 Proxy 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.
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
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/elementThe 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.
brew tap yuuichieguchi/calyx
brew install --cask calyx- Download
Calyx.zipfrom the latest release - Unzip the file
- Drag
Calyx.appinto/Applications
Direct downloads include automatic update checking via Sparkle. Homebrew installs are updated via brew upgrade.
- macOS 26+ (Tahoe)
- Xcode 26+
- Zig (version matching ghostty's
build.zig.zon) - XcodeGen (
brew install xcodegen)
# 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 buildCalyx 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
- 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.
This project is licensed under the MIT License.
Built on libghostty by Mitchell Hashimoto (MIT License).
