Features
Command Palette
Cmd+Shift+P opens a search over every menu command (plugin commands included), the workspaces and tabs of all windows, bookmarks and themes. Matching is fuzzy, and recent picks rank higher. Each command shows its shortcut; commands that can't run right now are dimmed.
- Prefixes —
>commands,@workspaces,#tabs,:themes - Theme preview — Highlighting a theme previews it live; Esc reverts
- Keys — Up/Down move, Return runs, Esc closes
Workspaces
Open folders as workspaces with their own file tree using Cmd+Shift+N (home directory) or Cmd+Shift+O (choose folder). Each workspace maintains its own state, color, and name.
- Workspace colors — Assign preset or custom colors per workspace
- Pinning — Pin frequently used workspaces
- Color by project — With Settings → Layout → Color new workspaces by project, each new workspace gets a color derived from its repository (or folder). The same project gets the same color every time; a color you pick wins.
- Renaming — Double-click a workspace pill to rename it, or use the right-click context menu
- Session persistence — Workspace names, colors, split layouts, tab paths, and split pane ratios are saved to
~/.boo/session.jsonand restored on next launch. Remote connections are not restored; tabs reopen at their local working directory. - Drag to switch workspace — While dragging a tab, hover over a workspace pill for ~500 ms to spring-load into that workspace, then drop the tab onto any pane there.
Recipes
A recipe is a workspace you can open again: a folder plus a layout of panes, each with tabs that start in a given directory and can run a command. Recipes are JSON files in ~/.boo/recipes/; open one from File → Recipes, the command palette, or run_recipe over the socket and MCP.
{
"name": "web",
"folder": "~/code/app",
"layout": {
"split": "right", "ratio": 0.6,
"a": { "tabs": [{ "command": "pnpm dev" }, {}] },
"b": { "split": "down",
"a": { "tabs": [{ "cwd": "./api", "command": "pnpm test --watch", "env": { "PORT": "4000" } }] },
"b": {} } }
}A node is either a pane (tabs, empty for one plain shell) or a split: "right" puts a left of b, "down" puts it above, and ratio (default 0.5) is a's share. A tab's cwd is absolute, ~/…, or relative to folder. File → Recipes → Save Workspace as Recipe… writes the current layout and tab folders. It never stores commands to run: each tab's last command is kept as lastCommand, so copy it into command if the tab should run it. A recipe whose folder no longer exists opens nothing and says why.
Split Panes
Split your terminal in any direction:
- Cmd+D — Split right
- Cmd+Shift+D — Split down
- Cmd+] / Cmd+[ — Focus next / previous pane
- Cmd+Opt+Arrows — Select the pane in that direction
- Cmd+Ctrl+Arrows / Cmd+Ctrl+Shift+Arrows — Resize / swap panes
- Cmd+Shift+Return — Zoom the active pane; Cmd+Ctrl+= — equalize splits
Each split pane is independent with its own tab bar and terminal sessions. Drag the divider between panes to resize, or drag a tab onto a pane edge to split; ratios are saved and restored across launches.
Broadcast Input
Terminal → Broadcast Input to → All Panes in Workspace sends what you type in one pane to every other terminal pane of the workspace, for running the same command on several hosts. Selected Panes… starts with the active pane; ⌘-click other panes to add or remove them. Broadcasting panes have an orange border and the status bar reads "Broadcasting to N panes" (click it to stop). Keys and pastes are mirrored; Boo shortcuts are not. Panes running an agent never receive broadcast input, even if one starts later. Broadcast stops when you switch workspaces or only one pane is left in the group.
Multiple Windows
Cmd+N opens a new window. Drag a tab out of the window to tear it off, move a workspace with Window → Move Workspace to New Window (or the workspace context menu), or bring everything back with Window → Merge All Windows. All windows are restored on next launch.
See Windows & Splits for the full guide.
Quick Terminal
Press Opt+Space from any app to drop a terminal down from the top of the screen; press it again to hide it. The shells keep running while it is hidden, and its tabs come back on the next launch.
- Tabs — Cmd+T opens a tab in the current directory, Cmd+W closes it, Cmd+Opt+1-9 switches. Click a tab to select it, middle-click to close
- Hides on focus loss — Clicking another window hides it; turn this off in Settings
- Settings → Keyboard Shortcuts → Quick Terminal — change the hotkey (like
ctrl+`,cmd+shift+torf12), the height, or turn the hotkey off. Window → Toggle Quick Terminal works either way
The quick terminal has no splits. While the hotkey is on, Opt+Space no longer types a non-breaking space in other apps.
Per-Pane Tabs
Each pane has its own tab bar. Create new terminal tabs with Cmd+T (browser tabs with Cmd+Shift+T), close with Cmd+W, and switch with Cmd+Opt+1-9 or Cmd+Shift+1-9. Closed tabs can be reopened with Cmd+Opt+Z. Tabs can also host a browser, text editor, image viewer, or markdown preview — see Multi-Content Tabs.
Smart close order: tab → pane → workspace.
- Right-click a tab — Context menu with "Close Tab" (or "Close Workspace" when it's the only tab) and a "Move Tab to Workspace →" submenu listing all other open workspaces.
- Drag tabs across workspaces — Drag a tab to a different pane or split zone in the current workspace, or use the workspace pill hover to move it to another workspace entirely. Moving the last tab out of a workspace prompts to close that workspace.
- Tab groups — Drag a tab onto the middle of another tab in the same pane, or right-click → Add to New Group, to group them under a colored chip named after the folder. Click the chip to collapse the group to the chip alone (it shows the tab count); picking a hidden tab by shortcut or palette opens it again. Right-click a grouped tab to rename, recolor, collapse, remove it from the group or ungroup. Dragging a tab between two tabs of a group adds it; dragging it out removes it. Groups are saved with the session.
- Vertical tabs — Settings → Layout → Tab Overflow → Vertical moves each pane's tabs into a column on its left (up to 168pt, at most 40% of a narrow pane). Each row shows the title and, under it, the agent status (with its color) or the folder of a running program. Groups get a header row with their chip. Rows scroll with the trackpad; drag to reorder, onto a row's middle to group.
- Progress bars — Programs that report progress with OSC 9;4 (cargo, winget, systemd and others) show a thin bar on their tab. The workspace pill shows its furthest-along bar and the Dock icon shows one for all windows. Errors are red, paused is yellow, and an indeterminate report fills the bar. Bars clear when the command finishes or after 15 minutes without a report. Try
printf '\e]9;4;1;50\a'.
Command Blocks
Boo's shell integration marks each prompt (OSC 133), so the terminal knows where every command and its output begin and end.
- Gutter marks — A thin tick at the left edge of each prompt; red when the command failed
- Jump — Cmd+Up / Cmd+Down scroll to the previous / next prompt
- Right-click a command — Copy Command, Copy Output, Re-run, or send its output to an agent
- Copy Last Output — Cmd+Opt+C copies the output of the last command
Session Recording
Terminal → Record Session records the active terminal's output as an asciicast v2 file. The tab shows a red dot while recording. Choose the item again to stop; Finder then shows the file in ~/.boo/recordings/. Only output and resizes are recorded, never keystrokes. Closing the tab also stops the recording.
Terminal → Open Recording…, or opening any .cast file, plays it in a player tab:
- Play / Pause — the button or Space; Left / Right jump 5 seconds
- Seek — drag the position slider
- Speed — 0.5×, 1×, 2× or 4×
- Pauses longer than 2 seconds are shortened to 2 seconds (or to the file's
idle_time_limit) - The terminal keeps the recorded size; if the tab is smaller, the edges are cut off
File Explorer
Toggle the sidebar with Cmd+B. The explorer shows a live-updating file tree for the current workspace.
- Local workspaces — Uses FSEvents for real-time file system watching
- Remote SSH / Mosh — Auto-detects SSH-style sessions and reuses shared connections for file listing when possible
- Remote containers / VMs / devices — Auto-detects interactive
docker,podman,nerdctl,kubectl,oc,lxc,limactl,colima,distrobox,toolbox,vagrant, andadb shellsessions and runs the appropriate listing command for each tool
Local explorer:
- Multi-select — Cmd+click toggles, Shift+click / Shift+↑↓ extends a range
- Keyboard navigation — Arrows, Return to open, F2 rename, Cmd+Delete to Trash, type-ahead to jump (see shortcuts)
- Filter bar — Fuzzy-filter the whole tree; press / to focus it
- Git status — VS Code–style badges (M, A, D, R, U, !) on files, rolled up to folders; git-ignored files are dimmed
File click behavior (local files):
- Text/code files matching the editor file patterns — Built-in editor tab (
textOpenMode; can also run your terminal editor or open externally) - Images — Image viewer tab (
imageOpenMode; or inline via the Kitty Graphics Protocol, or the default macOS app) - Markdown — Rendered preview tab (
markdownOpenMode; or editor, terminal editor, or external app) - PDF — Browser tab (
pdfOpenInBrowser, on by default) - HTML — Browser tab when
htmlOpenInBrowseris enabled (off by default) - Other files — Opens with the default macOS app
Configure all of this in Settings → Plugins → Files. See Multi-Content Tabs.
Themes
32 built-in color themes with live preview swatches in settings:
| Theme | Variants |
|---|---|
| Default | Dark, Light |
| Catppuccin | Mocha, Macchiato, Frappé, Latte |
| Tokyo Night | — |
| Dracula | — |
| Nord | — |
| Solarized | Dark, Light |
| Gruvbox | Dark, Light |
| One | Dark, Light |
| Rosé Pine | — |
| Kanagawa | — |
| Everforest | Dark, Light |
| GitHub | Dark, Light |
| Ayu | Dark, Light |
| Monokai | — |
| Material | Dark, Light |
| Palenight | — |
| Horizon Dark | — |
| Cobalt2 | — |
| Night Owl | — |
| Synthwave '84 | — |
| Moonlight | — |
Sidebar Plugins
The sidebar shows stacked, collapsible panels powered by the plugin system:
- Files — Live file tree for the current directory. Supports local (FSEvents) and remote (SSH, Mosh, containers, VMs, and device shells) browsing. Click to open, right-click for context menu.
- Git — Branch name, staged/unstaged/untracked files, ahead/behind. Inline stage/unstage buttons. Refresh on file system changes.
- Agents — Agent Center for Claude Code, Codex, and OpenCode: open sessions, config, and diffs. Show Timeline replays a Claude Code session: prompts, tool calls, tokens, cost and edited files.
- Snippets — Saved code snippets with syntax highlighting and quick insertion.
- Docker — Running containers with exec, logs, start/stop/restart. Live updates via
docker eventsstream. Local sessions only. - Bookmarks — Saved directory shortcuts with per-host namespacing for remote sessions.
- System — CPU, memory, disk, network, load, uptime and battery, with quick
df -h/top/netstat/uptimeactions. Optional status bar readouts. - Debug — Live log of plugin lifecycle events and current terminal state, for plugin authors.
Toggle panels via status bar icons or extend with custom plugins.
Agents
Boo tracks coding agents running in your terminals across all windows:
- Agent inbox — See which agents are working or waiting; Cmd+Shift+J jumps to the next waiting one
- Agent tasks — File → New Agent Task… starts an agent in its own git worktree
- Review mode — File → Review Changes… opens a diff tab where you comment on lines and send feedback back (Cmd+Return)
- Handoff — Cmd+Opt+Return sends the terminal selection or last command output to the nearest agent
- Timeline — File → Agent Timeline replays a session with tokens and estimated cost
- Remote approve — Approve or deny waiting agents from the remote control page
See Agents for the full guide.
MCP Server
Boo --mcp runs a stdio MCP server that lets agents read the pane layout, split panes, read or type into other panes, list agents, start agent tasks and open reviews. See Agents.
Git Integration
The status bar shows the current git branch name. Click it to open a branch switcher showing both local and remote branches. The Git sidebar panel shows changed files with inline stage/unstage actions.
Status Bar
Configurable segments displayed at the bottom of the window:
- Environment — Colored dot + label showing the active environment (
local,ssh,mosh,docker,kubectl, and other supported remote types) - Git branch — Current branch name with switcher popup
- Path — Current working directory
- Running process — Foreground process (zsh, node, vim, etc.)
- Plugin icons — Toggle icons for Files, Git, Docker, Bookmarks panels
- Pane count — Number of active panes and tabs
- Clock — Current time
Toggle individual segments in Settings → Status Bar, including path visibility and git branch display.
Settings
Open with Cmd+,. Organized in tabs:
| Tab | Options |
|---|---|
| General | Core editor and file-opening preferences |
| Theme | 32 color themes with live preview, custom theme editor (whole UI restyles live while editing) |
| Appearance | Terminal font, font size, cursor style (block/beam/underline/outline); sidebar font and font size |
| Status Bar | Toggle individual segments (connection, path, git branch, process, pane count, clock) |
| Layout | Sidebar position (toggle with Cmd+B), workspace bar position, tab overflow mode (scroll/wrap/vertical) |
| Editor | Built-in text editor preferences |
| Browser | Browser tab history and behavior |
| Notifications | Notification preferences |
| Plugins | Enable/disable plugins, per-plugin settings (file explorer icons/hidden files, git settings) |
| Shortcuts | Searchable keyboard shortcut reference |
