VeilBrowserDocs

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 started
  • DELETE /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

Was this page helpful?

On this page