Open source · engine v0.37.1

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

$npx create-cartwright@latest my-shop

Measured cold run: designed, verified homepage in 99 s → AI agent quick start

MIT · Next.js 16 · Tailwind v4 · Prisma · Stripe

New flagship

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.

morpho violet-blue · ivory

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.

Door one

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

Door two

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

Door three

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.

now in beta

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.

Brand-bound

Compile-time gate per shop via brand.features.voiceShop. Default off — zero overhead unless you opt in.

Cost-capped

Per-session minute cap + daily cap configurable in admin. BotID + per-IP rate-limit on token mint.

Auditable

Every voice tool-call logged with modality=voice, provider=google, model — same scope-guards as text chat.

Read the voice-shop docs →npx create-cartwright@latest

Live 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.

Open demo.cartwright.apptest mode — nightly reset
demo.cartwright.app/products

From zero to selling

Three steps. Five minutes.

The longest part is choosing a project name.

  1. 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
  2. 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
  3. 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.

DiscoverableGET /llms.txt

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.

CataloguedGET /api/v1/tools

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.

IndexableGET /api/acp/feed

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.

BuyablePOST /api/acp/v1/checkout_sessions

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.

ConnectablePOST /api/mcp

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.

Accountable/manifest

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.

NegotiablePOST /api/negotiate

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.

VerifiableGET /api/agent-card

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.

TrustedPOST /api/escrow/verify

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.

Identity-linkedGET /.well-known/oauth-authorization-server

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.

In-browserdocument.modelContext

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.

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.

$npx create-cartwright@latest my-shop
pnpm create cartwrightnpm create cartwright@latestbunx create-cartwright

FAQ

Honest answers, no marketing-speak.

If your question is not here, open a GitHub issue. We will add it.

Yes — all of it. The engine template repo, cartwright-template, is public and MIT-licensed, and so are the CLI (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.
No platform fees. You pay the underlying services you choose — Vercel hosting, Turso or Postgres, Stripe’s standard processing, Anthropic/Gemini if you use AI. There is no per-order tax going to cartwright. Optional paid tiers (Plus $49/mo, Cloud $199/mo, Enterprise) layer on hosted services, support, and Pro tooling — see pricing for the full breakdown.
Two paths. Today: scaffold cartwright, use the Hoptify import (palette + products via Firecrawl) plus product CSV import, and point your DNS over. The Stripe customer ID is the link key. Planned with Plus: an agentic onboarding flow that takes a source URL and runs a five-agent migration to a deployed Cartwright shop. The interactive preview is live today; the agent itself is still in development.
Medusa and Saleor are commerce engines you connect to a frontend. cartwright is a full shop you own end-to-end. next-forge is a SaaS starter — cartwright is the same opinionated spine, but for commerce specifically, with AI baked in.
You need to read TypeScript and have run Next.js dev once. The setup wizard handles every secret through a UI, so you do not edit env files unless you want to. Anything past “set up your shop” is normal Next.js work.
The admin ships with agentic helpers — drafting product copy, generating SEO metadata, answering customer questions in the storefront chat, and exposing a /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.
GitHub Issues — on cartwright-template for the engine, on cartwright-app for docs/CLI bugs. Paid setup help is available — email hello@cartwright.app.
When the template contract is stable enough that we will not break your fork on minor bumps. Realistic target: 8–12 weeks after the first dogfood shop ships.

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.