Everything v12 | Upgrades, New Features, and MSCL License

I’ve been getting my hands on v12 more and more. I like the improvements made to a lot of (tiny things) :partying_face:.

I am noticing though: I am less enthusiastic about the way the licensing is implemented currently. I think especially about the number of instances. I feel this was missed in earlier communication (or I just missed it).

It’s more technical. A common flow for me is to dump a database and restore it (like from staging to dev or production to dev). I have a feeling this will bite with a possible instance count. Obviously I will not deactivate a license before I would do that. So what would happen once I restore a dump locally and boot up Directus?

Additionally, on my local environment I sometimes adapt environment settings (like PUBLIC_URL) from production but other times I don’t. Some local environments might also have a license key loaded, some won’t.

And as an extra thought: how would that even work on the same environment? Like restoring a backup of production?

I’d rather ask and know this upfront because I am not willing to be caught off guard and suddenly unable to continue my work because of limits exceeded or other funky behavior :sweat_smile:.

This feeling also scares me because that is not how I used to feel about my projects using Directus. This part just feels different. I am not so sure yet :thinking:.

Hi Jogchum, Glad to hear you're noticing all the small improvements in V12 - and completely fair to ask about this upfront. To clarify the baseline: the OIG grant gives you 5 license activations. Each activation is a binding of your project identifier (derived from the database) and your configured PUBLIC_URL. In a horizontal scaling or replica scenario, a shared db + shared PUBLIC_URL counts as one binding regardless of container count.

On your specific scenarios - Restoring a dump to the same environment: The token travels with the dump, so on boot Directus re-validates rather than re-activates. No new slot is consumed. Restoring a dump to a different environment (e.g. prod → local) This depends on your PUBLIC_URL: If your local PUBLIC_URL matches the source environment's - the refresh ping matches the existing binding and the token keeps renewing. No new activation is consumed. Worth noting: things like SSO may misbehave because the PUBLIC_URL is technically wrong for that environment.

If your local PUBLIC_URL differs - The instance won't drop immediately, but the refresh will eventually be rejected. The cleanest path for local restores is to dedicate one of your 5 activations to a local environment with a consistent PUBLIC_URL - and always use that same URL when restoring from any upstream environment. If 5 slots isn't enough to cover your setup (e.g. multiple developers each needing a local restore environment), we can increase your OIG limit.

Thanks for your response James, much appreciated! The technical clarification helps. Knowing that the binding is tied to the database identifier and ⁠PUBLIC_URL combination makes it more manageable. For now I can see that working for me.

I do have a remaining thought about the instance limit though. I hope my intent is received well, I am not trying to be rude :sweat_smile:. It’s because I think the instance limit is not correct combined with the OIG. Additionally it’s not great to not have some self-service tools for the licenses outside an instance itself. That might be on the roadmap but is not available today.