TECHNOLOGY / OPEN SOURCE
Ordinary parts. Assembled once.
Every venture needs a backend, and none of them should build one. The parts a company needs to exist are written once, as an open-source harness in Rust. A venture picks the modules it wants, wires them in one file, and ships as a single stateless worker with its own database.
The factory in numbers
- ventures
- 2317 validation · 1 prototype · 5 launch
- on the stack
- 17of 23 ventures, the shared parts
- open source
- 118 MIT · 3 Apache-2.0
- run on the harness
- 1818 live today · 1 planned
- decision records
- 30in the harness repository
HOW A VENTURE IS BUILT
One file names the company.
A venture backend is a small Rust project. It lists the modules it uses, the adapters that connect them to the world, and the venture’s own name and domain. Everything else is the harness. Build it and the result is one worker that contains exactly those modules and nothing else.
If a module needs something the runtime cannot provide, or two modules claim the same table, the build fails before anything is deployed. A misconfigured venture cannot reach production.
Harness::builder() .venture(Venture::new("factory0", "factory0.ventures") .cors_origins(["https://factory0.ventures"])) .module(EmailSignup::new().double_opt_in(true)) .module(Waitlist::new() .products(["kontinuum", "undercover-rockstars"])) .runtime(Cloudflare::new() .db("DB") .mailer(Resend::from_env()) .captcha(Turnstile::from_env())) .build()?
- Step 1
Name it
The venture, its domain, its modules and the adapters that answer for them. One file.
- Step 2
Compose it
The build refuses a module whose port the runtime does not provide, and two modules that claim the same table or route.
- Step 3
Ship it
One stateless worker containing exactly the listed modules, with its own database, secrets and domain.
THE LAYERS
Six layers, from the runtime up to the products.
Read from the bottom up: where code runs, the harness every backend is compiled from, the backends, the shared products, the agents that run the company, and the standalone ventures. Solid chips are live today, outlined chips are in the harness, dashed chips are planned.
Cloudflare Workers, compiled to WebAssembly
Where every venture worker runs. Data and mail sit beside it, and the same code can run on a server.
Cratefield: the open-source Rust core
Ports, the router and the modules. A module asks for a port; an adapter answers.
Ports
Modules
One worker and one database per venture
Each venture is composed from the harness and deployed on its own. Live on the harness today:
The stack: products every venture plugs into
The shared products, shelved by what they do. Each is a company with its own customers.
Ship & run
VibeCaddie
Keep Shipping
release.show
Shoal
Communication
Owlpost
Squeezin
Security
promptdecode
Sealbin
Customers
SupportGenius
PosPlugin
Ledgers
Content & AI
Kontinuum
Living Brain
Tokker
Ghostwritin'
Five layers, one agent for each function
Each function in each layer is an agent. Colonizer runs the coding agents for the build layer.
- DISCOVER3 agents
- BUILD4 agents
- OPERATE4 agents
- DISTRIBUTE3 agents
- LEARN3 agents
Colonizer: coding agents that turn GitHub issues into pull requests
The standalone ventures
Ventures outside the stack. They inherit the foundation and do not add to it.
The six layers, bottom up
- runtime: Cloudflare Workers, compiled to WebAssembly. Where every venture worker runs. Data and mail sit beside it, and the same code can run on a server.
- harness: Cratefield: the open-source Rust core. Ports, the router and the modules. A module asks for a port; an adapter answers.
- backends: One worker and one database per venture. Each venture is composed from the harness and deployed on its own. Live on the harness today:
- shelves: The stack: products every venture plugs into. The shared products, shelved by what they do. Each is a company with its own customers.
- agents: Five layers, one agent for each function. Each function in each layer is an agent. Colonizer runs the coding agents for the build layer.
- products: The standalone ventures. Ventures outside the stack. They inherit the foundation and do not add to it.
A REQUEST, END TO END
Who does what, when a visitor signs up.
Drawn only from the links in the registry. A solid line is live today and carries traffic; a dashed line is planned and carries none yet.
Visitor
a person on a venture site
Venture worker
one worker per venture, on the Cratefield harness
liveOwlpost
mail for the ventures
liveSupportGenius
bug reports and support
plannedColonizer
coding agents, on the harness
liveLiving Brain
knowledge that keeps what worked
planned
The links in this flow: Visitor to Venture worker, HTTPS request: live. Venture worker to Owlpost, confirmation mail: live. Venture worker to SupportGenius, errors become issues: planned. SupportGenius to Living Brain, support feeds knowledge: planned. Colonizer to Living Brain, agents feed knowledge: live.
MODULES ONLY SEE PORTS
Ports on one side. Adapters on the other.
A module asks for a port and never a vendor. The runtime answers through an adapter. Adapters are the harness’s own; the status says where a live venture uses one today.
-
Database
tables, queries and migrations
- D1 (live)
- Postgres (in the harness)
- SQLite (in the harness)
-
Mailer
transactional mail
- Resend (live)
- Owlpost (planned)
-
Captcha
a bot check, failing closed
- Turnstile (in the harness)
-
KeyValue
small key-value state
- Cloudflare KV (in the harness)
-
RateLimiter
request budgets per key
- Cloudflare Rate Limiting (in the harness)
- Redis (in the harness)
-
Payments
checkout and billing
- Polar (planned)
- Stripe (in the harness)
-
TextModel
a model completion
- Anthropic (in the harness)
- OpenAI-compatible (in the harness)
-
Push
notices to devices
- APNs (in the harness)
- FCM (in the harness)
- Web Push (in the harness)
-
Signer
signing by key reference
- Turnkey (in the harness)
Ports and their adapters: Database (tables, queries and migrations): D1 (live), Postgres (in the harness), SQLite (in the harness). Mailer (transactional mail): Resend (live), Owlpost (planned). Captcha (a bot check, failing closed): Turnstile (in the harness). KeyValue (small key-value state): Cloudflare KV (in the harness). RateLimiter (request budgets per key): Cloudflare Rate Limiting (in the harness), Redis (in the harness). Payments (checkout and billing): Polar (planned), Stripe (in the harness). TextModel (a model completion): Anthropic (in the harness), OpenAI-compatible (in the harness). Push (notices to devices): APNs (in the harness), FCM (in the harness), Web Push (in the harness). Signer (signing by key reference): Turnkey (in the harness).
DESIGN RULES
Four rules the design keeps.
01
Modules only see ports.
A module asks for a database, a mailer, a captcha. It never touches a Cloudflare binding or a vendor client. Adapters answer. That one rule is what makes the later move off Cloudflare a change of a single crate.
moduleMaileradapter02
Composition happens at compile time.
No plugin loading, no registry service, no runtime surprises. The worker contains what the venture listed, and the compiler is the first reviewer. A module whose source should not enter the shared build can run as its own worker, mounted at the same path over a service binding. It is still composed, just not into the same binary.
compilerefusedeploy03
One venture, one database.
Nothing is shared at runtime between companies. Each has its own worker, its own data, its own secrets. A venture can be backed up, moved or shut down without touching another.
workerdatabasesecretsworkerdatabasesecretsworkerdatabasesecretsno runtime shared
04
Stateless by construction.
Nothing survives a request except what is written to the database. Confirmation and unsubscribe links are signed tokens, so there is no session store to run, scale or leak.
requestworkerdatabaseno session store
STATUS
Where the harness is.
Progress is tracked as issues and milestones in the open.
- M0done
Foundation
Workspace tooling, core, the Cloudflare runtime, the Resend and Turnstile adapters, the SQLite adapter, the fz CLI and the testing kit.
- M1done
First modules
Email signup, waitlist, templates, the security baseline and observability.
- M2in progress
First venture live
crates.io publishing, docs, contract versioning, and the first venture on its own API domain.
- M3done
Self-hosted portability
The Postgres adapter, the native runtime, a parity suite on SQLite and Postgres, and data export and import.
- DESIGN
- 30 decision records, all in the repository
- ARCHITECTURE
- 12 sections in the architecture document
- FIRST MODULES
- Email signup and waitlist, built
- PUBLISHED
- Most crates are on crates.io. A release round is pending.
- MANAGED SERVICE
- Not built yet. The control plane is designed, not written.
Harness figures: read from Cratefield/harness on 2026-10-21.
SECURITY AND PRIVACY
Six layers between a request and the data.
Each layer is a control the harness documents. The full list is in its security and privacy documents.
- 01 · EDGE
Only the venture’s own origins
The venture’s Worker answers on its own domain. CORS allows only the origins the venture lists, and every response echoes a request id.
- 02 · ABUSE
Bots and floods
Turnstile, failing closed. Rate limits on every public write, through the RateLimiter port.
- 03 · REQUESTS
Errors and logs without addresses
Errors are problem+json with a fixed slug for each case. One structured line per request, never an email address.
- 04 · TOKENS
Links, not sessions
Confirmation and unsubscribe links are HMAC-signed, with key rotation. There is no session store to run, scale or leak.
- 05 · SECRETS
Envelope encryption
Secrets are envelope-encrypted and bound to their row. The KMS port’s local-file provider refuses production.
- 06 · ISOLATION
One venture, one database
No runtime is shared between companies. Each has its own worker, data and secrets, and can be moved or shut down alone.
WHAT IS OPEN
The factory floor is public. The recipes are not.
The harness, its runtime, its adapters and the first two modules are MIT licensed and developed in the open. Anyone can build a backend on them, and every venture we run does. The modules that encode how Factory Zero operates its companies stay private. Each venture’s own backend is private too.
One venture is the harness itself. Cratefield takes the open-source harness and adds the managed layer around it: it would provision the worker, the database and the secrets inside your own Cloudflare account and then operate them. The harness is real and running; that control plane is designed and not yet written. It is also where the module boundary earns its keep: a customer can build and deploy a module of their own without the source ever reaching us.
Decisions are written down as they are made. The architecture document and the decision records are in the repository, including the one recording why a first attempt was thrown away.
- MITharnesscore, runtime, adapters, email signup, waitlist, CLI, test kit
- DOCarchitecturethe full design, twelve sections
- ADRdecision recordswhy Rust, why ports, why composition happens at compile time
- MITventure backend templatethe starting point for a new venture backend
- SRCthis websitestatic, no build step, no dependencies
- FZ-004Cratefieldthe managed service being built on the harness
- ORGgithub.com/Factory-Zerothe studio org; the harness itself now sits under Cratefield
Licences across the stack
Of the 17 ventures on the stack, 11 are open source, each with a public repository under an OSI licence. The bar and the tiles are drawn from the registry’s licence field.
KontinuumMIT
CratefieldMIT
ColonizerMIT
SupportGeniusMIT
promptdecodeMIT
Keep ShippingMIT
LedgersMIT
Ghostwritin'MIT
SealbinApache-2.0
Living BrainApache-2.0
TokkerApache-2.0
VibeCaddieNot open source
PosPluginNot open source
OwlpostNot open source
release.showNot open source
ShoalNot open source
SqueezinNot open source
Stack ventures by licence: Kontinuum: MIT. Cratefield: MIT. VibeCaddie: Not open source. Colonizer: MIT. SupportGenius: MIT. promptdecode: MIT. PosPlugin: Not open source. Keep Shipping: MIT. Owlpost: Not open source. Sealbin: Apache-2.0. release.show: Not open source. Living Brain: Apache-2.0. Shoal: Not open source. Tokker: Apache-2.0. Ledgers: MIT. Ghostwritin': MIT. Squeezin: Not open source.