Finished apps,
milled from your data.
Point it at a CSV or a database. 45 seconds later you have a complete app: data model, API, views, permissions, copilot, agents. Not scaffolding. Not a prototype. The app.
claude mcp add millwork https://mcp.millwork.build
Then, in your session:
@millwork build an app from data.csv
{
"mcpServers": {
"millwork": { "url": "https://mcp.millwork.build" }
}
}
Codex, Claude Cowork, Cursor, and anything else that speaks MCP.
One MCP server. Works in Claude Code, Codex, Claude Cowork, Cursor, and any MCP client. Sign in with OAuth, no API keys.
What goes in and what comes out
- data model
- API
- views
- permissions
- copilot
- agents
- MCP server
The numbers first
Because that's why you're here.
| Measure | Millwork | Product agents (Remy) | Claude Code from scratch |
|---|---|---|---|
| Cost per build bars to scale, 0 to $40 | $2 to $5 | $30 to $40 | n/a |
| Cost per project, idea to deployed, with iteration bars to scale, 0 to $500 | $10 to $30 | $100 to $500 | $150 to $300 |
| Build time | 45 seconds average | minutes to hours | hours |
| Session context burned | a few thousand tokens | full generation | 200,000+ tokens |
| Output | complete app, 5 to 6 views, full data model | full-stack app | whatever survived the session |
At 300 to 1,000 apps a year, that difference is 7 figures. The apps become cheap enough to throw away, which changes what you build them for.
Why it's that cheap
Millwork doesn't ask a model to write your app. It asks a model to write a contract, then a deterministic compiler builds the app from it.
-
1
The contract
An LLM authors a JSON contract in 5 stages: data models, API endpoints, UI, copilot, agents. This is the only place a model touches your build.
-
2
The snap
Models make things up. A deterministic validator snaps missing pieces into place before anything gets built.
-
3
The mill
A compiler reads the contract and assembles the app step by step. Same contract in, same app out. Every time.
-
4
The inspection
80+ deterministic validators check the output. A final model pass reviews for logical errors, not syntax, because there are no syntax errors to find.
The model supplies judgment. The compiler supplies the code. That's why a whole app costs less than your coffee, and why 2 builds from the same data don't drift apart.
What comes out
Every build ships complete:
- 5 to 6 views with a full data model, wired to a real backend
- role-based permissions
- a copilot inferred from your data model, not configured by you
- resident agents with a draft-and-approve trust model
- its own MCP server, so the app is agent-accessible from day 1
- 120
- files
- 18,600
- lines
- 20
- data models
- 31
- API route modules
- 8
- views
- ~6 min
- build time
From 1 dataset. It's live. See it.
No lock-in, on purpose
The output is plain Express, MongoDB, Alpine, and Tailwind. No framework of ours, no runtime dependency, no build step.
- Express
- MongoDB
- Alpine
- Tailwind
Ask for the code and you get the code:
@millwork pull the code for this app
Read it, edit it, keep it. If you leave, everything you built leaves with you. We'd rather be the fastest way to make the next app than the reason you can't leave.
Safe by construction
These apps touch real business data, and some of them face your customers, so the parts that matter are deterministic.
- generation is compiled, not improvised, so output is reproducible and reviewable
- 80+ validators run on every build, before you ever see it
- the contract is a readable JSON file, diff it like any artifact
- agents operate draft-and-approve inside app permissions, nothing acts silently
- enterprise deployments can run fully airgapped, model included
No demos that work once. No prompts that drift. A build you can audit is a build you can allow.
Start milling
claude mcp add millwork https://mcp.millwork.build
Connect, sign in with OAuth, hand it your data. No card. Keep what you make.
FAQ
- What kind of apps can I build?
- Business apps: anything with a data model behind it. Ops tools, trackers, admin consoles, customer portals, catalogs. One app can serve your team and your customers at the same time, and role-based permissions decide who sees what. Internal tools are where the pain is most obvious, not where the ceiling is.
- Is this a vibe coding tool?
- No. Vibe coding tools improvise code from prompts and hand you scaffolding to finish. Millwork compiles complete apps from your data. The model never writes your code.
- Why start from data instead of a prompt?
- Describing an app is hard. Your data already describes it. Millwork reads the schema and builds what the data demands, so there's nothing to articulate at prompt 0.
- Can I use my own model?
- The compiler is model-agnostic by design. The contract-authoring step runs on frontier models today; a purpose-built small model is in development with NVIDIA Inception.
- Who's behind this?
- Millwork is built by Gainable, Inc.