mrkeyoor.com_
Sat 31 Oct 21:50 UTC
Dataevaluationupdated 05 Oct 2026

directus review

Directus sits in front of a SQL database and gives it REST and GraphQL APIs, a browser-based data Studio, authentication, permissions, automation flows, and an MCP server. Developers keep control of the schema while editors and operators get an interface they can use without a custom admin build.

+124stars / 7d
Verdict

Our Directus run installed 2,082 packages and used 1,370 MB, then built successfully before the test command exited 1 after 99 seconds, so this is capable platform code with a costly contributor setup. Use it when one SQL model must serve developers, editors, and tightly scoped agents. Read the version 12 license entitlements before committing, and require a green test run in your own build environment.

We ran it

Lab card: what happened when we ran directusScreenshot of directus (directus.com)
Install✓ · 41s2082 packages · 1370 MB
Build✓ · 63s
Tests✗ · 99s7 passed · 0 failed of 7 (vitest)
Repo4631 files~508,860 lines of source · 24.9 MB · 18 CI workflows · Dockerfile · tests dir

Answers from our run

Does directus build from source?

Dependencies installed in 41 seconds (2082 packages), and the build succeeded in 63 seconds. We cloned commit f5be756 into a clean Debian container with 3 CPUs and no project-specific setup.

Do directus's tests pass?

No. The project's own test command finished in 99 seconds and reported 7 passed, 0 failed (vitest).

Who should not use directus?

Organizations that require an OSI-approved license: the README calls MSCL 1.0 source available and describes separate core, grant, and commercial terms.

What are the alternatives to directus?

Strapi, Payload, NocoDB. Our Directus run installed 2,082 packages and used 1,370 MB, then built successfully before the test command exited 1 after 99 seconds, so this is capable platform code with a costly contributor setup.

Setup3/541-second install, 1,370 MB footprint, and a failed test command
Docs4/5Strong deployment docs, but the OpenAPI spec has tracked gaps
Community5/538,023 stars, an October 5 push, and active issue work
Maturity4/5v12.4.1 is active, though our full test command failed

Discussed on

  1. hnDirectus – real-time REST and GraphQL API of any SQL database72 points
  2. hnOur repo hit a milestone today with 25k GH stars7 points
  3. hnDirectus become semi-closed source after benefits from open source contributions5 points
  4. hnSelf-hosted Directus 12 requires a license key to lift caps4 points
  5. hnDirectus – Open-source headless CMS and API built with PHP3 points

Who it’s for

Teams with an existing SQL database that need both an API and an editor-facing interface.
Product groups where developers own schemas but other staff manage records, files, and workflows.
Organizations willing to model narrow roles for people, applications, and MCP agents.
Self-hosters prepared to operate the database, storage, caching, backups, and upgrades.

Who it’s NOT for

Organizations that require an OSI-approved license: the README calls MSCL 1.0 source available and describes separate core, grant, and commercial terms.
Core-tier users who depend on SSO, custom permission rules, or custom and self-hosted LLM connections: the v12.0.0 release says those features require an appropriate license.
Teams generating clients from an exhaustive OpenAPI description: open issue 27700 catalogs routes and methods that remain undocumented.
Extension builders expecting the documented custom Docker pattern to work unchanged: open issue 26570 reports a runtime crash after pnpm 10 blocks required install scripts.

Setup reality

Our sandbox installed commit f5be756 in 41 seconds, pulling 2,082 packages and using 1,370 MB on disk. The build passed in 63 seconds. Tests exited 1 after 99 seconds: the supplied Vitest summary says 7 passed and 0 failed of 7, while the visible tail shows passing package groups before pnpm reports ELIFECYCLE.

A self-hosted instance needs database and storage connection details, a SECRET, administrator credentials, and permission policies. The production Docker Compose example adds PostgreSQL and Redis; other storage, email, and authentication choices bring their own credentials.

The measured source requires Node 22 and pnpm 10. Version 12 also enforces feature entitlements, and upgrades receive a 30-day grace period. Treat the license key, reverse-proxy trust, health checks, backups, and schema migrations as deployment work rather than optional cleanup.

Directus puts a governed API and Studio over SQL

Directus turns one SQL schema into three useful surfaces: REST, GraphQL, and a visual Studio. Developers still own the database model. Editors can manage records and files without waiting for a bespoke admin screen, while applications use generated APIs. Permissions reach down to fields, so the same data can look different to an editor, a public client, and an internal service.

The README names seven database families, including PostgreSQL, MySQL, SQLite, Oracle, and CockroachDB. Directus also has flows, extension points, authentication, file storage, an AI assistant, and an MCP server. That breadth is the reason to choose it. It is also why the decision resembles adopting application infrastructure more than installing an admin panel.

A 4,631-file checkout is a platform, not a thin database wrapper

commit f5be756 contained 4,631 files, about 508,860 lines of source, and a 24.9 MB checkout. The pnpm workspaces cover the API, Studio, SDK, extensions, storage drivers, validation, themes, and supporting packages. You avoid building those pieces yourself, but your team inherits their release changes, configuration, and operational boundaries.

The source tree requires Node 22 and pnpm 10. For a self-hosted production instance, the official deployment guide configures a secret, database connection, administrator email and password, persistent storage, and health checks. Its fuller Compose example adds PostgreSQL and Redis. Email, object storage, external identity, and caching each expand the credential and recovery plan.

What happened when we ran it

Our sandbox installed commit f5be756 in 41 seconds. It pulled 2,082 packages and occupied 1,370 MB on disk, then the build completed in 63 seconds. The fresh Debian container had 3 CPUs, 8 GB of RAM, Node 22, no secrets, and no elevated privileges. We measured repository mechanics, not API latency, editor responsiveness, or database throughput.

The test command failed with exit code 1 after 99 seconds. Its supplied Vitest summary recorded 7 passed and 0 failed out of 7. The last visible lines also showed successful groups in the GCS, S3, Supabase, validation, themes, and visual-editing packages before pnpm printed ELIFECYCLE and stopped.

Those passing lines do not turn the command into a pass. The log tail does not include the earlier failure that caused the nonzero exit, so naming a broken package or missing system dependency would be guesswork. The useful result is narrower: install and build worked, while this commit did not complete a green test step in our unprivileged container. The repository did include 18 CI workflow files, a Dockerfile, a Compose file, and a tests directory.

MCP access carries the same consequences as a database role

Directus exposes a native MCP endpoint for agents working with live data. Version 12 added an OAuth 2.1 authorization server with PKCE, controlled by environment settings. The README says agent access follows the same policies as human access, which gives operators one permission system instead of a second agent-only layer.

A shared policy system still needs careful roles. Give an MCP client only the collections, fields, and actions its job requires, and separate read access from mutations where possible. Flows can make a simple record update trigger more work. Issue 27766 also notes that /mcp and its OAuth client routes were missing from the OpenAPI spec, even though the routes existed behind settings and environment gates.

Version 12 makes licensing an architecture input

The project uses the Monospace Sustainable Core License 1.0, which its README describes as source available. Organizations below $5 million in annual revenue and 50 employees can apply for an Open Innovation Grant, while a core tier is available without a commercial license. Larger organizations using advanced or enterprise features need commercial terms. That is a procurement question before Directus becomes the center of a product.

Release v12.0.0 introduced active entitlement enforcement. It says new instances receive enforcement immediately and upgrades get a 30-day grace period. SSO, custom permission rules, custom or self-hosted LLM connections, and AI translations are among the affected features. The same release changed reverse-proxy trust defaults and restricted the dependency health endpoint, so an upgrade review has to cover deployment behavior as well as the Studio.

October activity is strong, but the API description has gaps

GitHub showed 38,023 stars and a last push on October 5, 2026. Search results counted 350 open issues and 54 open pull requests, rather than treating the combined 404 as bugs. The latest release, v12.4.1, shipped on September 23 with a fix for non-admin reads from the folders endpoint. This is an active project with current maintenance.

Activity does not erase interface risk. Open issue 27700 tracks missing paths and methods in the generated OpenAPI description, including dashboards, notifications, shares, deployments, MCP, and the SEARCH method. Teams that generate clients or validate traffic from the specification should compare it with the endpoints they actually use. Open issue 26570 separately documents a custom extension image that builds successfully, then crashes because pnpm 10 suppresses native install scripts.

Pick Directus when several users must share one data model

Directus makes sense when an existing relational model needs an editor, governed APIs, files, and automation in one product. Strapi is more content-shaped, Payload keeps configuration close to a TypeScript application, and NocoDB centers the table interface. Our 63-second build shows the source can compile cleanly at f5be756, while the failed 99-second test step keeps this from being a carefree recommendation. Test your real schema, license tier, permission matrix, and upgrade path before it owns production data.

Alternatives

ProjectWhat it isPick it when
Strapi gh↗A JavaScript headless CMS with a visual admin panel and plugin system.pick this instead when content types and editorial plugins matter more than reflecting an existing SQL schema.
Payload gh↗A TypeScript application framework and headless CMS configured in code.pick this instead when the CMS should live inside the same TypeScript and Next.js application as the product.
NocoDB gh↗A spreadsheet-style interface for working with relational data.pick this instead when table collaboration is the main job and you do not need Directus's full API and Studio model.

Sources

  1. Directus README
  2. Directus repository facts
  3. Directus self-hosting deployment guide
  4. Directus v12.4.1 release
  5. Directus v12.0.0 release
  6. Directus OpenAPI drift issue 27700
  7. Directus MCP specification issue 27766
  8. Directus custom Docker build issue 26570

More data reviews

jq · pgx · HowToLiveLonger · ip2region · dbdelve · litestream · the whole board →