Sandbox
@purplefish-ai/factory-factory

Workspace manager for Claude Code and Codex

Factory Factory gives each task its own git worktree and branch so multiple agent sessions can run in parallel. It brings chat, diffs, files, terminals, issues, and pull request state into one local command center. It connects to Claude Code and Codex through ACP and supports repeatable workflows like quick actions, periodic tasks, and follow-up agents for PRs.

49 stars9 forksTypeScriptUpdated 7d ago
Who it's for

Builders who want a local command center for parallel Claude Code and Codex sessions.

What it delivers

You can run separate agent sessions on isolated workspaces and keep changes, terminals, and PRs organized in one place.

What it does

Isolated workspaces

Creates a separate git worktree and branch for each task so agents do not overwrite each other.

Parallel Claude and Codex sessions

Connects to Claude Code and Codex through ACP and lets you resume sessions with model options.

Issue to PR flow

Starts work from GitHub or Linear issues, links them to a workspace, and follows the changes through review and merge.

Workspace command center

Shows chat, diffs, files, terminals, issues, and pull request status together in one UI.

Ratchet follow-ups

Watches pull requests and can dispatch follow-up agents for failing CI or review feedback.

Repeatable workflows

Supports quick actions, periodic tasks, and child workspaces for common agent workflows.

How to get it

  1. 1Start Factory Factory without installing it
    npx factory-factory@latest serve
  2. 2For regular use, install the CLI globally
    npm install -g factory-factory
    ff serve
  3. 3Useful commands
    ff serve --help     # Ports, database path, host, and other options
    ff proxy --private  # Share the app through a password-protected Cloudflare tunnel
    ff db:studio        # Inspect the local database with Prisma Studio

README

Factory Factory

Run Claude Code and Codex in parallel, each in an isolated git workspace.

Turn issues into branches, steer multiple agents, review changes, and keep pull requests moving from one local command center.

npm CI License Website

Factory Factory workspace with parallel agents, code changes, and an integrated terminal

Factory Factory is a local workspace manager for AI coding agents. Every workspace gets its own git worktree and branch, so agents can work on separate tasks without stepping on each other. The UI brings chat, diffs, files, terminals, issues, and pull request status together in one place.

Quick start

You will need:

  • Node.js 26.8.1+ for the CLI and development (pinned in .node-version); the desktop app uses Electron's bundled Node.js runtime
  • macOS 13 (Ventura) or newer for the macOS desktop app
  • A local git repository
  • At least one agent provider:
    • Claude Code, authenticated with claude login
    • A ChatGPT/Codex account configured for Codex sessions
  • The authenticated GitHub CLI for GitHub issues and pull requests

Start Factory Factory without installing it:

npx factory-factory@latest serve

Factory Factory opens in your browser and stores its database in ~/factory-factory/ by default.

See Settings for IDE commands, default chat models, and project configuration.

Then:

  1. Add a project by selecting a local git repository.
  2. Create a workspace, or start one from a GitHub or Linear issue.
  3. Choose Claude or Codex and start a session.
  4. Review the agent's changes, use the integrated terminal when needed, and open a pull request.

What it does

  • Parallel, isolated work: Each task runs in a dedicated worktree and branch while your main checkout stays untouched.
  • One workspace for the whole task: Chat with agents, inspect files and diffs, run commands, and track PR state without switching tools.
  • Claude and Codex sessions: Factory Factory connects to both providers through the Agent Client Protocol (ACP), with resumable sessions and runtime model options.
  • Issue-to-PR workflow: Pull assigned work from GitHub or Linear, link it to a workspace, and follow it through to merge.
  • Automatic PR progression: Ratchet watches open pull requests and can dispatch follow-up agents for failing CI and actionable review feedback.
  • Repeatable automation: Quick actions, periodic tasks, and child workspaces help split up or repeat common workflows.

The core model is intentionally small:

Project (a local git repository)
└── Workspace (an isolated worktree and branch)
    ├── Agent sessions (Claude or Codex over ACP)
    └── Terminal, files, changes, and pull request state

Install and run

For regular use, install the CLI globally:

npm install -g factory-factory
ff serve

Useful commands:

ff serve --help     # Ports, database path, host, and other options
ff proxy --private  # Share the app through a password-protected Cloudflare tunnel
ff db:studio        # Inspect the local database with Prisma Studio

ff proxy requires cloudflared on your PATH. Factory Factory automatically runs database migrations, finds an available port, and opens the browser when the server is ready.

Hosting behind your own reverse proxy

To serve Factory Factory from your own domain (e.g. https://ff.example.com) via nginx, Caddy, or another reverse proxy:

  • Set CORS_ALLOWED_ORIGINS to the exact public origin(s), comma-separated: CORS_ALLOWED_ORIGINS=https://ff.example.com. This gates both HTTP CORS and WebSocket upgrades; non-loopback origins must match exactly (scheme + host + non-default port, no trailing slash).
  • Keep BACKEND_HOST bound to localhost/127.0.0.1 so only your proxy can reach the server.

By default the server rejects WebSocket upgrades that carry client-address headers (x-forwarded-for, cf-connecting-ip, etc.), because it expects to sit behind an authenticated proxy that strips them. If your reverse proxy adds these headers, either strip them before forwarding, or set TRUST_PROXY_HEADERS=true to accept them. Only enable TRUST_PROXY_HEADERS when the backend is reachable solely through your trusted proxy (i.e. bound to loopback) — otherwise clients could spoof address headers. The remote-address trust check (loopback / TRUSTED_LOCAL_CIDRS) still applies.

Security

[!WARNING] Factory Factory runs coding agents that can execute commands and modify files without manual confirmation. Workspaces isolate git branches; they are not containers or security sandboxes.

Use Factory Factory only with repositories and agent instructions you trust. Review changes before merging, protect your GitHub and Linear credentials, and consider a VM or container when working with untrusted code.

Development

Use pnpm 12.3.4, pinned in package.json. Dependency build permissions live in pnpm-workspace.yaml under allowBuilds; review new build scripts with pnpm approve-builds when adding or updating dependencies.

Development requires Git 2.32 or newer for lint-staged. Builds and typechecks use TypeScript 7 through the @typescript/native package alias. The typescript alias provides Microsoft's TypeScript 6 compatibility API for guardrail scripts and tools that parse source files; tsc runs version 7 and tsc6 runs version 6.

git clone https://github.com/purplefish-ai/factory-factory.git
cd factory-factory
pnpm install
pnpm dev

Before opening a pull request, run the standard checks:

pnpm test
pnpm typecheck
pnpm check

See CONTRIBUTING.md for project structure, conventions, and the full contributor workflow.

Acknowledgements

Factory Factory was inspired by Conductor, VibeKanban, Gastown, and Multiclaude.

License

MIT

Files in the repo

Repository payload58 top-level entries
  • .architecture
  • .cursor
  • .factory-factory
  • .github
  • .husky
  • .planning
  • .storybook
  • .superpowers
  • .vscode
  • bin
  • biome-rules
  • build-resources
  • docs
  • e2e
  • electron
  • prisma
  • prompts
  • public
  • scripts
  • src
  • .dependency-cruiser.cjs
  • .dockerignore
  • .editorconfig
  • .env.example
  • .gitignore
  • .jscpd.json
  • .node-version
  • .npmignore
  • AGENTS.md
  • biome.json
  • CHANGELOG.md
  • CLAUDE.md
  • CODE_OF_CONDUCT.md
  • components.json
  • CONTRIBUTING.md
  • docker-compose.yml
  • docker-entrypoint.sh
  • Dockerfile
  • electron-builder.yml
  • factory-factory.json
  • factory-factory.json.example
  • greptile.json
  • index.html
  • knip.json
  • LICENSE
  • nginx.conf
  • package.json
  • playwright.mobile.config.ts
  • pnpm-lock.yaml
  • pnpm-workspace.yaml
  • prisma.config.ts
  • README.md
  • SECURITY.md
  • tsconfig.backend.json
  • tsconfig.electron.json
  • tsconfig.json
  • vite.config.ts
  • vitest.config.ts

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More tools

JuliusBrussee/
caveman

🪨 why use many token when few token do trick — Claude Code skill that cuts 65% of tokens by talking like caveman

105k
1 add
MemPalace/
mempalace

The best-benchmarked open-source AI memory system. And it's free.

59k
stablyai/
orca

Orca is the ADE for working with a fleet of parallel agents. Run any coding agent with your own subscription. Available on desktop, mobile and remote runtime.

66k

A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io

132k

Never stop coding. Free MIT AI gateway: one endpoint, 352 providers (150+ free), 1200+ models Kimi, Claude, GPT, Gemini, GLM, DeepSeek, MiniMax. Works with Claude Code, Codex, Cursor, OpenCode, Cline & Copilot. Quota-aware auto-fallback, RTK+Caveman compression saves 15-95% tokens, MCP/A2A, Desktop/PWA. Built by 550+ contributors

64k
headroomlabs-ai/
headroom

Compress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.

71k