AI-powered development workspace for macOS
Git worktrees, Claude Code sessions, and dev servers in a single native app.
Install via Homebrew:
brew install --cask alltuner/tap/factoryfloorOr download the latest release.
Then:
- Open Factory Floor and add a project by clicking the
+button in the sidebar, then selecting a repository directory. - Create a workstream with
Cmd+N. Factory Floor sets up a git worktree and launches a Claude Code agent automatically. - Start building. Add terminals (
Cmd+T), browsers (Cmd+B), editors (Cmd+O), or configure run scripts to auto-detect your dev server.
Factory Floor is a native macOS app built on Ghostty's GPU-rendered terminal. It manages multiple parallel development tasks, each in its own git worktree with a dedicated Claude Code agent, terminal, and browser.
One project, many workstreams, all at native speed.
- Git Worktrees — Each workstream gets its own branch and worktree. Switch between tasks without stashing.
- Claude Code — Integrated AI agent with session persistence. Resume conversations across app restarts.
- Tmux Persistence — Agent sessions survive app restarts via tmux on a dedicated socket.
- Setup & Run Scripts — Configure setup, run, and teardown scripts per project via
.factoryfloor.json. Environment tab with split-pane terminals, Start/Rerun (⌘⇧⏎). - Embedded Browser — WKWebView tab with automatic port detection. The browser navigates to the port your run script opens.
- Code Editor — Built-in Monaco editor (same engine as VS Code) embedded via WKWebView. Syntax highlighting, IntelliSense, and file tree. One file per tab, shared undo history.
- GitHub Integration — Repo info, open PRs, and branch PR status via the
ghCLI. - Dynamic Tabs — Open as many terminals, browsers, and editors as you need. Close with Cmd+W or Ctrl+D.
- Update Notifications — Checks for new versions and shows a badge in the sidebar.
- Keyboard-first — Every action has a shortcut. Cmd+1-9 for tabs, Cmd+Return for agent, Cmd+T for terminal, Cmd+B for browser, Cmd+O for editor.
When tmux mode is enabled (Settings > Terminal), Factory Floor wraps Coding Agent sessions in tmux using a dedicated socket (factoryfloor). This keeps sessions alive across app restarts without interfering with your personal tmux setup.
The tmux config strips all UI chrome (status bar, prefix key, keybindings) since Factory Floor manages the terminal directly. Sessions are still fully accessible from any external terminal:
# List active sessions
tmux -L factoryfloor list-sessions
# Attach to a session
tmux -L factoryfloor attach-session -t <session-name>Note that because keybindings are removed, you will need to detach with tmux -L factoryfloor detach-client from another terminal, or use the standard kill-session command.
Add a .factoryfloor.json to your project root to automate your workstream lifecycle. All fields are optional.
{
"setup": "npm install",
"run": "PORT=$FF_PORT npm run dev",
"teardown": "docker-compose down"
}| Hook | When it runs | Example use case |
|---|---|---|
setup |
Once, when a workstream is created | Install deps, copy .env, run build steps |
run |
On demand via the Environment tab | Start dev server, docker-compose up |
teardown |
When a workstream is archived | docker-compose down, clean temp files |
Scripts run in the workstream directory using your login shell. The run script is wrapped in the ff-run launcher for automatic port detection.
Every workstream terminal has access to:
| Variable | Description |
|---|---|
FF_PROJECT |
Project name |
FF_WORKSTREAM |
Workstream name |
FF_PROJECT_DIR |
Main repository path |
FF_WORKTREE_DIR |
Worktree path for this workstream |
FF_PORT |
Deterministic port (40001-49999) |
| Shortcut | Action |
|---|---|
Cmd+N |
New workstream or project |
Cmd+Shift+N |
New project |
Cmd+, |
Settings |
Cmd+/ |
Help |
Cmd+Option+S |
Toggle sidebar |
| Shortcut | Action |
|---|---|
Cmd+1 |
Info |
Cmd+2 |
Coding Agent |
Cmd+3-9 |
Switch tab |
Cmd+Shift+[ / ] |
Cycle tabs |
Cmd+Return |
Focus Coding Agent |
Cmd+T |
New Terminal |
Cmd+B |
New Browser |
Cmd+O |
New Editor |
Cmd+S |
Save (Editor) |
Cmd+Shift+S |
Save As (Editor) |
Cmd+W |
Close tab |
Cmd+Shift+W |
Archive workstream |
Cmd+L |
Address bar (browser) |
Cmd+Shift+Return |
Start/Rerun |
| Shortcut | Action |
|---|---|
Cmd+[ / ] |
Cycle workstreams |
Cmd+Up / Down |
Cycle projects |
Cmd+0 |
Back to project |
| Shortcut | Action |
|---|---|
Cmd+Option+B |
Open in external browser |
Cmd+Option+T |
Open in external terminal |
English, Catalan, Spanish, Swedish.
brew install --cask alltuner/tap/factoryfloorOr download the latest release.
brew upgrade --cask factoryfloorHomebrew automatically installs the ff command. If you installed via DMG, install the CLI from Settings > Environment.
Requires: Xcode, XcodeGen (brew install xcodegen), Zig (brew install zig).
# First time: build the Ghostty terminal engine
cd ghostty && zig build -Demit-xcframework=true -Dxcframework-target=universal -Doptimize=ReleaseFast && cd ..
# Build
./scripts/dev.sh build
# Build and run
./scripts/dev.sh br
# Kill and relaunch
./scripts/dev.sh run
# Run with a specific directory
./scripts/dev.sh run ~/repos/myproject
# Run tests
./scripts/dev.sh test
# Clean
./scripts/dev.sh clean
# Release (sign, notarize, DMG)
./scripts/release.sh 0.1.0See CLAUDE.md for development workflow, architecture, and conventions.
The website lives in website/ and is built with Hugo + Tailwind CSS.
cd website && bun install && bun run devAll strings are localized. To add a language:
- Copy
Localization/en.lprojtoLocalization/xx.lproj - Translate all values in
Localizable.strings - Add the path to
project.ymland runxcodegen generate
Factory Floor is built on the shoulders of these projects:
- Ghostty — GPU-accelerated terminal engine (Metal-rendered via libghostty)
- Claude Code — AI coding agent by Anthropic
- tmux — Terminal multiplexer for session persistence
- XcodeGen — Xcode project generation from
project.yml - cmark-gfm — GitHub Flavored Markdown rendering (via swift-cmark)
- Hugo + Tailwind CSS — Website
- Umami — Privacy-friendly website analytics
Factory Floor is an open source project built by David Poblador i Garcia through All Tuner Labs.
If this project helped you ship faster, automate your workflow, or experiment with coding agents, consider supporting its development.
❤️ Sponsor development https://github.com/sponsors/alltuner
☕ One-time support https://buymeacoffee.com/alltuner
Your support helps fund the continued development of Factory Floor and other open source developer tools such as VibeTuner.
Built by David Poblador i Garcia with the support of All Tuner Labs.
Made with ❤️ in Poblenou, Barcelona.