The open-source multi-agent workspace. Run multiple Claude Code, Codex, and Bash sessions in parallel β each in its own branch and worktree. Inspect diffs, commit, and push from one window.
Switchboard is a desktop app for managing parallel coding agent sessions without the friction of terminal tabs and branch juggling. Each session gets a real interactive PTY, optional git worktree isolation, and a built-in git panel β all with the native terminal feel you expect.
Built for multi-agent workflows: one agent implementing, another investigating, another running commands β all safely isolated in the same repo.
If you like Conductor, Switchboard offers a similar workflow with an open-source, terminal-native, local-first approach.
Download the latest release (macOS, Apple Silicon & Intel).
Or install from the command line:
curl -fsSL https://raw.githubusercontent.com/nsoybean/switchboard/main/scripts/install.sh | bashYou'll also need at least one of: Claude Code or Codex.
macOS Gatekeeper notice: Since the app is not yet code-signed with an Apple Developer certificate, macOS may block it from opening. To bypass this, run:
xattr -cr /Applications/Switchboard.appThen open the app normally.
Claude Code and Codex are great in the terminal. The friction starts when you want to run several sessions at once, compare approaches, or keep multiple changes in flight without stepping on your own work.
Switchboard gives you:
- Parallel native sessions β every agent runs in a real PTY, so the experience matches the CLI you already use
- One place to supervise everything β see active sessions, paused sessions, and sessions that need input at a glance
- Per-session worktree isolation β spin up separate worktrees so agents can work in parallel without clobbering each other
- Built-in git workflow β inspect diffs, stage files, commit, push, and create PRs without leaving the app
- Local-first history and resume β reopen past Claude Code and Codex sessions from local history and jump back into the work
- Keyboard-friendly control β switch sessions, open the git panel, and get back to the terminal fast
Early alpha. The core works β you can spawn Claude Code and Codex sessions, interact with them, switch between them, manage git, and resume past sessions. Building in public.
What's working:
- Interactive terminal sessions via PTY (portable-pty β xterm.js)
- Agent picker (Claude Code / Codex / Bash)
- Session sidebar with status indicators
- Past session loading from Claude Code's local storage
- Session resume via
claude --resume - Git panel with diff viewer, staging, commit, push
- Git worktree management
- File tree viewer
- Token usage / cost tracking
- Keyboard shortcuts
- Session persistence across app restarts
Coming next:
- Comparison mode β same task to different agents, side-by-side diff
- Stream View β all terminals visible in a horizontal scroll
- Background tasks β queue up prompts for agents to run without manual interaction
| Layer | Technology |
|---|---|
| Desktop framework | Tauri v2 (Rust) |
| Frontend | React 19 + TypeScript + Tailwind CSS |
| Terminal emulation | xterm.js v6 + WebGL addon |
| PTY management | portable-pty (custom Tauri commands) |
| Git operations | Git CLI subprocess |
| State management | React Context + useReducer |
ββββββββββββββββββββββββββββββββββββββββββββββββββββ
β FRONTEND (React + xterm.js) β
β β
β Sidebar βββ Terminal (xterm.js) βββ Git Panel β
β β β
β usePty hook β
β β Tauri events β
ββββββββββββββββββββββββΌββββββββββββββββββββββββββββ€
β BACKEND (Rust / Tauri v2) β
β β
β PTY commands ββ Session commands ββ Git commands β
β (portable-pty) (persistence) (git CLI) β
β β β
β ββββββββββββββΌβββββββββββββ β
β βΌ βΌ βΌ β
β ~/.claude/ git worktree ~/.switchboard/ β
β (read only) CLI sessions.json β
ββββββββββββββββββββββββββββββββββββββββββββββββββββ
The PTY pipeline is the core β portable-pty spawns agent processes, a background thread streams output via Tauri events to xterm.js, and user keystrokes flow back. The terminal renders identically to running the agent in your native terminal.
Contributions welcome. This is an early-stage project β if you're interested in multi-agent workflows, git worktree tooling, or terminal emulation in desktop apps, there's plenty to work on.
- Node.js 20+
- Rust 1.77+
- Tauri CLI prerequisites (platform-specific)
- At least one of: Claude Code, Codex
git clone https://github.com/nsoybean/switchboard.git
cd switchboard
npm install
npm run tauri devnpm run tauri buildProduces .dmg (macOS) or .AppImage (Linux) in src-tauri/target/release/bundle/.
# Run Rust tests
cargo test --manifest-path src-tauri/Cargo.toml
# TypeScript check
npx tsc --noEmit- Font: JetBrains Mono
- Spacing: 4px base unit
- Aesthetic: Terminal-native, dense, minimal chrome
- Theme: Light and dark mode
The landing page lives in landing/ and is a static Next.js site deployed to GitHub Pages via GitHub Actions.
cd landing
npm install
npm run devDeployed at nsoybean.github.io/switchboard.
MIT
