Open source · MIT · Next.js
AI runs the shop. You keep the keys.
Cartwright is an open-source Next.js engine that builds a real website in one command — a plain site with no database, or a shop with an AI-native admin built for trusted operation: the model proposes, the shop shows you exactly what would change, and nothing is written until you release it.
“Drop winter frames 15% until Sunday.”
DKK 84 320 → 71 672
token: single use · 5 min
An illustration, not a mockup of a feature. Every one of Cartwright's 25 confirmation-gated write tools stops here: it returns a preview instead of executing, and runs only against a single-use token the server issued.
Just a page or a plain website? No database, no login, nothing to configure: npx create-cartwright@latest my-site --profile site How it works →
Either door, the same rule: You own the front — pick one of the shipped design packs, start from the blank canvas and rewrite its homepage, header and footer freely, or write your own pack; SEO, the sitemap, share cards and locale routing keep working around whatever you render, and in the default profile so do the database, the admin and the AI tools. Choose your path →
end to end
Four gates, in order.
Every tool call takes the same path, whether it came from the admin, your terminal, or a customer talking to the storefront. A gate that is already open proves nothing, so the second one is where the product actually lives.
Request
The API key's scopes are checked before the tool is even resolved. Out of scope, out of luck.
Pending
The tool returns the exact diff instead of executing it. Nothing has been written.
Write
A person released it. The token is single-use and spends itself here.
Audited
Recorded with who asked, what changed, and a revert that actually works.
Everyone operates the same shop.
A human, a coding agent, and a shopping agent all work the same engine — one database, one audit log, one repo that belongs to you.
You, in a browser
A full admin — products, orders, content, design, integrations — plus an AI copilot that plans first and asks before it writes. Run the business end to end without a vendor dashboard in sight.
/admin
Your AI coding agent, in a terminal
Agent rules files ship in the repo, and 87 REST tools let an agent design, stock, translate, and reconfigure the shop — destructive operations require explicit confirmation, and every write lands in the audit trail.
POST /api/v1/tools
Shopping agents, over the wire
llms.txt, JSON-LD on every citable page, a product feed, a built-in MCP server, ACP checkout endpoints — and WebMCP tools in the page itself, so browser agents act through a real API instead of the DOM.
/api/mcp · /api/acp · document.modelContext
All three doors open into the same owned codebase — MIT-licensed, in your GitHub, on your infrastructure. Leave anytime — it's your repo. Don't need operators at all? --profile site leaves the database, admin and agent tools out. You own the front — pick one of the shipped design packs, start from the blank canvas and rewrite its homepage, header and footer freely, or write your own pack; SEO, the sitemap, share cards and locale routing keep working around whatever you render, and in the default profile so do the database, the admin and the AI tools.
Every claim has a receipt.
| Surface | Shipping proof | Guardrail | What it means for you |
|---|---|---|---|
| AI admin | 37 allowlisted tools | 25 require confirmation · every call audited | The machine cannot silently alter the shop. |
| MCP | 87 tools · 21 scopes | Hashed keys, expiry, per-tool scope checks | Your agent can operate the shop, not merely talk about it. |
| WebMCP | 13 page-contextual browser tools | test-enforced moat — no order-placing tool in the browser | A browser agent acts through a real API, not the DOM. |
| ACP | Checkout sessions + product feed | Deterministic totals, idempotent completion | Buyer agents can complete real commerce. |
| Discovery | /llms.txt + JSON-LD | Generated from shop data, never hand-written | Machines understand the store without scraping it. |
| Voice | Gemini Live, server-dispatched tools | Ephemeral tokens · session and daily caps | Customers can shop by speaking, under the same gates. |
| Local AI | Ollama provider | Capability-tiered per model; unknown models read-only | Sensitive workflows need not leave the machine. |
The first commit is the exit plan.
Cartwright scaffolds into a repository you own and then gets out of the way. There is no control plane holding your storefront up, and no per-order cut on the way through.
Stop using Cartwright services tomorrow and the deployed shop keeps running — because it was never running on ours.
What you keep, in detail →- repository
- customer-owned
- database
- customer-chosen
- infrastructure
- customer-controlled
- license
- MIT
- platform fee
- 0%
Cartwright
Three live sites gate every release.
Nothing ships until all three pass it — a max-features webshop, an open demo shop, and the same engine running in website mode with no cart at all.

Solbrillen.dk
solbrillen.dkThe eyewear store the engine was extracted from — now running the latest template with every feature flag on.
See it in the showcase →

Northbound Coffee
demo.cartwright.appThe open demo shop: full storefront loop in Stripe test mode, nightly reset. Browse, edit, order freely.
See it in the showcase →
Teloz
teloz-showcase.vercel.appThe company site behind Cartwright — the same engine in website mode: no cart, just pages, run from the same admin.
See it in the showcase →
Honest answers, no marketing-speak.
If your question is not here, open a GitHub issue. We will add it.
npx create-cartwright@latest my-site --profile site scaffolds a plain website: designed pages (8 design packs, blank among them), JSON-LD, sitemap, llms.txt, an Open Graph image route, locale routing and a contact form — in a plain Next.js repo with 20 runtime dependencies and zero required environment variables. It builds with next build and deploys to Vercel unchanged. No admin, database, auth or agent tools; those are the default profile, one flag away, same engine. Measured: ~22 s to scaffold and install, ~27 s to build, ~2 s to a rendered homepage (provenance on the guide). Build a plain website →create-cartwright) and this site. The CLI scaffolds from the public template repo, so no token is required — and the code it gives you is yours to fork, modify, and ship.--profile full and use the Hoptify import at /admin/hoptify — palette and products from the product URLs you list (Firecrawl key + an AI key); pages and variants by hand. From any URL: the default profile's content.import_site crawls a site and lands pages and posts as drafts you review (siteImport flag, Firecrawl key; services land in an admin table with no public page today — reclassify them as pages). From WooCommerce: product CSV import (simple products) plus the URL import today; a dedicated WooCommerce importer is planned, not built. Old URLs keep their rankings through admin-managed redirects — exact paths, one at a time, and they need Upstash Redis. Cartwright never runs on WordPress hosting — it replaces the site and imports from it. Orders and customers never move. Choose your path works the five cases through./api/mcp endpoint so external agents can act on the shop with tools you define. The Plus roadmap adds MCP integrations for Klaviyo, HubSpot, Slack, Zapier, Airtable, Notion, and four others so the agent can act on them directly — see integrations.One line. A shop in five minutes — a website in one.
Works on macOS, Linux, and Windows (via WSL). Node 22+ required. No GitHub token, no marketplace install — just npm.
npx create-cartwright@latest my-site --profile site — a plain website, no database, no login: ~22 s to scaffold and install, ~27 s to build, ~2 s to a rendered homepage (measured; provenance on the guide).
Ship a real shop this week.
Scaffold cartwright, drop in your Stripe keys, and have a checkout flow up before lunch. No platform contract, no per-order fee — and the repo is yours from the first commit.