From 58c4f43dff3ff6fbac834d357366eed44617be3f Mon Sep 17 00:00:00 2001 From: ChristopherJennings <1398135+ChristopherJennings@users.noreply.github.com> Date: Wed, 28 Oct 2026 17:21:54 -0400 Subject: [PATCH] Update licensing docs for the revised Open Innovation Grant Align the licensing pages with the updated OIG FAQ and terms: the grant is now perpetual, with documented eligibility, inclusions, limitations, and revocation grounds. Document pending activations, which let ephemeral CI instances use a license without consuming activations, and correct the startup behavior when a license cannot be validated. Co-Authored-By: Claude Opus 5.5 --- content/_partials/license.md | 2 +- content/licensing/1.overview.md | 16 ++- content/licensing/2.telemetry.md | 2 +- content/licensing/3.open-innovation-grant.md | 108 +++++++++++++----- .../3.breaking-changes/3.version-12.md | 2 +- 5 files changed, 99 insertions(+), 31 deletions(-) diff --git a/content/_partials/license.md b/content/_partials/license.md index 9cc85c69f..106b23b28 100644 --- a/content/_partials/license.md +++ b/content/_partials/license.md @@ -1,4 +1,4 @@ ::callout{icon="i-lucide-info"} **Licensing** - Directus is licensed under the [Monospace Sustainable Core License (MSCL)](https://directus.com/license). The free **core tier** does not require a license. Higher limits and additional features require a paid license, or qualifying entities can apply for the [Open Innovation Grant](https://directus.com/oig) for free commercial use. [Learn more about licensing](/licensing/overview). + Directus is licensed under the [Monospace Sustainable Core License (MSCL)](https://directus.com/license). The free **core tier** does not require a license. Higher limits and additional features require a paid license, or qualifying individuals and small organizations can [apply for the Open Innovation Grant](https://directus.com/oig) for free personal and commercial use. [Learn more about licensing](/licensing/overview). :: diff --git a/content/licensing/1.overview.md b/content/licensing/1.overview.md index 0908a4fd5..8d54fab25 100644 --- a/content/licensing/1.overview.md +++ b/content/licensing/1.overview.md @@ -9,10 +9,11 @@ navigation: Directus is licensed under the [Monospace Sustainable Core License (MSCL)](https://directus.com/license). Self-hosted instances without a license run on the **core tier**. To unlock additional capabilities or higher limits, add a license to your instance. -Free commercial use is available through the **[Open Innovation Grant](https://directus.com/oig)** for entities with less than $5M in annual revenue and fewer than 50 employees. Eligibility is assessed based on the legal entities whose representatives log into the Directus Studio. Full terms are set out in the grant usage agreement. +Free personal and commercial use, in perpetuity, is available through the **[Open Innovation Grant](/licensing/open-innovation-grant)** for individuals and for organizations with less than $5M in annual revenue and fewer than 50 employees. Eligibility is assessed based on the people who log into the Directus Studio. Full terms are set out in the [Open Innovation Grant terms](https://directus.com/terms/open-innovation-grant). Quick links: +- [Apply for the Open Innovation Grant](https://directus.com/oig) - [What counts as a user seat or a collection?](#key-definitions) - [Enquire about a commercial license](https://directus.com/contact) - [Upgrading to Directus 12 (existing customer)](#upgrading-to-directus-12) @@ -95,6 +96,8 @@ In online mode, your instance periodically revalidates with the Directus licensi Revalidation runs on a schedule set by the license's settings, at least every 12 hours. If a key is set but no license is in effect, for example because it could not be applied during startup, Directus retries every hour. +If a license cannot be validated during startup, Directus still starts and logs a warning. This applies whether the key is set through `LICENSE_KEY` or the Studio. An instance with a license already in effect keeps it. An instance activating a key for the first time runs on the core tier until a retry succeeds. + If a revalidation request fails, your instance keeps its current license and retries on the next scheduled check. Admins see a warning in **Settings > License** that explains why the license could not be renewed and the date it lapses. If renewal still fails by that date, the instance moves to the core tier. Your license key is kept, so the license is restored automatically if a check succeeds before downgrade. This is the default mode and is appropriate for any instance with outbound network access. @@ -192,6 +195,15 @@ On first use, a license key creates an **activation** on the Directus licensing A single license key may be activated against multiple instances at different `PUBLIC_URL`s, depending on your license. For example, an [Open Innovation Grant](https://directus.com/oig) license supports up to **5 activations**, intended to cover the distinct environments of a single project (such as local, dev, staging, and production). See [Open Innovation Grant](/licensing/open-innovation-grant) for how those activations apply across multiple projects, CI pipelines, and database restores. +### Pending Activations + +A new activation starts in a **pending** state for 24 hours. Pending activations do not count toward your activation limit. + +- If the instance is no longer active when the 24 hours end, the activation does not count toward your activation limit. +- If the instance is still active, or becomes active again later, the activation is confirmed and counts toward your limit. + +This lets short-lived instances, such as per-run CI environments, use a license without consuming activations. Parallel runs do not compete for activations either, however many start within the same 24 hours. + ### Deactivating a License Deactivating a license frees its activation on the licensing service so the binding can be reused. @@ -204,7 +216,7 @@ If the licensing service no longer recognizes the stored key, or the key is boun If your current usage is above core tier limits when you deactivate, the Studio will surface the [Resolution Flow](#resolution-flow) before completing the downgrade. ::callout{icon="i-lucide-triangle-alert" color="warning"} -**Always deactivate a license before destroying the instance it is bound to.** If you wipe the database, drop the container, or otherwise lose access to the Studio without deactivating first, the activation remains bound on the licensing service and continues to count against your license's activation limit. There is currently no self-service way to release a stranded activation — reach out to support if this happens. This is especially important when testing a license key in a throwaway environment. +**Always deactivate a license before destroying the instance it is bound to.** If you wipe the database, drop the container, or otherwise lose access to the Studio without deactivating first, the activation remains bound on the licensing service and continues to count against your license's activation limit. There is currently no self-service way to release a stranded activation — reach out to support if this happens. Throwaway environments destroyed within the 24-hour [pending period](#pending-activations) are not affected. :: ### Moving an Instance to a New URL diff --git a/content/licensing/2.telemetry.md b/content/licensing/2.telemetry.md index b519d1e38..fa7f39957 100644 --- a/content/licensing/2.telemetry.md +++ b/content/licensing/2.telemetry.md @@ -89,7 +89,7 @@ Reports are sent to the URL defined by the `TELEMETRY_URL` variable, which defau To opt out, set the `TELEMETRY` [environment variable](/configuration/general#telemetry) to `false` and restart Directus. ::callout{icon="i-lucide-info"} -Whether you can disable telemetry depends on your license. Some licenses require telemetry to remain enabled, in which case the `TELEMETRY` setting is ignored. To check whether yours allows it, review your entitlements under **Settings → License** in the Studio. +Whether you can disable telemetry depends on your license. The core tier and the [Open Innovation Grant](/licensing/open-innovation-grant) require telemetry to remain enabled, in which case the `TELEMETRY` setting is ignored. To opt out, you need a paid license that allows it. Review your entitlements under **Settings → License** in the Studio. :: ## Project Owner Registration diff --git a/content/licensing/3.open-innovation-grant.md b/content/licensing/3.open-innovation-grant.md index 2291336ef..0c0a93e28 100644 --- a/content/licensing/3.open-innovation-grant.md +++ b/content/licensing/3.open-innovation-grant.md @@ -2,39 +2,108 @@ stableId: 083d5666-86a7-4913-8ac5-07a6ba0a7acf title: Open Innovation Grant headline: Licensing -description: How the Open Innovation Grant works, what it includes, and how its activations apply to multiple environments, CI pipelines, and database restores. +description: Who qualifies for the Open Innovation Grant, what it includes, and how its activations apply to multiple environments, CI pipelines, and database restores. navigation: title: Open Innovation Grant --- -The **Open Innovation Grant (OIG)** provides free commercial use of Directus for entities with less than $5M in annual revenue and fewer than 50 employees. Eligibility is assessed based on the legal entities whose representatives log into the Directus Studio. Full terms are set out in the grant usage agreement. +The **Open Innovation Grant (OIG)** provides free personal and commercial use of Directus, in perpetuity, to individuals and to organizations with less than $5M in annual revenue and fewer than 50 employees. Eligibility is assessed based on the people who log into the Directus Studio. Full terms are set out in the [Open Innovation Grant terms](https://directus.com/terms/open-innovation-grant), and common questions are answered in the [OIG FAQ](https://directus.com/oig/faq). -[Apply for the Open Innovation Grant](https://directus.com/oig) to receive a license key. Once you have it, follow [Managing Your License](/licensing/overview#managing-your-license) to apply it to your instance. +**[Apply for the Open Innovation Grant](https://directus.com/oig)** to receive a license key. Once you have it, follow [Managing Your License](/licensing/overview#managing-your-license) to apply it to your instance. -This page covers the questions that come up most often once you have an OIG license: what it includes, how its activations work across environments, and how it behaves in CI pipelines and database restores. +This page covers who qualifies, what the grant includes, how its activations work across environments, and how it behaves in CI pipelines and database restores. ::callout{icon="i-lucide-info"} -The grant covers free use of **self-hosted** Directus. Directus Cloud is a separate managed offering; eligible entities can run on Cloud for a flat hosting fee. See [Pricing](https://directus.com/pricing) for current rates. +The grant covers free use of **self-hosted** Directus. Grant holders can also run on [Directus Cloud](https://directus.cloud) by choosing the Open Innovation Grant option when creating a project. Cloud is billed at a monthly rate that covers hosting and infrastructure only, not the software license. See [Pricing](https://directus.com/pricing) for current rates. :: ## Haven't Received Your Key? License keys are delivered by email. If your key has not arrived, check your spam or junk folder, as grant emails are often filtered there. +## Eligibility + +Eligibility depends on who logs into the Studio, not on who uses the applications you build with Directus. + +- **Individuals** qualify based on their own finances, not their employer's. A side project built by an employee of a large company is eligible. +- **Small businesses and agencies** qualify with less than $5M in annual revenue and fewer than 50 employees. +- **Non-profits** qualify with less than $5M in annual revenue and fewer than 50 employees. Unpaid volunteers do not count as employees. +- **Government organizations** are not eligible. + +When you build projects for clients, the client's size only matters if the client logs into the Studio: + +- If only you log in, eligibility is measured on your own size, even when the client is a large enterprise. +- If the client also logs in, the client must meet the same revenue and headcount thresholds for that project. + +If you or a client does not qualify, use the free core tier, purchase a Team license, or [contact sales](https://directus.com/sales). + +### How Thresholds Are Measured + +- **Employees** are full-time and part-time staff. Unpaid non-profit volunteers and students do not count. +- **Annual revenue** is revenue from sales of products or services. Donations, grants, and other funding are not revenue. +- **Companies under common ownership** are measured as a group. + +If you grow past $5M in revenue or 50 employees, [contact sales](https://directus.com/sales) within 90 days to find the right license. + +### Versions Covered + +The grant applies to Directus 12.0.0 and later. Earlier versions remain governed by the license they were released under and do not require a license key. + ## What's Included -An OIG license is not a trial or a reduced edition. It unlocks the entitlement-gated features most projects need, including custom access policies and SSO, with no caps specific to the grant. A small number of capabilities are reserved for higher commercial tiers. +An OIG license is not a trial or a reduced edition. It is the same software paid customers run, with no caps specific to the grant: + +- Unlimited seats, collections, and flows. +- Entitlement-gated features such as SSO and custom access policies. + +A grant license has the following limitations: + +- [Telemetry](/licensing/telemetry) is required and cannot be disabled. +- Product support is not included. Use the [community](https://community.directus.io) for help, or arrange paid support separately. +- [Offline mode](/licensing/overview#offline-mode) is not available. Air-gapped deployments require an Enterprise license. +- Directus may list your name and logo as a user of Directus. The main thing to plan around is the number of activations, covered below. +### Building Products With the Grant + +You can use the grant to build and sell your own products, including SaaS applications, as long as you stay within the thresholds. End users of your applications do not count toward eligibility or seats, even when they authenticate against Directus. + +You can extend and modify Directus for your own use, including extensions, hooks, endpoints, custom interfaces, layouts, panels, modules, and configuration. The grant does not allow you to: + +- Resell, redistribute, sub-license, or white-label Directus or the Studio. +- Remove or replace Directus branding. +- Modify the source code to bypass the license's limits. + +The test is whether your customers use your application or use Directus itself. + +## Term and Revocation + +An OIG license is granted in perpetuity. It has no expiration date and no renewal process. + +You can terminate the grant at any time. Directus may review grants and request proof of eligibility. Directus may revoke a license or disable its key if: + +- The eligibility information you provided is inaccurate. +- The license owner no longer meets the revenue or headcount thresholds. +- The grant terms are violated. + +The terms of the grant can change over time. A grant you have accepted stays under the terms you accepted unless you choose to accept updated terms. + +## Licensing Service Availability + +An OIG license validates online against the Directus licensing service. + +- **First activation:** If the instance cannot reach the licensing service on first activation, it starts on the core tier and retries every hour until activation succeeds. +- **After activation:** If the instance cannot reach the licensing service for more than 7 days, it downgrades to the core tier. If usage is above core tier limits at that point, the instance becomes [locked down](/licensing/overview#locked-down-instances). + ## Activations Each OIG license key includes **5 activations**. An activation binds the key to one instance at its `PUBLIC_URL` on first use, and that binding authenticates all later revalidation requests for the instance. See [Activations and project bindings](/licensing/overview#activations-and-project-bindings) for the full mechanics and the deactivation flow. -Five activations are intended to cover the distinct environments of a single project, such as local, dev, staging, and production, with one spare. Because a license binds to your `PUBLIC_URL` and project database rather than to a container or IP address, you do not consume a separate activation for each replica. +Five activations are intended to cover the distinct environments of a single project, such as local, dev, staging, and production, with one spare. A new activation is pending for its first 24 hours and only counts toward your 5 once the instance stays active past that point. Because a license binds to your `PUBLIC_URL` and project database rather than to a container or IP address, you do not consume a separate activation for each replica. ::callout{icon="i-lucide-triangle-alert" color="warning"} -**Always [deactivate a license](/licensing/overview#deactivating-a-license) before destroying the instance it is bound to.** If you wipe the database or drop the container without deactivating first, the activation stays bound on the licensing service and keeps counting against your 5. +**Always [deactivate a license](/licensing/overview#deactivating-a-license) before destroying the instance it is bound to.** If you wipe the database or drop the container without deactivating first, any activation past its 24-hour pending period stays bound on the licensing service and keeps counting against your 5. :: ### Multiple Projects and Agencies @@ -47,28 +116,14 @@ A license binds to your project and `PUBLIC_URL`, not to a container, IP address Set the license through the `LICENSE_KEY` environment variable at the service or task level so that every replica inherits the same value automatically. New containers added by autoscaling pick up the license on start with no manual setup or per-container retrieval. See [Replicas and Horizontal Scaling](/licensing/overview#replicas-and-horizontal-scaling) for more detail. -## Renewal and Expiration - -An OIG license is valid for one year from the date it is issued, and its expiration date is shown under **Settings > License** in the Studio. The grant can be renewed year on year, so eligible entities can keep running Directus beyond the first year. - -An automated renewal process is being established and will be available before your renewal date. You do not need to take any action ahead of it. - -After a license reaches its expiration date, a 30-day grace period applies, giving you time to complete renewal. During this grace period, Directus shows a notice in the Studio. - ## Continuous Integration and Ephemeral Environments -CI pipelines are the most common way to exhaust an OIG license's activations. The problem comes from fully ephemeral setups: if a pipeline run tears down both Directus and its database and recreates them from scratch, each run generates a new project and a new binding, consuming an activation every time. Because old activations are not released when the throwaway instance disappears, five runs exhaust the limit and later runs fail with an activation limit error. - -To validate licensed features (such as SSO and OIDC) in CI without burning through activations, use one of the following approaches: +Fully ephemeral CI pipelines can run with an OIG license without using up its activations. A pipeline run that creates Directus and its database from scratch generates a new project and a new binding, but that activation starts in a [pending state](/licensing/overview#pending-activations) for 24 hours. Pending activations do not count toward your 5, so parallel runs never hit the activation limit. If the instance is gone when the 24 hours end, its activation never counts. -- **Reuse the same database and `PUBLIC_URL` across runs.** If runs share a persistent project database and a constant `PUBLIC_URL`, they reuse a single binding and consume only one activation in total. Persist the database between runs rather than recreating it each time. -- **Validate against a stable instance.** Point feature tests at a long-lived dev or staging instance that holds its own activation, instead of spinning up a fresh licensed instance per run. -- **Run ephemeral pipelines on the core tier.** Leave the license out of throwaway runs entirely and reserve licensed-feature validation for a persistent environment. The core tier runs without a license and without consuming activations. -- **Use a commercial license** sized to your workload if none of the above fit your pipeline. +An instance that is still active after 24 hours, or becomes active again later, consumes an activation. If your pipeline keeps instances around longer than that, keep it to a single activation with one of the following approaches: -::callout{icon="i-lucide-info"} -Activation-based licensing is designed for stable, long-lived environments. We know fully ephemeral, per-run CI is a different pattern, and we are actively exploring ways to support it that work for both our users and the licensing model. -:: +- **Reuse the same database and `PUBLIC_URL` across runs.** If runs share a persistent project database and a constant `PUBLIC_URL`, they reuse a single binding and consume only one activation in total. +- **Validate against a stable instance.** Point feature tests at a long-lived dev or staging instance that holds its own activation, instead of keeping a fresh licensed instance per run. ## Restoring Database Dumps @@ -86,3 +141,4 @@ If you want a long-lived local or secondary copy running at the full tier, dedic - [Licensing overview](/licensing/overview) for license keys, statuses, and the deactivation flow. - [Telemetry](/licensing/telemetry) for what usage data Directus collects. - [`PUBLIC_URL` configuration](/configuration/general) for setting the value that licensing binds to. +- [OIG FAQ](https://directus.com/oig/faq) and [OIG terms](https://directus.com/terms/open-innovation-grant) for the full program details. diff --git a/content/releases/3.breaking-changes/3.version-12.md b/content/releases/3.breaking-changes/3.version-12.md index fb6b8b0ae..4455ace01 100644 --- a/content/releases/3.breaking-changes/3.version-12.md +++ b/content/releases/3.breaking-changes/3.version-12.md @@ -322,7 +322,7 @@ The grace period exists to ensure uninterrupted service for existing customers w **Existing customers** should contact [licensing@directus.com](mailto:licensing@directus.com) to obtain your license. This is the right action for any existing customer who has not yet received a license, or upgrades and sees the grace period reminder. :: -If you are not an existing customer and do not intend to add a license, reduce usage to within core limits before the grace period ends. Note that free commercial use may be available through the [Open Innovation Grant](https://directus.com/oig). +If you are not an existing customer and do not intend to add a license, reduce usage to within core limits before the grace period ends. Note that free commercial use may be available if you [apply for the Open Innovation Grant](https://directus.com/oig). If the grace period ends without resolution, the resolution flow is triggered on next admin login and certain APIs are locked down. To resolve, either add a license that covers your usage and features, or bring usage and feature use within Core tier limits.