> For the complete documentation index, see [llms.txt](https://mercure-technologies.gitbook.io/xprem/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mercure-technologies.gitbook.io/xprem/references/open-core-and-licensing.md).

# Open core and licensing

xprem is an open-core project maintained by Axel Marciano (Mercure Technologies).\
\
Everything you need to run over-the-air updates in production is free and MIT-licensed: publishing updates, release channels, branches, rollbacks, every storage backend and CDN integration, the dashboard, Prometheus metrics.\
This is the core of the project, and it will always remain open source.

### Enterprise features

Alongside the core, we build a commercial Enterprise Edition for advanced and organization-level needs.

**Available today with an Enterprise license:**

* **Single sign-on**, so your team signs in with your own OIDC identity provider, with the option of validating every newly provisioned account by hand.
* **Audit logs**, which record who did what on the server, with a configurable retention and an optional periodic export to a dedicated bucket.
* **Token access rules**, which scope an API key to the branches whose names match the patterns you give it, and restrict where it may be used from with an IP allowlist.
* **User roles and RBAC**, which grant a member access to specific apps only, each app with its own set of permissions.
* **Expo Observe**, the telemetry pipeline behind update health, the logs explorer and your app's performance metrics.
* **Device identity**, a registry of your installs enriched with the custom attributes you define and with their geolocation.

**On the roadmap:**

* Advanced update targeting, such as regional or user-group rollouts
* Automatic rollbacks
* Priority support

This list will evolve as the product grows, but one promise never changes: a feature released under the MIT license will never move to the commercial edition. The core only grows.

### How it works in practice

Enterprise code lives in `ee/` directories of the repository, under a commercial license, while everything outside them remains MIT. Enterprise features ship in the same binary and Docker image as the core and stay dormant until a license key is activated. License keys are verified offline: your server never contacts an external service, sends no telemetry, and keeps working in air-gapped environments.

### Activate your license

A license key is activated from the **License** page of the dashboard, which only an admin can open. Activation stores the key in the database, so it needs a deployment running the control plane: a stateless server always runs the community edition.

Every instance re-reads the stored license every 30 seconds, so a key activated on one replica reaches all the others, and any change takes effect without a restart. Verification is done locally against a signing key embedded in the binary, which is why the server never has to call out to find out whether your license is still valid.

Removing the key returns every Enterprise feature to its dormant state and leaves your data alone. Roles and grants, token access rules, the SSO configuration and the audit history all stay in the database, and activating a key again brings them back exactly as they were.

### Contributing and the open-core boundary

If you plan to contribute a significant feature, please open an issue on the [GitHub repository](https://github.com/mercuretechnologies/xprem) before writing code, so we can tell you early whether your idea overlaps with planned enterprise features. The full contribution policy lives in the repository's `CONTRIBUTING.md` file.

### Interested in the Enterprise Edition?

If some of these features matter to your organization, reach out at <contact@xprem.dev>. Early feedback shapes what we build first.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://mercure-technologies.gitbook.io/xprem/references/open-core-and-licensing.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
