Local development
Node 24 and pnpm 10 (corepack enable).
pnpm installpnpm dev --mocks # the app alone in Expo Go, simulated data, no credentialspnpm dev:setup # once: local secrets for the workerspnpm dev # API + MCP (wrangler dev) + Expo, against a local Postgrespnpm dev --web # real mode in the browser: real passkeys, Turnkey, testnet balancesWithout Turnkey credentials, development uses MockTurnkey, and the app can sign with a development
passkey stand-in (refused outside development). pnpm smoke runs the whole agent payment flow against
the local workers and Postgres.
Checks
Section titled “Checks”| Command | Runs |
|---|---|
pnpm check |
Typecheck and lint, then unit and integration tests, then the workerd e2e suites |
pnpm test:web |
Cross-browser web E2E (Chromium, WebKit, Firefox) |
pnpm smoke |
The full agent payment flow locally |
pnpm format:check |
Prettier |
pnpm knip |
Dead files, exports and dependencies |
This docs site
Section titled “This docs site”pnpm --filter @zyropay/docs dev # http://localhost:4322pnpm --filter @zyropay/docs diagrams # re-render diagrams/*.mmd to public/diagrams (light + dark)pnpm --filter @zyropay/docs build # the checked production buildpnpm --filter @zyropay/docs preview # serve dist/ with its _headers on :8788Live evidence lives in apps/docs/src/data/evidence.json. To record a new run, fill its txHash
(and block, fee and checks) from the explorer; an empty hash renders as “Awaiting live run”.