Both give you an instant backend over a real database. The difference is where it runs, how you model collections, and how AI agents reach your data.
Supabase is an excellent open-source backend built around a single managed PostgreSQL database, with PostgREST, Realtime, Auth, and Storage on top. Backlex targets a different shape: one codebase that deploys to Cloudflare Workers, Vercel, Netlify, AWS Lambda, Google Cloud & Azure Functions, Deno Deploy, or your own server (Bun, Node, or Deno), runs on either PostgreSQL or SQLite/D1, and ships a first-class runtime MCP server so AI agents can use your backend as a tool.
| Backlex | Supabase | |
|---|---|---|
| License | Apache-2.0 core + managed Cloud | Apache-2.0 + managed cloud |
| Database | PostgreSQL and SQLite / Cloudflare D1 (dual-dialect) | PostgreSQL only |
| Runtimes | 9 runtimes — Cloudflare Workers, Vercel, Netlify, AWS Lambda, Google Cloud & Azure Functions, Deno Deploy, or self-host on Bun/Node/Deno — one codebase | Managed cloud; self-host via Docker |
| Edge-native | Runs inside the edge runtime, next to the request | Regional Postgres + Deno edge functions in front |
| Collections / schema | Managed tables (dynamic, additive-only DDL) or adopt existing tables via a metadata row — no data migration | Manage Postgres schema directly (SQL / migrations / Studio) |
| Schema versions | Snapshots, diff between any two points, branching, and scheduled auto-snapshots | SQL migrations, `supabase db diff`, preview branching |
| Database import | Import from PostgreSQL, MySQL, a SQLite file, MongoDB, Firestore or DynamoDB — plan → run, resume/cancel, `--since` delta re-sync | Migration guides using external tools (pg_dump, pgloader) |
| Field types | text, longtext, number, boolean, uuid, timestamp, json, relation / relation_many, i18n_text | Native Postgres column types |
| REST API | Auto-generated; filter/sort/paginate, nested-relation filters (2 hops), expand, aggregation | Auto-generated via PostgREST |
| GraphQL | Built in, auto-generated from collections | Via pg_graphql extension |
| Realtime | Live row changes streamed to clients over Server-Sent Events (SSE), permission-filtered | Postgres logical replication over WebSockets |
| Permissions | Role-based DSL: conditions + field-level allow-lists, one model across REST/GraphQL/realtime | Postgres Row-Level Security (SQL policies) |
| Multi-tenancy | First-class — workspaces with isolated data, end-users, auth, SSO & email; one deployment serves many, sessions pinned per tenant | DIY via Postgres RLS / separate schemas |
| Vector search | Built in — pgvector (PG) or Cloudflare Vectorize (SQLite/D1); auto-embed on write | Built in (pgvector) |
| Embedding models | OpenAI, Workers AI (bge-m3), or self-hosted TEI/Ollama/vLLM | Bring your own (OpenAI, etc.) |
| AI agent runtime | Built in — define agents that reason over your data and call your tools (DSL-scoped) in a persisted thread, with per-thread vector memory + live step streaming | Not built in (bring your own LLM via Edge Functions) |
| MCP server | Built-in runtime MCP server — ~149 tools (protocol 2025-11-25) over collections, vector search & admin, with OAuth 2.1 so hosted clients connect without an API key (bearer `pak_` keys still work for headless agents), per-key tool allow-lists + read-only guards | Official MCP server (project / database management from dev tools) |
| Storage + images | Files with ACLs, signed URLs; image transforms (resize/format/fit) on Bun in-process or the Cloudflare edge | Storage with image transformations |
| Edge functions | Sandboxed functions (QuickJS / worker-thread / remote executor); http/event/cron triggers | Edge Functions (Deno) |
| Extensions | Install admin panels, field editors & hooks from npm or an upload; hooks run sandboxed on events or on the cron tick | Postgres extensions at the database level |
| Auth providers | Email/password, OAuth, magic link, email-OTP, passkeys, anonymous | Email/password, OAuth, magic link, OTP |
| SSO | SAML 2.0 (per-workspace) and LDAP/AD | SAML (Pro / Enterprise) |
| Audit logs | Built-in activity trail + opt-in sensitive-read auditing | Via Postgres / log drains |
| Flows (automation) | Visual, no-code op-chains triggered by item events | Database triggers / functions (no visual builder) |
| Webhooks | Signed webhooks on item CRUD events | Database webhooks |
| Client SDKs | 11 first-party SDKs — TS, Python, Go, Rust, Swift, Kotlin, Dart, Java, .NET, Ruby, PHP | supabase-js + Flutter, Swift & Python (official); Kotlin, C#, Go (community) |
| Admin UI + CLI | Admin SPA and the `backlex` CLI (migrate, gen-types) | Studio + Supabase CLI |
| Spreadsheet grid + Kanban | Editable grid — cell selection, copy/paste, fill-down, undo — plus a Kanban board grouped by status | Studio table editor grid; no Kanban view |
| Live collaboration | Presence + field-level awareness on the item form and rows table, with an optimistic-concurrency guard on PATCH | Realtime Presence primitives; build the editing UI yourself |
| Dashboards / BI | Insights — embedded dashboards over collections, six chart types, grouping, public iframe embed token | SQL editor charts + Reports; embeddable dashboards via external BI |
| Advisor | Schema, permissions & config linter with a score and deep links to each fix | Security & Performance Advisors in the dashboard |
| Tracing + usage metering | W3C `traceparent` propagation, an admin Traces panel, OTLP export; per-key usage ledger with limits | Logs & metrics (Prometheus-compatible endpoint); usage per project in the dashboard |
| Messaging (push + SMS) | Built in — FCM/APNs/Web Push + SMS (Twilio/Amazon SNS), per-tenant credentials, device & phone registries, templates | No first-party messaging (Twilio for auth OTP only) |
| Batch / transactional writes | Bulk + opt-in atomic (all-or-nothing) writes over REST and GraphQL | SQL transactions / RPC functions |
| Background jobs | Durable queue — retry with backoff, dead-letter, delayed/scheduled; rides the cron tick, no extra infra | Supabase Queues (pgmq) + pg_cron extensions |
| Resumable uploads | TUS 1.0.0 chunked/resumable, native R2 / S3 multipart | Resumable uploads (TUS) in Storage |
| Draft / publish | Built-in draft↔published status, dedicated publish permission, scheduled publishing | DIY (status column + RLS) |
| Content localization | Per-field translations sidecar (any field type), side-by-side locale editing, compare mode, AI auto-translate of missing keys | DIY (locale columns or a translations table) |
| Public forms | Drag-block, multi-step form builder — share a link or embed script, anonymous uploads via signed tickets, conditions + per-locale copy; submissions land in a collection | Not built in (third-party form tools) |
| Feature flags / remote config | Built in — rollout-% and permission-DSL targeting, evaluated per caller | Not built in |
| Offline-first sync | Incremental changefeed + delete tombstones, client store (IndexedDB) + offline write queue | Via PowerSync (third-party) |
| Auth hardening | Per-IP rate-limiting + account lockout, 2FA/TOTP, email verification | Managed rate limits on auth endpoints |
In Backlex you either let it create a managed table (dynamic schema with an additive-only DDL applier that never drops or rewrites columns) or adopt an existing table by writing a single metadata row — no data migration, foreign keys auto-detected and surfaced as relations. Every collection instantly gets permission-aware REST + GraphQL, realtime, and an admin UI. With Supabase you manage the Postgres schema yourself (SQL, migrations, or the Studio table editor) and wire RLS policies per table.
Mark a collection vectorizable and flag the text fields to embed —
Backlex auto-embeds on every
write and runs approximate-nearest-neighbour search, using
pgvector on Postgres
or Cloudflare Vectorize
on SQLite/D1. Embeddings come from OpenAI, Workers AI (bge-m3), or your
own self-hosted model. The same vectors back the Ask-AI / RAG page and
the vector.search MCP tool, so agents get semantic search
for free. Supabase also offers vector search via pgvector, but you wire
the embedding pipeline and any agent access yourself.
See the Backlex documentation or the source on GitHub to get started. Self-hosting is free under Apache-2.0; the managed Cloud is optional.