Desktop app for supervising Claude Code sessions across multiple projects.
Download · Features · How it works · Development
You run Claude Code in multiple projects. You close the terminal, lose track of which session was doing what. You have no way to know if a background task finished. You restart and can't resume where you left off.
Orbit wraps Claude Code CLI in a native desktop app. You keep all your projects open as tabs, resume any session after restart, and get notified when a background session needs attention.
- Session persistence — close the app, reopen later, resume exactly where you left off
- Live status indicators — see which sessions are working, idle, or waiting for input — per project, in real time
- Tab notifications — tab flashes when a background session completes
- Multi-project tabs — switch between projects without killing sessions
- Multi-session per project — run several Claude sessions and plain terminals in parallel
- Prompt navigation — jump between prompts in terminal scrollback
- Auto session naming — titles generated via Claude Haiku from your first prompt
- Mode toggle — supervised (asks permissions) or autonomous (runs freely)
Orbit detects session state (working / idle / waiting) through Claude Code hooks — not by parsing terminal output. On first launch, Orbit automatically adds hooks to your project's .claude/settings.local.json (the local settings file that isn't committed to git). If the file doesn't exist, it's created.
The hooks write state to ~/.orbit/session-state.json. Orbit watches this file with a native filesystem watcher and updates the UI in real time.
Orbit never modifies your global Claude Code settings (
~/.claude/settings.json). Only project-local settings are touched. The one exception is the status line script (~/.claude/statusline.sh) which Orbit creates on first launch with your permission.
| Platform | Architecture | Download |
|---|---|---|
| macOS | Apple Silicon | .dmg |
| Windows | x64 | .msi |
| Linux | x64 | .deb / .AppImage |
Claude Code CLI installed and authenticated.
Requires Node.js 20+ and Rust 1.75+.
npm install # Install dependencies
npm run tauri dev # Launch app in dev mode
npm test # Run tests (171 tests)
npx tsc --noEmit # Typecheck
npm run tauri build # Production build for current platformsrc/ React 19 + TypeScript
core/ Zustand store, types, API layer
features/terminal/ xterm.js terminal + PTY hooks
layout/ TabBar, Sidebar, StatusBar
modals/ Preferences, NewProject
lib/ Analytics, themes, parsers
src-tauri/src/ Rust backend
pty.rs PTY lifecycle (spawn/write/resize/kill)
claude.rs CLI integration + session hooks
watcher.rs Filesystem watcher for session state
terminal.rs Editor integration, scrollback
Frontend: React 19, TypeScript, Zustand, xterm.js · Backend: Rust, Tauri 2, portable-pty · Build: Vite, Cargo · CI: GitHub Actions
Contributions welcome. Please open an issue first to discuss what you'd like to change.
