Your command center for CLI coding sessions.
Switchboard is a desktop app that gives you a unified view of all your coding agent sessions across every project. Launch, resume, fork, and monitor sessions from a single window — no more juggling terminal tabs or digging through ~/.claude/projects and ~/.codex/sessions to find that one conversation from last week.
Supported CLIs
Claude Code (claude) |
Codex (codex) |
|
|---|---|---|
| Browse & search history | ✅ | ✅ |
| Resume a session | ✅ | ✅ |
| Start a new session | ✅ | ✅ |
| Fork a session | ✅ | ✅ |
| Read in the message viewer | ✅ | ✅ |
| Status & activity indicators | ✅ | ✅ |
| IDE emulation (diff review) | ✅ | — |
| Plans & memory files | ✅ | — |
Sessions from both CLIs share one sidebar, each row marked with its own logo. A fork runs on the CLI that wrote the session being forked.
Turn either CLI off under CLI Agents in Settings. A switched-off CLI is not scanned, not watched, not offered when you start a session, and its sessions are hidden — but its history is kept, so switching it back on restores everything straight away. At least one CLI always stays on.
Key Features
- Session Browser — All your sessions from every supported CLI, organized by project, searchable by content
- Built-in Terminal — Connect to running sessions or launch new ones without leaving the app
- Status Notifications — In-app alerts when a session is waiting for permission approval or user input
- Fork & Resume — Branch off from any point in a session's history
- Full-Text Search — Find any session by what was discussed, not just when it happened
- Per-CLI Launch Options — Claude sessions offer permission mode, worktree and Chrome; Codex sessions offer sandbox policy, approval policy and model. Set them per session, per project, or globally
- IDE Emulation (Claude only) — Switchboard acts as an IDE for Claude CLI, showing file diffs and opens in a side panel where you can accept, reject, or edit changes before they're applied. Supports both inline and side-by-side diff views. Disable this in Global Settings if you prefer Claude to use your own editor (VS Code, Cursor, etc.)
- Plans & Memory (Claude only) — Browse and edit your plan files and CLAUDE.md memory in one place
- Activity Stats — Heatmap of your coding activity across all projects
- Session Names (Claude only) — Picks up session names from Claude Code's
/renamecommand automatically
Session Grid Overview
Toggle the grid overview from the sidebar for a bird's-eye view of all your open sessions at once, grouped by project.
- Live terminals — Every open session renders its full terminal in a card, so you can monitor multiple agents simultaneously, whichever CLI each one is running.
- Status at a glance — Each card shows a running/stopped/busy indicator dot and last-activity timestamp.
- Click to focus, double-click to expand — Click a card header to focus it; double-click to switch back to single-terminal view for that session.
- Persistent — Grid preference is saved across restarts.
File Preview Side Panel & Claude IDE MCP Emulator
Switchboard can act as an IDE for your Claude Code sessions. This one is Claude-only — it speaks Claude CLI's own IDE protocol, and Codex sessions are launched without it. When enabled, Claude's file opens and proposed edits appear in a side panel next to the terminal instead of being sent to an external editor.
- Diff review — When Claude proposes a file change, it shows up as a diff in the side panel. You can review the changes and accept or reject them directly.
- Inline & side-by-side — Toggle between inline (unified) and side-by-side diff views. Your preference is remembered across sessions.
- Partial acceptance — In inline mode, you can accept or reject individual chunks within a diff, then submit the final result.
- File viewer — Clickable file links in terminal output (OSC 8 hyperlinks) open in the side panel with syntax highlighting.
To disable IDE emulation entirely (e.g. if you want Claude to use VS Code or Cursor instead), uncheck IDE Emulation in Global Settings. This stops Switchboard from registering as an IDE, so Claude CLI will discover and connect to your real editor. Changes take effect on new sessions — running sessions are not affected.
Status Notifications
Switchboard monitors all your sessions in the background — Claude and Codex alike — and shows status indicators in the sidebar so you can tell at a glance which sessions need attention, even when you're working in a different one.
- Waiting for input — A session that needs your response is highlighted so you don't miss it.
- Permission approval — When a session is blocked waiting for a permission grant or an approval, its badge lets you know immediately. Switchboard reads each CLI's own wording, so Claude's permission prompts and Codex's approval requests both register.
- Activity indicators — See which sessions are actively running, idle, or finished.
Editor
| Shortcut | Action |
|---|---|
Cmd+F / Ctrl+F |
Find in file (also works in terminal) |
Cmd+G / Ctrl+G |
Go to line |
Download
Grab the latest release for your platform:
- macOS:
.dmg(Apple Silicon & Intel) - Windows:
.exeinstaller - Linux:
.AppImage,.deb, or.pacman(Arch/Manjaro)
Prerequisites
- Node.js 20+
- npm 10+
- Platform build tools for native modules:
- macOS: Xcode Command Line Tools (
xcode-select --install) - Linux:
build-essential,python3(sudo apt install build-essential python3) - Windows: Visual Studio Build Tools or
npm install -g windows-build-tools
- macOS: Xcode Command Line Tools (
Development Setup
# Install dependencies (runs postinstall automatically) npm install # Start the app npm start
npm start bundles CodeMirror and launches Electron. For faster iteration after the first run:
Building
All build commands bundle CodeMirror first, then invoke electron-builder.
# Current platform npm run build # Platform-specific npm run build:mac # DMG + zip (arm64 + x64) npm run build:win # NSIS installer (x64 + arm64) npm run build:linux # AppImage + deb + pacman (x64 + arm64)
Output goes to dist/.
Building on Arch / Manjaro
The deb and pacman targets are built via the fpm binary bundled by
electron-builder, which links against libcrypt.so.1. Arch ships libxcrypt
without that legacy ABI, so install the compat shim once:
sudo pacman -S libxcrypt-compat
AppImage builds without it.
The pacman package is published as switchboard-doctly rather than
switchboard because the Arch extra repo already ships a package named
switchboard (elementary OS's Pantheon Control Center). Renaming avoids the
file-conflict that would block installation alongside it. The app itself is
still called Switchboard everywhere users see it — only the package identity
changes. Uninstall later with sudo pacman -R switchboard-doctly.
Releasing
Releases are driven by git tags:
git tag v0.1.0 git push origin v0.1.0
The GitHub Actions workflow builds for all platforms and publishes to GitHub Releases. You can also release locally:
npm run release # builds + publishes to GitHub ReleasesSet GH_TOKEN in your environment (a GitHub personal access token with repo scope).
Auto-Updates
The app uses electron-updater to check for updates from GitHub Releases on launch and every 4 hours. Updates are only checked in packaged builds (not during development). The flow:
- App auto-downloads updates in the background
- A toast notification appears when the update is ready
- User can restart immediately or dismiss (installs on next quit)
Code Signing
For distribution, set these environment variables:
- macOS:
CSC_LINK(p12 certificate) andCSC_KEY_PASSWORD, or sign via Keychain - Windows:
CSC_LINKandCSC_KEY_PASSWORDfor EV/OV code signing - Set
CSC_IDENTITY_AUTO_DISCOVERY=falseto skip signing (CI artifact builds)
The macOS build uses custom entitlements (build/entitlements.mac.plist) to allow JIT and unsigned memory execution, required by native modules (node-pty, better-sqlite3).
Project Structure
main.js Electron main process
preload.js Context bridge (IPC bindings)
db.js SQLite session cache & metadata
harnesses/ Per-CLI modules (claude, codex) + registry
public/ Renderer (HTML/CSS/JS)
scripts/ Build & postinstall scripts
build/ Icons, entitlements, builder resources
.github/workflows/ CI/CD



