AI-powered macOS development workspace. Git worktrees, Claude Code sessions, and dev servers in a single native app.
112
stars
763
commits
Swift
primary language
Sep 3, 2026
updated
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/factoryfloor
Or download the latest release.
Then:
+ button in the sidebar, then selecting a repository directory.Cmd+N. Factory Floor sets up a git worktree and launches a Claude Code agent automatically.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.
.factoryfloor.json. Environment tab with split-pane terminals, Start/Rerun (⌘⇧⏎).gh CLI.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.
These commands come from the repository, so Factory Floor asks you to approve them before it runs any of them. The workspace shows each command and the file it was read from, and nothing executes until you approve. Approval is remembered per repository and requested again whenever the commands change. You can withdraw it from the Info tab.
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/factoryfloor
Or download the latest release.
brew upgrade --cask factoryfloor
Homebrew 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.0
See 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 dev
All strings are localized. To add a language:
Localization/en.lproj to Localization/xx.lprojLocalizable.stringsproject.yml and run xcodegen generateFactory Floor is built on the shoulders of these projects:
project.ymlFactory 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.
Swift
84.7%
HTML
8.0%
Python
3.0%
Shell
1.9%
JavaScript
1.9%
AI-powered macOS development workspace. Git worktrees, Claude Code sessions, and dev servers in a single native app.
112
stars
763
commits
Swift
primary language
Sep 3, 2026
updated
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/factoryfloor
Or download the latest release.
Then:
+ button in the sidebar, then selecting a repository directory.Cmd+N. Factory Floor sets up a git worktree and launches a Claude Code agent automatically.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.
.factoryfloor.json. Environment tab with split-pane terminals, Start/Rerun (⌘⇧⏎).gh CLI.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.
These commands come from the repository, so Factory Floor asks you to approve them before it runs any of them. The workspace shows each command and the file it was read from, and nothing executes until you approve. Approval is remembered per repository and requested again whenever the commands change. You can withdraw it from the Info tab.
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/factoryfloor
Or download the latest release.
brew upgrade --cask factoryfloor
Homebrew 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.0
See 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 dev
All strings are localized. To add a language:
Localization/en.lproj to Localization/xx.lprojLocalizable.stringsproject.yml and run xcodegen generateFactory Floor is built on the shoulders of these projects:
project.ymlFactory 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.
Swift
84.7%
HTML
8.0%
Python
3.0%
Shell
1.9%
JavaScript
1.9%