Skip to content

AliFozooni/switchboard

 
 

Repository files navigation

Switchboard

Your command center for Claude Code sessions.

Switchboard is a desktop app that gives you a unified view of all your Claude Code sessions across every project. Launch, resume, fork, and monitor sessions from a single window — no more juggling terminal tabs or digging through ~/.claude/projects to find that one conversation from last week.

Switchboard

Key Features

  • Session Browser — All your Claude Code sessions, 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
  • Plans & Memory — 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 — Picks up session names from Claude Code's /rename command automatically

Download

Grab the latest release for your platform:

Download Switchboard

  • macOS: .dmg (Apple Silicon & Intel)
  • Windows: .exe installer
  • Linux: .AppImage or .deb

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

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:

npm run electron

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 (x64 + arm64)

Output goes to dist/.

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 Releases

Set 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:

  1. App auto-downloads updates in the background
  2. A toast notification appears when the update is ready
  3. User can restart immediately or dismiss (installs on next quit)

Code Signing

For distribution, set these environment variables:

  • macOS: CSC_LINK (p12 certificate) and CSC_KEY_PASSWORD, or sign via Keychain
  • Windows: CSC_LINK and CSC_KEY_PASSWORD for EV/OV code signing
  • Set CSC_IDENTITY_AUTO_DISCOVERY=false to 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
public/            Renderer (HTML/CSS/JS)
scripts/           Build & postinstall scripts
build/             Icons, entitlements, builder resources
.github/workflows/ CI/CD

About

A desktop app for browsing, searching, and managing CLI coding sessions

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • JavaScript 79.2%
  • CSS 18.0%
  • HTML 2.8%