Product
One licensing and entitlement broker. Every consuming package.
Palladium is a multi-tenant licensing and entitlement service. It assigns licences to software packages scoped per client and per project, and brokers role-based access decisions on behalf of each licensed package from that package's own declared role catalogue. It is built and released from a single shared codebase, deployed as independently administered production instances rather than one shared multi-tenant runtime.
The Problem
Every package that needs licensing and RBAC ends up building its own.
A software package that has to check whether a user is licensed, and what that user is allowed to do, typically builds that logic itself - roles hardcoded into the package, licence checks scattered through the codebase, and no consistent record of who has access to what across products.
Palladium separates that concern out. A consuming package self-registers once and declares its own role and permission catalogue; Palladium stores and versions that catalogue without hardcoding any package's semantics, then owns role assignment, licence validity, and decision evaluation on the package's behalf. The consuming package only applies the decisions Palladium returns - it does not administer roles itself.
How It Works
Two artefacts. One broker. No per-interaction network call.
Self-registration
Each consuming package self-registers at publish time and declares its own role catalogue. Palladium stores and versions that catalogue - it never hardcodes what a role means for any particular package.
Identity, then entitlement
A short-lived access token carries identity and tenant, no permissions. A separately-fetched entitlement snapshot carries the resolved permission set. Consumers cache the snapshot and evaluate each action locally against it, rather than calling Palladium per interaction.
Fail-open vs. fail-closed
A defined FRESH/STALE/DENIED/RECOVERY state machine fails open on a transient network loss and fails closed on an integrity failure - revoked, tampered, or a mismatched tenant or catalogue. Maximum continuity without network contact: 900 seconds.
Deployment Model
White-label by configuration, not by fork.
Palladium is designed to run as two independently administered production deployments - one on UV's own Hetzner account, one on CodeZero's - built and released from a single shared codebase. Per-tenant branding (display name, logo, colour palette) is applied by configuration only, from that one codebase, so a new tenant's identity never requires a code change.
The operator administration surface used by UV and CodeZero staff to manage tenants, licences, packages, and role assignments is the one exception: it carries Palladium's own platform identity rather than any tenant's branding, because it is never tenant-facing.
Scope Boundary
What Palladium is not.
Not billing or invoicing
Billing, payments, invoicing, subscriptions, and price books are explicitly out of scope. The architecture must not foreclose them later, but Palladium itself does not build them.
Not an identity provider
Palladium consumes an identity assertion; it does not own primary authentication credentials, password reset, or MFA. It is a licensing and entitlement broker, not an SSO replacement.
Technology Stack
.NET, PostgreSQL row-level security, and a dependency-light client SDK.
Server-side projects target net10.0, the current .NET LTS release. The consumer-facing client SDK targets netstandard2.0 with zero third-party dependencies, so it can run in-process inside a host application alongside third-party add-ins.
| Server | .NET 10 (LTS), ASP.NET Core Minimal APIs |
| Database | PostgreSQL 17+, three-role Row-Level Security for tenant isolation |
| Cache / rate limiting | Redis, per-instance, non-persistent |
| API contract | REST/JSON, OpenAPI 3.1, frozen and diff-gated |
| Auth / session | OAuth 2.0 Authorization Code + PKCE, public client, no embedded secret |
| Client SDK | netstandard2.0, zero third-party dependencies |
| Operator console (O7) | ChameleonV2, UV's own React/TypeScript schema-driven component library |
Status
In active development.
Palladium is UV platform IP, measured on reusability across consumers - not built for a single client. CodeZero's "Pyrometrix" project is the first consumer and the acceptance vehicle for the platform, not the product definition.
A CodeZero-side UAT server is provisioned and live, with Docker installed. Development is proceeding Ordinatum by Ordinatum against a documented delivery plan, with each milestone independently verified before it is marked complete.
Talk to the Team About Palladium
Palladium is in active development, with a CodeZero pilot integration underway. Contact us to discuss licensing and entitlement brokering for your own software packages.
Start a Conversation