Kiln vs Directus
Facts checked 2026-10-06. Review owner: the Kiln maintainers. The sources are listed at the end. The relationships facts were added on 2026-10-18, with their sources. See how these pages stay honest.
Directus is a data platform first. Point it at an SQL database and it turns the tables into an admin app and an API. Kiln is a content system first. It owns its schema and adds publishing, delivery and editorial workflow on top. Since Directus 12 the two also differ on licence, which matters more than any single feature.
At a glance
| Directus (12.x) | Kiln (1.0) | |
|---|---|---|
| Licence | MSCL-1.0-GPL since v12. Each version becomes GPL-3.0 four years after release; "Competing Use" is prohibited (licence, v12.0.0) | MIT (licence) |
| Free to use | Under $5M annual revenue and fewer than 50 employees, with a registered key (Open Innovation Grant); otherwise the free Core tier, capped at 3 seats, 25 collections and 5 Flows (licensing, pricing) | Free for everyone, with no caps |
| Without a licence key | From v12, SSO and custom permission rules are switched off. After a 30-day grace period on upgrade, GraphQL, WebSockets and MCP are disabled and non-admin login is blocked (v12 breaking changes) | Not applicable |
| Stack | Node.js. PostgreSQL, MySQL, Oracle, SQL Server, SQLite or CockroachDB (databases) | Elixir and PostgreSQL 17 with pgvector (deploy) |
| Latest major | 12.0.0, released 2026-06-10 (releases) | 1.0.0, released 2026-10-02 (changelog) |
| Modeling | Database-first: introspects existing SQL tables, or you model in its Data Studio (overview) | Kiln owns its schema; types in code or in the admin UI (extending content) |
| APIs | REST, GraphQL, WebSockets and MCP (overview) | JSON:API and GraphQL (with subscriptions), both read and write, plus MCP (API overview) |
| Relationships | Many-to-many through a junction collection it creates; many-to-any (M2A) across collections; a reverse O2M alias; on-delete triggers per relation (relationships, fields) | From 1.5: many-valued reference fields to one or several types, typed data on each connection, a reverse field, an on-delete rule, a cap on the target side; all defined in the admin UI (relations, plan) |
| Permissions | Roles and policies, field-level permissions, item-level filter rules (access control) | Roles, custom roles, per-type and per-field grants (RBAC). There are no arbitrary per-item filter rules |
| Real-time co-editing | Yes, since 11.15: presence and field locking (collaborative editing) | Presence and field locks; simultaneous typing is off in production (details) |
| Scheduled publishing | Not native; built with a Flows cron trigger (recipe) | Built in, plus content releases (releases) |
| Managed hosting | Team plan $499/month billed annually; Cloud add-on $99/month for Core and Grant users (pricing) | None. Self-host, or use a one-click platform (deploy platforms) |
Relationships
Kiln 1.5 set out to match Directus here
(relationships plan), so the two now cover the
same ground, built differently. A Directus many-to-many is a junction
collection, a real table per relationship
(relationships). A Kiln relationship defined in the
admin is a field whose connections live in one shared, indexed edge table. A
project that wants a table of its own generates one in code with
mix kiln.gen.join and moves the connections into it
(extending content).
| Directus | Kiln 1.5 | |
|---|---|---|
| Several target types in one field | Many-to-any (M2A) (relationships) | target_types (extending content) |
| Data on the connection | Fields on the junction collection (interfaces) | Typed link fields on the reference (extending content) |
| The other side | O2M alias field, with create and add-existing (relationships, interfaces) | A reverse field on the target, which can connect, disconnect and reorder; held in a published source's working copy until it is published (extending content) |
| Order | An optional sort field on the junction (fields) | List order, drag to reorder |
| On delete | Set null, set a default, cascade or prevent (fields) | Keep, clear or restrict, applied when a target is deleted for good (extending content) |
| Limit per target ("at most 3 books per author") | Not documented | max_sources |
| Filter through a relation | _some / _none (filter rules) | has, has_all, has_none, count, and on link data (JSON:API) |
| Nested reads | Dot notation in fields, deep for nested filters and limits (query) | GraphQL references / referencedBy; ?expand= on the delivery API (GraphQL, API) |
| Create a target from the picker | Yes (interfaces) | Yes |
Where Directus is ahead: every relationship is its own table from the start, and its triggers also cover a deselected item. Where Kiln is ahead: the cap on the target side, and a reader never sees a connection to a record they could not read themselves.
Choose Directus if…
- You already have a database and want an admin app and API over it without migrating. Kiln cannot do that; it owns its schema.
- You need Oracle, SQL Server, MySQL or CockroachDB.
- You want fine-grained permission filters per item, written as rules in the UI.
- Live co-editing matters today. Directus ships presence and field locking over WebSockets.
- Your organisation qualifies for the free grant, or the paid tiers fit your budget.
Choose Kiln if…
- You want an open-source licence with no conditions. Kiln is MIT. No revenue threshold, no seat cap, no key to register, and no features that switch off without one.
- You are publishing, not just storing data. Drafts, review, scheduled releases, versioned and pre-rendered delivery, a public website, SEO, newsletters and memberships are built in (content lifecycles, resilient delivery, SEO).
- You want PostgreSQL as the only dependency, with search and email included (deploy).
Moving from Directus
There is no Directus importer yet. Kiln's portable JSON format and its write API are the way in. See content portability and the JSON:API guide.
Sources
All checked 2026-10-06.
- Directus licence
- v12.0.0 release notes
- Licensing overview
- Directus pricing
- Version 12 breaking changes
- Database configuration
- Directus releases
- Getting started overview
- Access control
- Collaborative editing
- Scheduling content with Flows
Added 2026-10-18, for the relationships facts: