microservices.sh vs Supabase & BaaS

BaaS is the substrate. Modules are the contract layer above it.

Supabase is excellent infrastructure, and its MCP connector makes it a default agent backend. But it's raw access — an agent can run SQL or change an RLS policy with no guardrail. microservices.sh sits one layer up: composable, source-visible modules you own, with contracts that enforce how auth, payments, and audit behave.

Compared against: Supabase, Firebase, Convex

Credit where due

What Supabase is genuinely good at.

The gap

Where it leaves you exposed.

Raw access, no guardrails

The 32 MCP tools let an agent run raw SQL and modify policies. That's power without a contract — nothing enforces that your Stripe handler is idempotent or your audit log captures the right events.

No module / version contract

There's no module.json, no lockfile pinning the integration version, no permission boundary between components. It's infrastructure, not composable application modules.

Postgres/Node, not Cloudflare-native

No Workers-for-Platforms multi-tenant dispatch, no D1, no per-tenant custom-domain routing. You operate Postgres, RLS, and migrations yourself.

Side by side

Head to head.

Supabase & BaaS microservices.sh
Abstraction level Raw infra (Postgres, RLS, edge fns) Composable app modules above the infra
Agent access 32 MCP tools, raw SQL & policy Contract-gated module ops + safety checks
Guardrails Powerful but none Permissions + deploy-time checks by construction
Runtime Postgres / Node Cloudflare Workers / D1 / KV
Multi-tenant RLS + your own routing Workers-for-Platforms dispatch + custom hostnames
Ecosystem Large, embedded everywhere Early — honest about it
Choose Supabase when

You want a managed Postgres backend with auth and realtime, and you're comfortable governing the application logic yourself.

Choose microservices.sh when

You want Cloudflare-native application modules you own, with contracts and safety checks — the auth/payment/audit logic as code you read, not just the database hosted.

BaaS gives agents raw infrastructure access with no guardrails. Modules give agents composable, source-visible application primitives you own — the contract enforces correct webhooks, token rotation, and audit events by construction. We sit above the substrate, not beside the database.

Already decided to move off Supabase? Migrate from Supabase →Migrate from Firebase →