Licenses & renewals
App identity, integrators, offline use, and license delivery.
Every app that runs Slab needs a runtime license. A license is one text string, signed by Slab. The app hands it to Slab, and Slab checks it on the device. There is no license server, no activation, no device count and no end-user account.
What a license contains
| Field | Meaning |
|---|---|
| Integrator | The company that holds the license |
| Client | The company whose app uses it |
| App | The app it is bound to (see below) |
| Kind | Trial, pilot or production |
| Period | Start and expiry dates |
| Features | Image models, text generation, GPU, NPU, protected models |
| Minimum Slab release | The oldest Slab version it works with |
Slab confirms the app from the platform itself, so a license copied into a different app is rejected:
| Platform | Bound to |
|---|---|
| iOS / iPadOS | Bundle ID and App ID prefix |
| Android | Package name and signing certificates (with Play App Signing, Google's certificate, not the upload key) |
| macOS | Bundle ID and Keychain group of the signed app |
One license works on every installation of that app, on any number of devices.
Two ways to hold a license
Your own app. A company that builds its own app is both the integrator and the client. It gets one license per app and platform.
An integrator serving clients. A company that builds Slab into its own SDK or product for other companies needs a separate license for each client. Client A's license covers only client A's apps; it never covers client B. Each client's license is signed by Slab, and the integrator delivers it inside that client's app. One client can hold licenses for several of its apps when its purchase covers them.
Terms
- The self-service trial lasts 30 days, once per app ID. An administrator can extend a trial.
- Paid license terms are confirmed with your invoice.
- Every license expires, production included.
- At expiry, new runs stop, even for models already loaded. Work already running finishes.
- A renewal is a new string. It restores the app at once, with no app update.
- A trial or pilot can be renewed into production in place.
In the app
- On Android, bind Slab to the app once at startup.
- Load the license string from anywhere: an app resource, your remote configuration (for example Firebase Remote Config), or your own server. The string is not secret; its signature makes it valid.
- Attach it to the Config before opening models. Every session opened from that Config uses it.
- To renew, give the new string to the Config for new sessions, and to open sessions to renew them without reloading the model.
Slab does not fetch, store or schedule licenses; delivery is up to the integrator. If a new string is rejected, the previous license stays in place until it expires.
When a license is refused
Opening a model or running it fails with a license error and a reason:
| Reason | Meaning |
|---|---|
| Missing | No license attached |
| Not signed by Slab | Unknown key or invalid signature |
| Wrong app | Installed app differs from the license |
| Wrong platform | License is for another platform |
| Release | This Slab version is older than the license requires |
| Feature | Model type, backend or protection not included |
| Not yet valid / expired | Outside the license period |
Reading model information and preparing images work without a license.
Protected models are separate
The runtime license allows an app to run Slab. Encrypting a model and unlocking it with a key or model token is a separate mechanism, controlled by the model's owner.
Get or renew a license
Register an app ID in your customer console, then start a 30-day trial or request a paid license. Copy or download the issued license from the app page.
Paid licenses and renewals are reviewed by our team. We send an invoice and issue a 30-day temporary license before payment arrives by bank wire. Trusted repeat customers may receive a full license upfront. Once payment is confirmed, your full license is available in the console.