Quickstart: self-host in 10 minutes
You need Docker, Node 22+, pnpm, and a free Stripe account with Issuing enabled in test mode. Everything runs locally; no real money can move (the app refuses to boot with a live key).
1. Clone and configure
git clone https://github.com/meyerdav24/molt && cd molt cp .env.example .env
Open .env and fill in four values (each is explained inline):
MOLT_SESSION_SECRET: any long random stringMOLT_TA_SIGNING_KEY: the generator one-liner is in the fileSTRIPE_API_KEY: a test-mode restricted key (rk_test_...) with Issuing Cardholders and Cards write accessEMAIL_API_KEY+EMAIL_FROM: a Resend key, for step-up emails. Skippable at first; held purchases then wait without an email.
2. Run it
docker compose up
Postgres comes up with the schema applied, the web app (the Tab Authority) listens on localhost:3000. Check /api/v1/health: it must say "mode": "test".
3. Open a tab (the one human moment)
Register at /login with a passkey, then open a tab: set total budget, per purchase max, expiry, categories, and the step-up policy. Your passkey signs exactly these limits. In the dashboard, create an agent key for the tab; it is shown once.
4. Connect an agent
Follow Claude Desktop / MCP with the agent key from step 3. For a first purchase you need a Shopify store to buy from; a free development store with the Bogus payment gateway works out of the box (add its host to MOLT_BOGUS_GATEWAY_HOSTS in the MCP server env, because test-mode issuing cards cannot be charged across Stripe accounts).
5. Buy something, then verify the receipt
Ask the agent to buy an item. Watch the tab detail page: shell grown, worn once, shed. Download the receipt JSON from the dashboard and check it offline:
npx molt verify receipt.json
Contributors who prefer running without Docker: pnpm install, pnpm build, then pnpm --filter @molt/web dev against any Postgres, same .env.