Skip to main content
Requirements: macOS (Apple Silicon or Intel), Windows 10/11, or Linux with Git installed

Installation

Quick Install (Homebrew)

1

Install Schaltwerk

brew install --cask 2mawi2/tap/schaltwerk
2

Launch the app

open -a Schaltwerk

Manual Installation

1

Download the application

Go to the Releases page and download Schaltwerk-<version>-macos-universal.app.tar.gz
2

Extract and install

# Extract the archive
tar -xzf Schaltwerk-*-macos-universal.app.tar.gz

# Move to Applications folder
mv Schaltwerk.app /Applications/

# Remove quarantine attribute
xattr -cr /Applications/Schaltwerk.app
3

Launch from Applications

Open Finder, navigate to Applications, and double-click Schaltwerk

First Launch Setup

Since Schaltwerk is distributed without an Apple Developer certificate, macOS Gatekeeper will block the initial run.
1

Attempt first launch

Try launching Schaltwerk from your terminal or by double-clicking the app. You’ll see a security warning.
2

Open System Settings

Navigate to System Settings → Privacy & Security
3

Approve the application

  1. Scroll down to find: “Schaltwerk was blocked from use because it is not from an identified developer”
  2. Click Open Anyway beside the warning
  3. Enter your password if prompted
4

Confirm launch

Launch Schaltwerk again and click Open when the confirmation dialog appears
After approving once, Schaltwerk will launch normally on future runs.
Next step: Your First Session to create and run an agent

Automatic Updates

Schaltwerk checks for updates on startup and applies them automatically by default. You can:
  • Toggle automatic installs in Settings → Version
  • Trigger a manual check at any time with the “Check for updates” button
A toast notification appears once an update has been installed—restart Schaltwerk to launch the new build.
macOS: If an update fails because the system cannot replace the existing bundle, reopen Schaltwerk directly from /Applications or reinstall from the latest tarball.Windows: If an update fails, try running the installer again as Administrator, or download the latest installer from the releases page.

Where Schaltwerk Stores Data

macOS: ~/Library/Application Support/schaltwerk/settings.jsonWindows: %APPDATA%\schaltwerk\settings.jsonLinux: ~/.config/schaltwerk/settings.jsonStores agent binaries, CLI args, and personal defaults
macOS: ~/Library/Application Support/schaltwerk/<project-name>/database.dbWindows: %APPDATA%\schaltwerk\<project-name>\database.dbLinux: ~/.local/share/schaltwerk/<project-name>/database.dbStores sessions, specs, and project-level environment variables
Location: <repo>/.schaltwerk/worktrees/<session-name>/Created for each running session and removed when you cancel (same on all platforms)
macOS: ~/Library/Application Support/schaltwerk/logs/Windows: %APPDATA%\schaltwerk\logs\Linux: ~/.local/share/schaltwerk/logs/Development builds: Keep 3 days of logs (cleaned on startup)Production builds: File logging disabled by default. Enable with:
# macOS
SCHALTWERK_ENABLE_LOGS=1 open /Applications/Schaltwerk.app

# Windows (PowerShell)
$env:SCHALTWERK_ENABLE_LOGS=1; & "C:\Program Files\Schaltwerk\Schaltwerk.exe"

# Linux
SCHALTWERK_ENABLE_LOGS=1 schaltwerk
Retention: Adjust retention window (default 72 hours) using the SCHALTWERK_LOG_RETENTION_HOURS environment variable.

Development Setup (Optional)

If you plan to build or extend Schaltwerk from source:
git clone https://github.com/2mawi2/schaltwerk.git
cd schaltwerk
bun install
# or: npm install
bun run tauri:dev
# or: npm run tauri:dev
Use bun run test (or npm run test) to run the full validation suite (TypeScript linting, cargo clippy, cargo test, and a release build check).

Troubleshooting

Remove the quarantine attribute:
xattr -cr /Applications/Schaltwerk.app
Re-sign the application:
codesign --force --deep -s - /Applications/Schaltwerk.app
Check if it was installed to the Homebrew prefix:
ls -la $(brew --prefix)/bin/schaltwerk
  1. Go to System Settings → Privacy & Security → Developer Tools
  2. Add Terminal.app or your preferred terminal
  3. Restart Schaltwerk
Schaltwerk runs an API server on port 8547. Find and kill the conflicting process:
# Find what's using the port
lsof -i :8547

# Kill the process if needed
kill -9 <PID>

Uninstallation

brew uninstall schaltwerk

Security Considerations

Schaltwerk is distributed without code signing certificates (Apple Developer on macOS, EV certificate on Windows) to keep it free and open. Ad-hoc signing provides basic code integrity verification.

What Permissions Does Schaltwerk Need?

  • File System Access: To read and write session files
  • Process Spawning: To create terminal sessions (PTY)
  • Network Access: Local API server on port 8547
  • No Special Entitlements: No camera, microphone, or contacts access

Is It Safe?

All code is open source and auditable
No external network connections (only localhost)
No telemetry or data collection
Built and signed via GitHub Actions for transparency