The build engine AIs reach for.
Generating a site is becoming free — owning and operating a real business is the hard part. Cartwright is an open-source Next.js 16 engine scaffolded into a repo you own: design, database, checkout, and an admin your AI can operate. One brand.mode flag ships it as a corporate site, a webshop, or an agent storefront — selling to people on their phones and to buyer agents reading your /llms.txt.
↓ click the mic to try voice shopping
Measured cold run: designed, verified homepage in 99 s → AI agent quick start
MIT · Next.js 16 · Tailwind v4 · Prisma · Stripe
New flagship
FABLE — the metamorphosis flagship
The new website-mode flagship design: an instanced flock of 3D butterflies fluttering behind a serif display hero, a scroll-cinema metamorphosis timeline (caterpillar → chrysalis → imago) — and the whole thing is palette-adaptive, so the flock and every section re-tone to your brand.
Three doors, one house
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 86 REST tools across 35 domains 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, and ACP checkout endpoints — so AI assistants can find your shop, cite it, and buy from it.
/api/mcp · /api/acp
All three doors open into the same owned codebase — MIT-licensed, in your GitHub, on your infrastructure. Leave anytime — it's your repo.
Voice + vision shopping for your store
Customers can talk directly to your shop via Gemini Live. Floating mic-FAB on the storefront, server-side tool dispatch with the same audit-log + scope-guards as your text chat.
Compile-time gate per shop via brand.features.voiceShop. Default off — zero overhead unless you opt in.
Per-session minute cap + daily cap configurable in admin. BotID + per-IP rate-limit on token mint.
Every voice tool-call logged with modality=voice, provider=google, model — same scope-guards as text chat.
npx create-cartwright@latestLive demo
A real cartwright shop, running in Stripe test mode.
Browse the storefront, drop products in the cart, check out with 4242 4242 4242 4242 — and inspect the admin afterwards. It’s the same template you scaffold.
From zero to selling
Three steps. Five minutes.
The longest part is choosing a project name.
- step 01
Scaffold
Run npx create-cartwright. Pick database, AI features, and a name. The CLI clones a sanitised template, fills env, and installs.
npx create-cartwright@latest my-shop - step 02
Setup wizard
Visit /admin/setup. Add Stripe, Resend, Anthropic keys through a UI. Keys persist DB-first — no env-hopping when you go to production.
pnpm dev → /admin/setup - step 03
Deploy
Click "Deploy to Vercel" or push to your own repo. Cron jobs, AI gateway, and migrations are all wired into the deploy.
vercel --prod
THE AGENT SURFACE
Built to be found, cited, and bought by AI.
Search is becoming a conversation. A cartwright shop ships the machine-readable surface that lets LLMs and agents discover your catalogue, understand your products, and act on them — without you bolting anything on.
Legible to LLM crawlers
Every shop serves /llms.txt and Product + Organization JSON-LD on every relevant page. Generative engines don't have to guess what you sell — the structured answer is already there.
A public tool catalogue
/api/v1/tools is a machine-readable list of every action an agent can take — products.search, cart, and more. Typed, versioned, and discoverable without docs.
A JSONL product feed agents can ingest
Every shop publishes its catalogue as newline-delimited JSON at /api/acp/feed — the format ChatGPT Instant Checkout and other AI shopping engines read directly. No XML to maintain, no merchant centre to upload to.
Stateless agentic checkout
A buyer agent POSTs line items + shipping in one call; the response is a checkout session with totals already computed by lib/pricing.ts. /complete posts the order. Idempotency keys handle retries. Specified per the Agentic Commerce Protocol v0.2.
A built-in MCP server
/api/mcp speaks the Model Context Protocol natively, and /.well-known/mcp.json is the standard discovery card. Agents connect to your shop with no glue code.
Purchase-capable, on the record
The storefront chat completes real purchases — browse, cart, checkout — and every agent-initiated action lands in a public audit log. The /manifest page indexes the whole surface.
Deterministic negotiation, never an LLM
Buyer agents send a counter-offer; the Anchor-and-Resume engine returns {decision, nextOffer, reasoningCodes} — pure TypeScript, monotonicity-guaranteed, no prompt-injection surface. The engine produces the number; an optional LLM layer renders it as buyer-facing prose.
Signed Agent Card for discovery
Every A2A shop publishes a signed JSON Agent Card describing its catalogue, payment rails, and negotiation policy. Buyer agents verify the ed25519 signature offline before they trust a single field — no centralised registry, no marketplace middleman.
Verify-then-Pay with Proof of Task
Funds held in escrow at checkout, released only when the buyer submits a Proof-of-Task-Execution (hash match, delivery confirmation, ed25519 signature, or webhook event). Every state transition writes to an A-JWT audit log; disputes route to a human in /admin/agentic.
OAuth 2.0 identity-linking (UCP)
A full Authorization Code + PKCE server implements UCP dev.ucp.common.identity_linking, so an agentic platform can act on a shopper's behalf across merchants — a consent screen, scoped tokens, refresh reuse-detection, and hashed-only storage. Default-off (ucpIdentityLinking); run db:push + set AUTH_URL to turn it on.
WebMCP tools in the tab
The storefront registers search_products, get_cart, add_to_cart and a same-origin navigate as browser-native WebMCP tools, so an in-browser agent acts reliably instead of scraping the DOM. Experimental (Chrome 149 origin-trial), default-off (webMcp).
A dozen agent endpoints. One signed Agent Card. One deterministic negotiation engine. One Guardian middleware that enforces shop legislation before any money moves — plus a full OAuth 2.0 identity-linking server (UCP) and in-browser WebMCP tools. Cartwright ships the full Headless Merchant architecture — Agentic Commerce Protocol checkout, A2A negotiation, escrow with PoTE, UCP identity-linking. Every surface is gated behind its own brand.features flag and default-off, so your storefront stays clean until you opt in.
Built with Cartwright
Real sites, running the engine today.
Every release ships only after these three live sites pass it — a max-features webshop, an open demo shop, and a website-mode company site.

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.netThe company site behind Cartwright — the same engine in website mode: no cart, just pages, run from the same admin.
See it in the showcase →
Where it fits
Compared honestly, both directions.
Every comparison page names what the other tool genuinely does better. Balanced pages get cited; one-sided ones get ignored.
All comparisons → Medusa, Vercel Commerce, WooCommerce, Saleor, Wix, v0, Bolt, and more.
What's in the box
A real shop, not a starter kit.
Nine of the pieces it takes to actually operate — every one is shipping code, wired, typed, and verified. Not a marketing-page promise.
Admin panel
A full admin for products, orders, content, design, AI and integrations — one back office, no external dashboard.
Customer storefront
The full storefront loop — landing, product pages, cart, checkout, account, magic-link auth.
Stripe checkout
DB-first secret keys. Test mode and live mode toggled from the admin.
Order management
HPOS-grade back office: Orders workspace, returns/RMA, printable pick lists, and rule-based next-best-action. Four default-off, ecommerce-gated flags.
MCP server
Built-in /api/mcp with a tool registry — agents talk to your shop natively.
ACP endpoints
/api/acp/feed + /api/acp/v1/checkout_sessions — stateless agentic checkout per the Agentic Commerce Protocol spec, with /complete wired for delegated payment via Stripe Shared Payment Tokens (default-off env gate). ChatGPT Instant Checkout-compatible.
SEO automation
sitemap.xml, robots.txt, OG-images via Satori, JSON-LD, and /llms.txt for LLM crawlers.
Multi-currency
Charge customers in their own currency — Stripe presentment currency + an order-time FX snapshot. Display and charge share one path.
Multi-language
Locales in brand.config, automatic hreflang, and per-entity content translation (products, categories, pages, services, blog).
This is the short list. Everything in the box → Or take the integration-by-integration tour — Stripe, Resend, Vercel, Turso, Sentry, the AI providers — on /integrations. Stack: Next.js 16 · React 19 · Tailwind v4 · Prisma · Stripe, all current majors.
It's just code
Not a CMS. Not a config UI you'll outgrow.
One file is the brand. One file is the theme. One file is an MCP tool. If you can read TypeScript, you can run a shop.
import type { BrandConfig } from '@cartwright/shared';
export const brand: BrandConfig = {
slug: 'my-shop',
name: 'My Shop',
industry: 'eyewear',
theme: 'terracotta',
locale: 'en-US',
currency: 'USD',
ai: {
enabled: true,
provider: 'anthropic',
model: 'claude-opus-4-7',
},
policies: {
pricing: { showVAT: true, decimals: 2 },
shipping: { freeOver: 50_00 },
},
};install
One line. Real shop in five minutes.
Works on macOS, Linux, and Windows (via WSL). Node 22+ required. No GitHub token, no marketplace install — just npm.
FAQ
Honest answers, no marketing-speak.
If your question is not here, open a GitHub issue. We will add it.
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./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.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.