Stackriot ist eine native macOS-App (macOS 14+) für Entwickler, die mit mehreren Git-Branches gleichzeitig arbeiten. Sie kombiniert Git-Worktree-Management mit IDE-Integration, KI-Agenten, Node.js-Tooling und einer integrierten Run-Konsole – alles in einer übersichtlichen dreispaltigen Oberfläche.
- Klont Repositories als Bare-Repositories und verwaltet beliebig viele Git Worktrees pro Repository
- Erstellt neue Worktrees inkl. Branch-Anlage direkt aus der App
- Zeigt Worktree-Status: uncommitted changes, ahead/behind-Zähler, Konflikte
- Erkennt Abweichungen zum Default-Branch und bietet Rebase/Merge-Workflows an
- Integriert Worktrees zurück in den Default-Branch (inkl. Konflikt-Handling)
- Löscht Worktrees inkl. lokalem Branch nach dem Mergen
- Repositories lassen sich in Namespaces und Projekte gruppieren
- Mehrere Remotes pro Repository konfigurierbar (inkl. SSH-Key-Zuweisung pro Remote)
- Auto-Refresh aller Repositories im Hintergrund (konfigurierbares Intervall)
- Öffnet Worktrees direkt in Cursor, VS Code, Zed, Codex App, Xcode oder JetBrains-IDEs (IntelliJ IDEA, GoLand, PhpStorm, WebStorm)
- Öffnet Worktrees in einem externen Terminal: Terminal.app, iTerm2 oder Ghostty
- Zeigt den Worktree-Pfad im Finder an
- GitHub: PRs und Remote-Metadaten über die GitHub CLI (
gh) - Jira Cloud (optional): konfigurierbarer zweiter Ticket-Provider neben GitHub
- Weist jedem Worktree einen AI-Agent zu: Claude Code, Codex, GitHub Copilot (CLI), Cursor CLI oder OpenCode
- Startet den Agenten per AppleScript in einem Terminal.app-Fenster
- Überwacht den laufenden Agenten-Prozess via PID-Polling
- Zeigt laufende Agenten mit einem animierten lila Indikator in der Sidebar und in der Worktree-Liste
- Optionaler eingebauter MCP-Server (Model Context Protocol): in den Einstellungen aktivieren, Port und Zugriff steuern; externe Clients können sich per HTTP/SSE anbinden und registrierte Stackriot-Tools nutzen
- Führt Aktionen in Worktrees aus: Make-Targets, npm/pnpm/yarn-Scripts, Dependency-Installation, Git-Operationen
- Dev Containers: Anbindung an
devcontainer/ Docker-Workflows für containerisierte Umgebungen (siehe Einstellungen) - Zeigt die Ausgabe jeder Aktion in einem integrierten Terminal-Tab (Ziel-Engine:
libghostty; die Bridge ist standardmäßig gelinkt, mit Metal-backed SwiftTerm-Fallback bis der nativelibghostty-Runtime-Build vendored ist) - Verwaltet mehrere Tabs pro Worktree mit Tab-Pinning und konfigurierbarem Retention-Modus
- Speichert alle Runs mit Status (pending, running, succeeded, failed, cancelled) in SwiftData
- Verwaltet eine nvm-kompatible Node.js-Runtime automatisch (lts/* als Standard)
- Erkennt die benötigte Node-Version aus
package.json(engines-Feld),.nvmrcoder.node-version - Unterstützt npm, pnpm und yarn inkl. Corepack
- Automatische Runtime-Updates im Hintergrund
- Generiert und importiert SSH-Keys, speichert sie sicher im Keychain
- Konfiguriert die SSH-Umgebung für alle Git-Operationen automatisch
| Schicht | Details |
|---|---|
| Plattform | macOS 14+, Swift 6.3, SwiftUI, SwiftData |
| UI | Dreispaltige NavigationSplitView: Sidebar → Repository-Detail → Run-Konsole |
| State | AppModel (SwiftUI @Observable) als zentraler App-State |
| Services | Kern: RepositoryManager, WorktreeManager, WorktreeStatusService, IDEManager, SSHKeyManager. Integrationen: GitHubCLIService, JiraCloudService, AIProviderService. Tooling: NodeToolingService, NodeRuntimeManager, MakeToolingService, RunConfigurationDiscoveryService, DevToolDiscoveryService, DevContainerService, LocalToolManager. Agenten: AIAgentManager, ACPAgentDiscoveryService, ACPAgentRunService, AgentRawLogArchiveService. Sonstiges: MCPServerManager, Benachrichtigungen, globale Hotkeys, Kontext-Erfassung für Quick-Intent |
| Persistenz | SwiftData (Bare-Repository-Pfade, Worktrees, SSH-Keys, Runs, Action-Templates) |
| Terminal | Interne Engine-Auswahl libghostty / SwiftTerm; GhosttyKit.xcframework wird aus Vendor/Ghostty gebaut und gelinkt, SwiftTerm bleibt Fallback solange das native Runtime-Artefakt fehlt |
- macOS 14 (Sonoma) oder neuer
- Swift 6.3 (siehe
swift-tools-versionimPackage.swift) und eine Xcode-Version, die diese Toolchain mitliefert - Optionale CLI-Tools (je nach genutzter Funktion):
git,gh,node/nvm,make,claude,codex,cursor/cursor-agent,copilot,opencode,docker,devcontainerodernpx
swift build
swift testStackriot.xcodeproj öffnen und im Scheme Stackriot bauen oder ausführen.
make help listet alle Ziele. Wichtige Kurzform:
| Ziel | Zweck |
|---|---|
make debug-run |
Debug-Build und Start der App (Caches unter build/) |
make test |
swift test mit isoliertem TMPDIR/HOME unter build/ |
make production-build |
Release-App-Bundle nach build/DerivedData/Build/Products/Release/Stackriot.app |
make production |
Wie production-build, plus portables App-Bundle und ZIP unter build/production/ |
make dmg |
DMG mit Drag-&-Drop-Hilfe, Hintergrundgrafik und dieser README.md unter build/dmg/Stackriot.dmg |
make dmg-background |
Nur die DMG-Hintergrundgrafik erzeugen |
Ghostty ist als gepinnter Vendor unter Vendor/Ghostty eingebunden. Die nativen Artefakte werden aus diesem Source gebaut:
make vendor-libghosttyDas benötigt Zig 0.15.2 und erzeugt Vendor/Ghostty/macos/GhosttyKit.xcframework sowie Vendor/Ghostty/zig-out/lib/ghostty-vt.xcframework.
Dieses Projekt enthält keinen expliziten Lizenzeintrag.