Compare

Backlex vs Strapi

Both give you an admin app and an instant API over your content. Backlex adds edge deployment, a fully Apache-2.0 core (no Enterprise tier for SSO or audit logs), built-in vector search and realtime, and the ability to adopt your existing database.

Strapi is the most popular open-source headless CMS — a Node.js app where you define content types in an admin panel and serve them over REST or GraphQL. Backlex shares the "instant API + admin" idea but is built as a data platform for the edge: the same codebase deploys to Cloudflare Workers, Vercel, Netlify, AWS Lambda, Google Cloud & Azure Functions, Deno Deploy, or your own server (Bun, Node, or Deno), the whole core is Apache-2.0, and it ships realtime, vector search, and a first-class runtime MCP server so AI agents can use your backend as a tool.

Backlex Strapi
License Apache-2.0 MIT community core; SSO, audit logs & advanced RBAC are paid Enterprise
Runtimes 9 runtimes — Cloudflare Workers, Vercel, Netlify, AWS Lambda, Google Cloud & Azure Functions, Deno Deploy, or self-host on Bun/Node/Deno Node.js (self-host or Strapi Cloud)
Edge-native Runs inside the edge runtime No — Node server
Database PostgreSQL and SQLite / Cloudflare D1 PostgreSQL, MySQL, MariaDB, SQLite
Data model Managed tables (dynamic, additive-only DDL) or adopt existing tables via a metadata row Strapi-owned content types — it manages its own tables
Schema versions Snapshots, diff between any two points, branching, and scheduled auto-snapshots Content-type schema files live in code, versioned with git
Database import Import from PostgreSQL, MySQL, a SQLite file, MongoDB, Firestore or DynamoDB — plan → run, resume/cancel, `--since` delta re-sync `strapi transfer` between Strapi instances; other sources DIY
REST + GraphQL Both, auto-generated; nested-relation filters, expand, aggregation REST built in; GraphQL via plugin
Realtime Live row changes streamed to clients over Server-Sent Events (SSE), permission-filtered Not built in
Permissions Role-based DSL: conditions + field-level allow-lists, one model across APIs + realtime Roles & permissions; field-level + advanced RBAC in Enterprise
Multi-tenancy First-class — workspaces with isolated data, end-users, auth, SSO & email; one deployment serves many, sessions pinned per tenant Not built in (DIY or separate instances)
Vector search Built in — pgvector or Cloudflare Vectorize; auto-embed on write Not built in (Meilisearch / external)
Embedding models OpenAI, Workers AI (bge-m3), or self-hosted TEI/Ollama/vLLM
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 (custom code / external)
MCP server Built-in runtime MCP server — ~149 tools (protocol 2025-11-25) over collections, vector & admin; OAuth 2.1 so hosted clients connect with no API key (bearer `pak_` keys still work for headless agents), per-key tool allow-lists + read-only guards MCP via community plugin (CMS content)
Storage + images Files with ACLs, signed URLs; image transforms on Bun in-process or the Cloudflare edge Media library with upload providers; image formats via sharp
Edge functions Sandboxed functions — http / event / cron triggers Lifecycle hooks, controllers & services (Node)
Extensions Install admin panels, field editors & hooks from npm or an upload; hooks run sandboxed on events or on the cron tick Plugin system + marketplace (plugins run in the Node process)
Dashboards / BI Insights — dashboards over collections, six chart types, grouping, public iframe embed token Not built in (external BI)
Automation Visual, no-code op-chains on item events Custom code / plugins
Webhooks Signed webhooks on item events Webhooks on content events
Auth providers Email/password, OAuth, magic link, email-OTP, passkeys Email/password + OAuth (Users & Permissions plugin)
SSO SAML 2.0 + LDAP/AD (per workspace) SAML / OIDC (Enterprise only)
Audit logs Built-in activity trail + opt-in sensitive-read auditing + revisions Enterprise only
Client SDKs 11 first-party SDKs — TS, Python, Go, Rust, Swift, Kotlin, Dart, Java, .NET, Ruby, PHP Strapi client (JS/TS) + REST/GraphQL
Admin UI + CLI Admin SPA and the `backlex` CLI (migrate, gen-types) Admin panel + CLI
Spreadsheet grid + Kanban Editable grid — cell selection, copy/paste, fill-down, undo — plus a Kanban board grouped by status List view; grid / Kanban via plugins
Live collaboration Presence + field-level awareness on the item form and rows table, with an optimistic-concurrency guard on PATCH Not built in
Messaging (push + SMS) Built in — FCM/APNs/Web Push + SMS (Twilio/Amazon SNS), per-tenant credentials, registries & templates Not built in (community plugins)
Batch / transactional writes Bulk + opt-in atomic (all-or-nothing) writes over REST and GraphQL Limited (no atomic batch endpoint)
Background jobs Durable queue — retry with backoff, dead-letter, delayed/scheduled Not built in (cron plugin)
Resumable uploads TUS 1.0.0 chunked/resumable, native R2 / S3 multipart Not built in
Draft / publish Built-in draft↔published status, dedicated publish permission, scheduled publishing Draft & Publish (core)
Content localization Per-field translations sidecar (any field type), side-by-side locale editing, compare mode, AI auto-translate of missing keys i18n — per-locale entries with fields marked localized
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 (community plugins / third-party forms)
Advisor Schema, permissions & config linter with a score and deep links to each fix Not built in
Tracing + usage metering W3C `traceparent` propagation, an admin Traces panel, OTLP export; per-key usage ledger with limits Not built in (bring your own APM)
Feature flags / remote config Built in — rollout-% + permission-DSL targeting, evaluated per caller Not built in
Offline-first sync Incremental changefeed + tombstones + client store (IndexedDB) + offline write queue Not built in
Auth hardening Per-IP rate-limiting + account lockout, 2FA/TOTP, email verification Basic rate limiting (plugin)

Your database vs an owned content model

Strapi owns its schema: you model content types in the admin and Strapi manages the underlying tables. Backlex can do the same with managed tables (a dynamic, additive-only DDL applier that never drops or rewrites columns), but it can also adopt an existing database — point it at a table and it writes a metadata row, auto-detecting foreign keys as relations, with no data migration. That makes Backlex a fit for wrapping a database you already run, not just greenfield content.

Vector search & AI

Semantic search is part of the backend in Backlex, not a bolt-on. Flag a collection's text fields and it auto-embeds on write and runs ANN search via pgvector or Cloudflare Vectorize, with embeddings from OpenAI, Workers AI, or a self-hosted model — and the same vectors are exposed to agents through the vector.search MCP tool and the Ask-AI / RAG page. Strapi has no built-in semantic search; you wire up Meilisearch or an external vector database.

When Backlex is the better fit

  • You want to deploy at the edge on Workers, Vercel, or Netlify instead of running a Node server.
  • You want SSO, audit logs, and field-level permissions in the open-source core, not behind a paid Enterprise tier.
  • You want to adopt an existing database, plus built-in realtime and vector search.
  • You want native MCP access so AI agents can read & write through your permissions.

When Strapi is the better fit

  • Your team is editorial-first and wants a mature, content-focused authoring experience and publishing workflow.
  • You want the large Strapi plugin marketplace and a long-established ecosystem.
  • You need MySQL/MariaDB support and a Node.js server fits your infrastructure.

See the Backlex documentation or the source on GitHub to get started. Backlex's core is free and open under Apache-2.0; the managed Cloud is optional.