Alles was du wissen musst, nichts was du nicht brauchst.
English | Català | Deutsch | Español | Svenska
Wir schreiben 2026. Wir bauen auf tmux (2007), Git-Worktrees (2015), Terminals (1978, die VT100-Ära, als selbst David nur ein Zukunftsprojekt war) und GPU-Rendering (danke Mitchell für Ghostty). Alte Werkzeuge, neue Tricks.
Du brauchst zwei Dinge: einen Mac und das vage Gefühl, dass dein aktueller Workflow besser sein könnte.
brew install --cask factory-floor
Factory Floor funktioniert am besten, wenn diese Tools installiert sind (die App sagt dir, wenn etwas fehlt):
Keine Konfigurationsdateien nötig. Factory Floor erkennt dein Git-Setup, installierte Tools und GitHub-Verbindungen automatisch.
Die drei Dinge, mit denen du jeden Tag arbeitest.
Ein Projekt ist ein Git-Repository. Ziehe ein Verzeichnis auf die Seitenleiste oder klicke den +-Button. Factory Floor prüft, ob es ein Git-Repo ist (und bietet an, eines zu initialisieren, wenn nicht).
Die Projektübersicht zeigt Repository-Infos, GitHub-Details (Sterne, Forks, offene Issues), bis zu 5 aktuelle PRs und automatisch erkannte Markdown-Dokumentation aus deinem Repo.
Projekte werden standardmäßig nach Zuletzt (letzte Aktivität) sortiert. Wechsle zu A-Z, wenn du so einer bist.
Rechtsklicke auf ein Projekt in der Seitenleiste für Schnellzugriff: Im Finder anzeigen, In externem Terminal öffnen, Auf GitHub öffnen oder Entfernen (Dateien bleiben auf der Festplatte, wir sind keine Ungeheuer).
Ein Workstream ist, wo die Arbeit stattfindet. Jeder bekommt seinen eigenen Git-Worktree, Branch, Terminal, Coding-Agent und Browser-Tab. Sie sind vollständig voneinander isoliert.
⌘N erstellt einen neuen Workstream. Hinter den Kulissen:
ff).env und .env.local aus dem Hauptrepo (wenn aktiviert)Die Oberfläche erscheint sofort — die Worktree-Erstellung läuft im Hintergrund.
Mit aktiviertem Auto-rename branch in den Einstellungen benennt der Coding-Agent deinen Branch beim ersten Prompt passend zur Aufgabe um. So wird ff/coral-tidal-reef zu ff/fix-login-timeout.
Wenn ein PR gemergt wurde, zeigt Factory Floor ein „Purge"-Badge, damit du weißt, dass du sicher aufräumen kannst.
Der Coding-Agent-Tab führt Claude Code in einem integrierten Terminal aus. Er sitzt direkt nach dem Info-Tab in jedem Workstream.
Schnellaktionen führen einmalige Claude-Aufgaben aus der Seitenleiste aus:
Diese laufen als Hintergrund-claude -p-Aufrufe. Aktiviere Quick action debug mode in den Einstellungen, wenn du wissen willst, wie die Wurst gemacht wird. Vertrau uns, David hat mehr Zeit als er zugeben will damit verbracht, seltsame Verhaltensweisen dort drin zu debuggen.
Terminals, Browser und Tastaturkürzel — die Werkzeuge in jedem Workstream.
Terminals werden GPU-gerendert über Ghostty. Sie sind schnell.
Du kannst Dateien und Text auf das Terminal ziehen. Weil manchmal die Maus völlig in Ordnung ist, ehrlich.
⌘Shift+E öffnet das Workstream-Verzeichnis in deiner bevorzugten externen Terminal-App.
Jeder Workstream kann Browser-Tabs haben (⌘B). Der Browser ist integriert — kein Fensterwechsel nötig.
Wenn dein Run-Skript einen Dev-Server startet, erkennt Factory Floor den lauschenden Port automatisch und navigiert den Browser dorthin. Keine Konfiguration nötig. Der ff-run-Launcher überwacht den Prozessbaum nach TCP-Listenern.
Der Browser zeigt eine Verbindungsfehler-Seite mit einem Retry-Button, wenn der Server noch nicht bereit ist. Er navigiert automatisch, sobald der Port erkannt wird.
Factory Floor ist tastaturorientiert. Hier ist alles.
| Kürzel | Aktion |
|---|---|
| ⌘N | Neuer Workstream (oder Projekt, wenn keines existiert) |
| ⌘Shift+N | Neues Projekt |
| ⌘, | Einstellungen |
| ⌘/ | Hilfe |
| ⌘Option+S | Seitenleiste ein-/ausblenden |
| Kürzel | Aktion |
|---|---|
| ⌘1-9 | Tab wechseln |
| ⌘Shift+[ | Vorheriger Tab |
| ⌘Shift+] | Nächster Tab |
| ⌘Return | Coding-Agent fokussieren |
| ⌘T | Neues Terminal |
| ⌘B | Neuer Browser |
| ⌘W | Tab schließen |
| ⌘Shift+W | Workstream archivieren |
| ⌘L | Adressleiste (Browser) |
| ⌘Shift+Return | Starten/Neustart |
| Kürzel | Aktion |
|---|---|
| ⌘[ | Vorheriger Workstream |
| ⌘] | Nächster Workstream |
| ⌘↑ | Vorheriges Projekt |
| ⌘↓ | Nächstes Projekt |
| ⌘0 | Zurück zum Projekt |
| ⌘Option+B | In externem Browser öffnen |
| ⌘Option+T | In externem Terminal öffnen |
So automatisierst du die langweiligen Teile.
Lege eine .factoryfloor.json in dein Projektstammverzeichnis, um den Workstream-Lebenszyklus zu automatisieren.
{
"setup": "npm install",
"run": "PORT=$FF_PORT npm run dev",
"teardown": "docker-compose down"
}
| Hook | Wann es läuft |
|---|---|
setup |
Einmal, wenn ein Workstream erstellt wird. Abhängigkeiten installieren, Migrationen ausführen, was auch immer. |
run |
Auf Abruf über den Environment-Tab. Eingebettet in ff-run für Port-Erkennung. |
teardown |
Wenn ein Workstream archiviert oder bereinigt wird. Container stoppen, aufräumen. |
Alle Felder sind optional. Skripte laufen im Workstream-Verzeichnis mit deiner Login-Shell. Ja, sogar fish. Frag nicht, wie lange das gedauert hat.
Factory Floor liest auch .emdash.json, conductor.json und .superset/config.json, wenn .factoryfloor.json nicht existiert. Weil Kompatibilität höflich ist. (Zeit für einen Standard?) Bei Fallback-Konfiguration injiziert Factory Floor kompatible Umgebungsvariablen, damit Skripte ohne Änderung funktionieren (z.B. CONDUCTOR_PORT, EMDASH_PORT, SUPERSET_PORT_BASE).
Geteiltes Layout: Setup links, Run rechts.
Jedes Terminal, Setup-Skript und Run-Kommando in einem Workstream hat diese Variablen:
| Variable | Was es ist | Beispiel |
|---|---|---|
FF_PROJECT |
Projektname | my-app |
FF_WORKSTREAM |
Workstream-Name | coral-tidal-reef |
FF_PROJECT_DIR |
Hauptrepository-Pfad | /Users/you/my-app |
FF_WORKTREE_DIR |
Worktree-Pfad | ~/.factoryfloor/worktrees/my-app/coral-tidal-reef |
FF_PORT |
Deterministischer Port (40001-49999) | 42847 |
FF_DEFAULT_BRANCH |
Standard-Branch (main, master, etc.) | main |
Jeder Workstream bekommt einen deterministischen Port basierend auf einem Hash des Worktree-Pfads. Gleicher Workstream, gleicher Port, jedes Mal. Keine Port-Konflikte zwischen Workstreams. Verwende ihn in deinem Run-Skript: PORT=$FF_PORT npm run dev. Falls du tausende Workstreams gleichzeitig laufen lässt, bekommst du vielleicht eine Kollision 🎲, aber hoffentlich geht dir vorher der Speicher aus.
Wenn aktiviert (Settings > General), erstellt Factory Floor Symlinks für .env und .env.local aus deinem Hauptrepo in jeden Worktree. So folgen dir deine Geheimnisse ohne Kopieren und Einfügen. Apropos Geheimnisse, haben wir dir schon von Vaultuner erzählt?
Öffne mit ⌘, oder klicke auf das Zahnrad-Symbol.
ff).env und .env.local in WorktreesFactory Floor mit allem anderen verbinden.
Installiere den ff-Befehl über Settings > Environment > Install CLI. Dann:
ff /path/to/your/project
Öffnet das Verzeichnis in Factory Floor. Das ist alles, was er tut, und das ist alles, was er tun muss.
Erfordert die gh CLI mit Authentifizierung (gh auth login).
Aus der Seitenleiste Ein-Klick-Operationen ausführen: Create PR (KI-generierter Titel und Beschreibung), Push (zu Origin mit -u) oder Abandon PR (schließt mit Kommentar). Weil wenn du es satt hast, „now commit, push, and open a PR" zum hundertsten Mal in Claude zu tippen, bist du nicht allein.
Factory Floor zeigt ein Badge in der Seitenleiste, wenn eine neuere Version verfügbar ist. Du kannst auch manuell prüfen über Factory Floor > Check for Updates…
Homebrew-Nutzer:
brew upgrade factory-floor
DMG-Nutzer: Updates werden automatisch über Sparkle verwaltet. Manuell prüfen über das Menü: Factory Floor > Check for Updates…
Aktiviere Bleeding edge updates in Settings > Advanced für Vorabversionen. Für alle, die gerne am Limit leben und Fehlerberichte einreichen.
Nö. Kein Syntax-Highlighting, kein Autocomplete, keine Minimap. Unsere nicht existierenden VCs haben keine Unternehmensagenda vorangetrieben. Wir wollen, dass du die Werkzeuge verwendest, die du bereits liebst: Zed, VS Code, was auch immer. Factory Floor gibt dir einen Coding-Agent, einen Browser und einen Worktree. Außerdem, wer schreibt heutzutage noch Code?
Auch nö. Dein Git-Client macht das schon besser als wir es jemals könnten. Wir sorgen nur dafür, dass jeder Workstream einen sauberen Branch hat, der für Review bereit ist. Du hältst deine PRs doch klein und vermeidest Merge-Konflikte, oder? …Oder?
Factory Floor erkennt Tools aus deiner Login-Shell. Wenn claude, gh, git oder tmux nicht auftauchen:
-L factoryfloor), deine persönliche tmux-Konfiguration stört also nicht$FF_PORT verwendet (oder der Port aus dem Prozessbaum erkannt wird)ff-run-Launcher umhüllt das Run-Skript — er überwacht Kindprozesse nach lauschenden TCP-Ports