Licensing & concurrency
How self-hosted workers enforce plan concurrency through the cloud control plane.
Even when the stack is self-hosted, the cloud control plane remains the authority on your plan and organization-wide concurrency. This page describes the licensing PoC that ships today.
Organization API keys
Workers authenticate to the cloud with an organization API key (VEIL_KEY)
issued from your account. The key identifies the organization and scopes what
the worker may request.
Authorize before launch
Before launching a browser, a worker calls POST /v1/license/authorize with the
organization key. The cloud counts running profile_sessions for the org and
compares against the plan's concurrency limit.
- Concurrency is organization-wide, not per-host.
- Authorization is fail-closed: if the cloud denies the request or is unreachable, the worker does not launch.
- There is no launch-slot lease, heartbeat renew, TTL reclaim, or offline grace window in the shipped PoC — the check is immediate at launch time.
Session start and end
After a successful authorize + launch, the worker reports session lifecycle to the cloud:
POST /v1/profiles/:id/sessions— session startedDELETE /v1/profiles/:id/sessions— session ended
Those rows power the dashboard activity list (GET /v1/sessions) and the
running-session count used by authorize.
Limits and unlimited plans
Plan limits use an explicit null = unlimited convention. Enterprise custom
plans can set unlimited profiles and concurrency while still being metered for
visibility.
Next steps
- Architecture — where licensing fits in the tiers.
- Operating the cluster — day-to-day fleet operations.