Native terminal AI agents with git worktree isolation. Spec-driven development for parallel workflows.
Run GitHub Copilot CLI, Claude Code, Kilo Code, OpenCode, Codex, Gemini, Qwen, Factory Droid, and Amp nativelyβno wrappers, no limitations. Or use Terminal Only mode for manual work. Each session gets its own worktree.
π Docs | β Star this repo
Native Terminal Integration - Schaltwerk runs agentic coding CLIs directlyβno wrappers, no abstractions. You get the latest versions with all their features, exactly as you'd use them in your terminal. The difference is you can run multiple sessions simultaneously.
Efficient Multi-Agent Coordination - When running multiple agents, switching between them efficiently matters. Schaltwerk provides instant session switching (β1-9), always-visible specs, and clear activity overviews so you know what each agent is doing.
Advanced Agent Orchestration - Schaltwerk includes an MCP server, allowing one terminal agent to orchestrate multiple others. An orchestrator agent can control everything you canβcreating sessions, managing workflows, and coordinating parallel agents.
Spec-Driven Development - Write specs in markdown, start sessions from them, and re-implement when needed. Specs become your reusable backlog. If an agent goes off-track, dismiss the worktree and restart with a refined specβno cleanup needed.
Full Control & Privacy - GitHub-style diff reviews with inline comments you can paste back to the agent. Simultaneous spec view, diff view, and terminal output. Manual testing in the bottom terminal anytime. Schaltwerk doesn't track or trace your dataβuse public APIs or configure agents to run against your private endpoints (Azure, self-hosted, etc.).
- macOS 11+ (Big Sur or later)
- Windows 10/11 (native; WSL not yet supported)
- Linux - beta builds available via releases
- Git 2.30+
- At least one agentic coding CLI: GitHub Copilot CLI, Claude Code, OpenCode, Codex, Gemini, Qwen, Factory Droid, or Amp (or use Terminal Only mode for manual work)
- Install and launch Schaltwerk:
brew install --cask 2mawi2/tap/schaltwerk && open -a Schaltwerk - Open your project: drag the repo in or use
File β Open Projectβ¦. - Start an agent (
βN): choose GitHub Copilot, Claude Code, OpenCode, Qwen, Amp, or another AI and give it a task prompt. - Let the agent workβSchaltwerk spins up its own branch/worktree; use the second terminal to run tests or manual checks while it codes.
- Review diffs, leave comments, mark reviewed with
βR, then in Reviewed hit Merge/PR orββ§Mto squash-merge back to your branch.
Your agents now deliver isolated branches on autopilotβkeep switching with β1-9, rinse, and repeat.
Treat specs like a reusable backlog. Spin them up as sessions when you're ready, and if an experiment misses the mark, use
βSto discard the worktree, keep the spec, and relaunch later with fresh prompts.
Looking for multi-agent orchestration patterns? Check out the Scaffold β Swarm β Stabilize and Continuous Maintenance playbooks in the advanced workflows guide.
βββββββββββββββ βββββββββββββββ βββββββββββββββ
β SPEC β --> β RUNNING β --> β REVIEWED β
β (Planning) β β (Working) β β (Ready) β
βββββββββββββββ βββββββββββββββ βββββββββββββββ
β β β
Markdown Git Worktree Ready to Merge/PR
Document + Agent + Terminal to Main Branch
- Write Spec - Plan your feature/fix in markdown
- Start Session - Creates isolated git worktree + branch
- Agent Works - AI writes code in isolation
- You Review - Real-time diffs, local testing, write review comments like on GitHub on the changes
- Mark Ready - Move to reviewed column
- Merge/PR - Integrate validated changes
Session Management
- Create sessions from specs or start directly with
βN - Switch between sessions instantly with
β1-9 - Mark sessions reviewed with
βRwhen ready - Merge or create PRs with
ββ§M - Dismiss worktrees with
βSwhile keeping specs
UI Components
- Spec panel - View and edit session specs
- Diff panel - GitHub-style code review with inline comments
- Dual terminals - Agent terminal + your testing shell per session
- Session overview - See all agents (running, idle, reviewed)
- Activity indicators - Real-time status for each session
Git Integration
- Automatic worktree creation per session
- Isolated branches (no conflicts between agents)
- Squash-merge to main with one command
- Direct PR creation via GitHub CLI integration
- Session resumption support (Claude Code, Codex)
Agent Configuration
- Custom environment variables per agent
- Configure arguments for each CLI
- Run against private APIs (Azure, self-hosted)
- No data tracking from Schaltwerk
- MCP server for orchestrator agents
- Terminal Only mode for manual work without AI agents
See Quick Start for the basic Homebrew installation (macOS).
Download the latest Windows installer (.exe or .msi) from GitHub Releases and run it. WSL is not yet supportedβuse native Windows Git and terminals.
Download the .deb or .AppImage from GitHub Releases.
Security approval required: System Settings β Privacy & Security β Open Anyway
The Homebrew cask now cleans up old installs automatically. If you're on 0.2.2 or an older build that refuses to upgrade, do a one-time cleanup and reinstall:
brew uninstall --cask --force schaltwerk
rm -rf /opt/homebrew/Caskroom/schaltwerk/0.2.0/Schaltwerk.app
brew install --cask 2mawi2/tap/schaltwerkAfter this reset, future brew upgrade --cask schaltwerk runs will succeed without manual steps.
See installation docs for manual install and troubleshooting.
Built with Tauri (Rust backend + React/TypeScript frontend), git worktrees for isolation, and PTY terminals for native shell emulation.
We actively welcome contributionsβwhether that's reporting issues, improving docs, or shipping code. Start with CONTRIBUTING.md for ways to get involved and the project's quality checklist.
Install dependencies with bun install (or npm install if you prefer), then choose the workflow that suits you best. The Justfile lists optional recipes if you prefer using just; each recipe maps to standard package-manager/cargo commands you can run directly.
# Optional helpers via just (install with brew install just)
bun install # or: npm install
just test # Run full validation suite before commits
just run # Start dev app with hot reload
just release # Create new release (patch/minor/major)# Or stick with plain package-manager/cargo commands
bun run test # or: npm run test
bun run tauri:dev # or: npm run tauri:dev
bun run tauri:build # or: npm run tauri:buildGitHub Actions builds and updates the Homebrew tap automatically.
MIT