At a glance
The customer-facing plans are Free, Builder, and Enterprise. Enterprise is set manually by us — there’s no Stripe subscription behind it. Anonymous playground sessions use an internal temporary plan and are not a billable tier.
Per-resource caps
These are the current launch limits (source:apps/web/convex/lib/limits.ts):
A few notes:
- Data sources are Builder beta. Free workspaces cannot create Stripe, Postgres, webhook, or outbound MCP data sources while the connector layer is still being hardened.
- BYOK = 0 on Free. No scheduled runs and no
blocks.createAI generation. You can still author blocks for free — in the in-app editor or with your own coding agent over MCP (API keys are free on every plan). Builder unlocks AI generation, data sources, BYOK, scheduled runs, and stores. - Builder members are read-only by default. Builder is the single-operator model: the workspace owner has write powers, co-members are viewers. See Workspaces → Builder co-member model.
What Builder unlocks vs Free
Scheduled runs
Builder beta. Cron-driven agent loops that wake up, decrypt your BYOK key, and write to your blocks.
Data sources
Builder beta. Connect Stripe, Postgres, webhooks, and outbound MCP servers to blocks.
`blocks.create`
Builder-only. AI block generation streamed over MCP. Free path: hand-author in the in-app editor.
BYOK keys
Builder beta gives you 3 keys; Free gives you 0. BYOK is the substrate for any LLM call billed to you, not the platform.
Higher caps
100 blocks / 20 canvases / 5 schedules / 10 per-type data sources on Builder, all tighter or unavailable on Free.
Builder details
Pricing. 89 / year. Annual saves ~18% (one month free). Both are billed via Stripe. Card is charged immediately at Checkout — there is no free trial. Refund policy. No published refund policy. Reach out via the support address on/settings/billing if something went wrong; we handle refunds case-by-case in the Stripe Dashboard.
Plan switching. Monthly ↔ annual switch lives in the Stripe Customer Portal. We don’t surface a UI for it; the portal does the proration math.
Enterprise
Enterprise is for:- Teams that need write access for multiple members. Builder’s single-operator-write model is intentional for solo workflows — teams want every member to have agent-write powers.
- Custom caps. Anything beyond Builder’s 100 blocks / 5 schedules / etc.
- Non-Stripe billing. PO, ACH, annual invoicing with net-30, etc.
Plan changes propagate immediately
Oncheckout.session.completed (Stripe webhook), the workspace’s plan flips to builder and the limit table jumps the same tick. There’s no cache, no daily reconciliation — the next mutation sees the new caps.
Same on cancel and downgrade: the moment Stripe’s webhook lands, the workspace is back on Free’s caps. Existing over-cap resources stay (we don’t delete blocks when you cancel), but new creates get LIMIT_REACHED.
Reading limits programmatically
- MCP
workspace.get— for agents. Returns the fulllimitspayload (used / max / resetsAt per resource). Concepts → Plans and limits → Reading limits programmatically. /settings/billing— for humans. Same payload, member-readable, rendered as a table.
What’s next
Customer Portal
How to cancel, switch plans, and update your card in the Stripe Customer Portal.
Plans and limits (deep dive)
Per-resource caps, programmatic preflight, and how the gates fail.