Licensing
Roster starts in Free edition when no license key is provided. The active edition, license status, limits, usage, and warnings are visible in Settings.
Production editions
Section titled “Production editions”| Edition | Included behavior |
|---|---|
| Free | 20 resolvable humans, 5 active human team members, and Model Runs. No license key is required. |
| Pro | Purchased resolvable-human capacity and Model Runs. A valid license key is required. |
| Enterprise | Negotiated resolvable-human capacity, Model Runs, Audit Events, PostgreSQL database support, High Availability, and advanced OpenTelemetry export and status. A valid license key is required. |
AI agents and service accounts do not count toward the Free active human team-member limit.
Use Free for an unlicensed evaluation or a small standalone deployment. Install a Pro license when the purchased participant capacity is required. Install an Enterprise license before configuring PostgreSQL, High Availability, Audit Events, or external OpenTelemetry export.
Structured stdout logs, liveness/readiness probes, and trace correlation are included in every edition. OTLP trace/metric export, cross-replica observability status, the admin System health page, and its REST/MCP interfaces are available in Enterprise. Free and Pro never send external telemetry even if export is requested.
Roster continues to work when usage is above the included capacity. Writes that would add more resolvable humans or active human team members may be blocked until the plan or license is updated.
Expiration and grace period
Section titled “Expiration and grace period”Paid licenses show an admin warning two weeks before expiration. After expiration, Pro and Enterprise stay active during a two-week grace period. If no renewed license is installed before the grace period ends, Roster falls back to Free limits.
Install a license key
Section titled “Install a license key”For Pro or Enterprise, add the signed license JWT supplied by Roster as a runtime secret:
ROSTER_LICENSE_KEY=<license-jwt>The license JWT is a single-line secret value. Store it in the same secret
manager used for ROSTER_AUTH_SECRET and provider credentials. Do not commit it
to source control or bake it into a custom image.
If your platform prefers mounted secret files, mount the JWT into the container and point Roster to the file:
ROSTER_LICENSE_FILE=/run/secrets/roster-license.jwtStandard deployments do not need to configure
ROSTER_LICENSE_JWKS_FILE. The production image already includes Roster’s
trusted public keyring and verifies paid licenses locally, without runtime
network access to Roster servers.
Roster reads and verifies the configured license when the process starts. After adding or replacing either license source, restart or roll every Roster instance, then confirm the expected edition, term, limits, and warnings in Settings.
Fly.io
Section titled “Fly.io”flyctl secrets set ROSTER_LICENSE_KEY='<license-jwt>'Kubernetes
Section titled “Kubernetes”kubectl create secret generic roster-license \ --from-literal=ROSTER_LICENSE_KEY='<license-jwt>'Expose the secret to the Roster container as an environment variable.
Renew or upgrade
Section titled “Renew or upgrade”When a renewed or upgraded license is issued, update the same runtime secret or atomically replace the mounted license file. Restart or roll every Roster instance so the new key is loaded. Keep the previous key available until the new edition, term, and limits are confirmed in Settings.
Enterprise deployments using PostgreSQL must keep a valid Enterprise license. See Databases and Migrations for the database contract and High Availability for the multi-instance architecture.