Local · private · free for individuals

Hand off three jobs at once.
Approve them tonight.

A bug, a feature, the tech debt you’ve been dodging — describe each in a sentence and leave. They come back finished: each one tested, each one checked by a second AI that tried to break it. You read what changed and hit merge. Nothing ships without you.

Works with your existing Claude, Codex, Qwen, Antigravity or opencode CLI — point it at a repo and go. Early access is rolling out ›
Runs locally · your code never leaves your laptopYou approve every mergeBring your own AI tool
TofuFactory
T-050

Trim flaky tests in the auth suite

Needs input
QueuedWorkingVerifyShip
· codex · gpt-5.5 · paused · needs you
What happened

Codex pruned the redundant retry wrappers and tightened three brittle assertions in test_auth.py. No app code changed — the suite is leaner and the remaining cases are deterministic.

Suggested fix

One test — test_login_race — is genuinely flaky upstream. Quarantine it and open a follow-up so the suite goes green now. Last 5 like this cleared in under 2 minutes.

or
codex · gpt-5.5 · careful
Parts inventory.   To assemble one TofuFactory, you need:
Laptop
yours any modern one
Codebase
a folder on disk git optional
AI subscription
a provider plan you already pay for
∞× AI coders
Claude, Codex, Qwen, Antigravity, opencode
Prompt engineering
not required a sentence is enough
What you can hand off

The three you just read about.
In detail.

TofuFactory turns the work you keep postponing — bugs, features, cleanup — into one-line tasks that run in parallel while you do something else. The AI does the work. You keep the merge button.

Fix bugs without breaking your flow

It’s 4pm on a Friday and a test only fails in CI. Instead of dropping everything to dig in, paste the Sentry link, the failing test, or a screenshot — your AI coder investigates, fixes it in an isolated branch, and hands back a diff with the test green. You read 10 lines of changes instead of 200 lines of Slack.

paste a Sentry linkdrop a screenshota sentence works too

Build features overnight

The feature that’s been stuck in the backlog because you never get an uninterrupted afternoon? Describe it in one sentence before you log off. Wake up to a branch with it implemented, tests written, and a plain-English summary of every decision made along the way — not a stack trace to reverse-engineer.

isolated branchtests includedwritten summary

Clean up tech debt at scale

The dependency upgrade you’ve been dodging for six months — the dead code, deprecated APIs, and loose types hiding behind it. Queue them all at once. They run in parallel; the cognitive load doesn’t. Each in its own branch, each with its own merge button.

upgrade depstighten typesdelete dead code+ more
Why you can trust it

You keep the merge button.
Now it comes with proof.

An AI saying “done” doesn’t make it done. So every change lands with the evidence attached — the test that failed before the fix and passes after, your suite green, a second AI that tried to break it and couldn’t. We call that a receipt. You approve on evidence, not vibes.

T-051Add per-customer rate limitsclaude · opus-4.8+46 −4 · 2 filesReady for review
5 of 5 checks passed
Wrote a test that fails without the fix — then made it pass

Proves the change actually does something, not just that the tests are green.

red → green
A second AI tried to break it — and couldn’t

An independent coder reviewed the diff adversarially. No holes found.

qwen →
Your test suite ran green

Full lint, types, and tests — the same checks your CI runs.

214 passed
Coverage went up on the files it touched

82% → 86%. New code arrived with its own tests.

+4.2%
No fake-green tests slipped in

Hollow assertions that always pass are caught and rejected automatically.

clean

Nothing reaches main until you click. The receipts just mean you’re deciding on evidence, not vibes.

The AI does the work. You keep the merge button. It just shows its work first.

Isolated branches, always

Every task runs in its own branch. Main is never touched without your explicit approval.

Your checks gate every merge

Lints, types, and your test suite run before you ever look — an AI saying “done” doesn’t decide.

You approve every merge

No auto-merge, no background commits. Every diff waits in a review queue for your call.

Local. Yours. Free.

Runs on your laptop. Zero accounts, zero per-seat pricing, zero code leaving your machine — any usage stats are opt-in and anonymous.

When it can’t

It gets stuck sometimes. It tells you.

No silent failures. No fake-green tests. When an agent isn’t sure or hits a wall, it stops and hands the call back to you — with exactly what it tried and why it paused.

It says “needs you”

A stuck agent flags the task and stops — no guessing, no green check it didn’t earn. You see the last thing it tried, in plain English.

Fake-green gets caught

Hollow tests that always pass are rejected automatically. A suite it gamed into passing doesn’t count as done.

The branch is still there

Reply with a hint and it resumes where it stalled, on the same isolated branch. Nothing you had is lost.

It knows when to stop

After a couple of honest retries it stops burning your plan and asks — instead of looping forever on the same wall.

How it works

From request to reviewed PR — in four steps.

No prompt engineering. No agent config. Pick a folder, describe what you want, walk away. Come back to a diff you can actually read.

  1. 01

    Describe

    “Fix the login race condition.” “Add CSV export to /reports.” A sentence is enough. Attach a screenshot or a failing test if you have one.

  2. 02

    Delegate

    TofuFactory spins up an isolated branch and starts your AI coder. Your repo is read-write inside the branch, untouchable outside it.

  3. 03

    Check

    Your existing lint / type / test pipeline runs automatically. Red checks block the task from reaching your review queue.

  4. 04
    +

    Review & ship

    You see the diff, a plain-English summary, and the full reasoning trace if you want it. Approve to land on main, or kick it back with a hint.

12:01T-006readingyour request
12:02T-006planningfound 3 files to edit
12:04T-006editingArchive.tsx, empty-state.tsx
12:07T-006checkingrunning your tests
12:08T-006Ready for review3 of 3 checks passed · receipts
reprotest_login_race → green
mutations14 introduced · 14 killed
adversaryqwen tried it · 0 escapes
suite212 tests · all green
12:11T-007workingupgrading react-router → v7
12:14T-013Needs your inputflaky test suspected, 4th try
12:18T-015Ready for review24 files changed
Why not just run them yourself?

Three terminals makes you the babysitter.

Opening three CLIs in three tabs works — until you’re the one watching output scroll, re-prompting when they drift, and hand-checking every diff. TofuFactory does that part, so you’re not the one stuck in the loop.

It watches, not you

No tab-switching to see who stalled. The queue tracks every task’s state and pings you only when one genuinely needs a human.

It verifies the work

Your lint, types and tests run on every result, plus a second AI that tries to break the diff. You stop hand-checking green.

They can’t collide

Each task runs in its own isolated branch, so three agents never step on each other — or on your working tree.

Only real decisions reach you

It runs unattended and surfaces just the moments that need judgment — you get the “needs you”, not the noise.

Inside the app

Three windows into your factory.

Review work, drop into a live terminal, or check your factory’s vital signs — one local app, three ways to look.

Command it anywhere

Ship from your desk, your couch, or your phone.

Connect Discord or Slack and your factory comes with you. Fire off a task with a slash command, and the trust receipt lands right back in the channel — approve it with a tap, wherever you are.

  • Kick off tasks with /tofu from any thread
  • Receipts & “ready for review” pings posted to the channel
  • Approve or kick back with an emoji react
Discord free for everyone · Slack on Team & Enterprise →
DiscordSlack
DK
Dana K.9:41 AM
/tofu add per-customer rate limits to the billing API
TofuFactoryApp9:52 AM
T-051 is ready for review — 5 of 5 checks passed.
Trust receipt
  • Failing test reproduced, then green
  • Second AI tried to break it — 0 escapes
  • Suite green · coverage +4.2%
✅ 2🚢 1
Real merges · verified

Every change here was merged by the factory itself.

You give TofuFactory a task. It opens a worktree, runs a coder agent, runs the verify gate, and merges only what passes — unattended. These are real landed changes, pulled straight from the run log.

27changes merged autonomously — each one past the verify gate
T-481verified · merged

feat(why-idle): surface merge-queue freeze reason

self-fix3 filesregression test
T-453verified · merged

fix(health): BLOCKED/FAILED tasks must not degrade system health

self-fix2 filesregression test
T-478verified · merged

fix(scheduler): MANUAL blocks must not feed the file-failure cooldown

self-fix2 filesregression test
T-432verified · merged

Add a version module with a test

from a prompt2 filestests
T-435verified · merged

Implement a token-bucket RateLimiter with tests

from a prompt2 filestests
T-436verified · merged

Implement an INI parser with edge-case tests

from a prompt2 filestests
T-437verified · merged

Implement diff_records(old, new) keyed by id, with tests

from a prompt2 filestests
T-439verified · merged

Implement an LRU cache with eviction + tests

from a prompt2 filestests
T-440verified · merged

Implement an arithmetic expression evaluator (precedence, assoc, parens)

from a prompt2 filestests
T-479verified · merged

feat(kill-switch): reject unknown switch names in set_switch

self-fix1 fileregression test
T-384verified · merged

[P0] Fix red build — TofuFactory: uv run scripts/test.py: tests/ratchets/test_merge_structure…

self-fix1 file
T-448verified · merged

Docstring for _age_seconds() in dispatch_reasons.py

self-fix1 file
T-451verified · merged

Docstring for _ready_tasks() in dispatch_reasons.py

self-fix1 file
T-467verified · merged

docs: docstring in task_kinds.py

self-fix1 file
T-469verified · merged

docs: docstring in verify_claim.py

self-fix1 file
T-470verified · merged

docs: docstring in failure_taxonomy.py

self-fix1 file
T-430verified · merged

Add an MIT LICENSE file

from a prompt1 file
T-431verified · merged

Add a .gitattributes for line endings

from a prompt1 file
T-433verified · merged

Add a docs/USAGE.md quickstart

from a prompt1 file
T-434verified · merged

Add a Makefile with lint/test targets

from a prompt1 file
T-369verified · merged

write a quick landing page for selling pokemon cards. 3 sections.

from a prompt1 file
T-371verified · merged

change the helloworld program in python, and make a quick calculator program that takes stdin…

from a prompt1 file
T-372verified · merged

make a helloworld program in C#

from a prompt1 file
Starter templates

Don’t stare at a blank task box. Start from a job.

Each template asks two or three guided questions, then writes the task for you. Pick one to skip the prompt-engineering step entirely.

Free
PDF
Vol. 1 · First edition · A4 booklet

It also comes with an assembly guide.

Wordless. Pictograms only. Six A4 pages explaining how to ship software without you. Print it, sign it, tape it above the espresso machine — whatever. Made because we couldn’t resist.

100 signed copies · numbered · printed on newsprint
1
human approval before any merge — always you
0
bytes of your code leave your machine
$0
for individuals — today, or ever
100%
of merges arrive with receipts attached — not just a green check
Built with itself

This page shipped through TofuFactory.

We don’t just describe the factory — we run on it. This marketing site and TofuFactory’s own backend are built the way you’d build with it: tasks queued, agents working in isolated branches, every change reviewed against its receipt before it reaches main.

  • This site and its backend both ship through the factory
  • Every merge gated by the same checks you’d run
  • One human approval per change — no auto-merge, ever
Questions, answered

The things you’d ask before trusting it.

What is TofuFactory?
TofuFactory is the local command center for parallel AI coding agents — a desktop app for Mac, Windows, and Linux that turns the coding CLIs you already use (Claude, Codex, Qwen, Antigravity, opencode) into a team you can delegate to. You describe tasks, agents work in isolated branches, and every change comes back with a trust receipt for your review.
Does my code ever leave my machine?
No. Your repos, prompts, and API keys stay on your laptop — the only network traffic is your own AI CLI talking to the provider you already pay for. The app collects no telemetry by default; any usage stats are strictly opt-in, anonymous, and never include your code.
Which AI coding tools does it work with?
Claude Code, Codex CLI, Qwen Code, Antigravity, and opencode. There is no separate AI subscription to buy — TofuFactory orchestrates the tools and plans you already have.
Why not just use Claude Code or Codex directly?
TofuFactory doesn’t replace your CLI — it runs it. A single CLI session gives you one agent and a wall of terminal output to babysit. TofuFactory adds the factory around it: a task queue, parallel agents in isolated branches, your lint/type/test pipeline as a gate, an independent adversarial AI review, and one review feed where every change arrives with receipts. You go from supervising prompts to reviewing finished work.
What is a trust receipt?
Proof attached to every change: a test that failed before the fix and passes after, your full test suite running green, coverage on the touched files, mutation-testing results, and a second AI’s adversarial review. You approve on evidence, not vibes.
Is TofuFactory really free?
Free for individuals, forever — no account, no card, no usage caps. Paid Team and Enterprise plans add shared task queues, Slack ChatOps, central policy, and enterprise security controls; that’s how the lights stay on.
When can I get it?
TofuFactory is in early access. Join the waitlist at tofufactory.dev/waitlist and we’ll send your download link as builds roll out for macOS, Windows, and Ubuntu / Linux.
The morning after

You come back to finished work. Or the truth.

Leave a task running and it ends one of two ways — ready to merge, or paused with a plain-English reason. Never a nasty surprise in between.

No zombie tasks

Nothing sits there pretending to work. If a task isn’t moving, it has already told you why — in plain words, not a spinner.

No surprise on the bill

You wake up to the work, not a burned-through plan. A task that spins out overnight gets stopped before it runs up your tab.

No lost night

Your plan hits its ceiling at 2am? The work carries on with whatever you’ve got left. You still come back to a finished branch.

Nothing lost, ever

Close the laptop, quit the app, drop the wifi. Whatever was running is safe on its own branch, right where it left off.

Your next pull request is one sentence away.

Bring your favorite AI coder, point it at a repo, and start handing off bugs, features, and cleanup. Every change waits for your approval — nothing reaches main without you.

Free for individuals, foreverno accountno cardkeys stay local

Free for individuals, forever — no card, no account, no catch. Rolling it out across a team? See Team & Enterprise plans →