Every self-hosted installation needs a license token, whether its workers run in AWS microVMs or, for evaluation, on the same computer. One license covers one installation. You can buy licenses yourself on the website, or Ephemeral can grant your organization an allowance under a separate agreement.
How licensing works
- An owner or admin opens Deployments in the customer portal, chooses monthly or yearly billing, the number of installations and any extra blocks of runs, accepts the Self-Hosted License Agreement and pays with Stripe. The license is active as soon as the payment completes. Organizations with a negotiated agreement receive an allowance from Ephemeral instead, and skip this step.
- The owner or admin registers each installation under Deployments with a name. Ephemeral creates its machine ID and license token and shows the token once, with a Download license file button that saves the token, the machine ID and the deployment ID.
- The installation is configured with
EPHEMERAL_LICENSE_TOKEN,EPHEMERAL_MACHINE_IDandEPHEMERAL_CUSTOMER_URL=https://ephemer.al. It validates the token with Ephemeral at startup and before running work. The same deployment ID and token sign in to the image registry (see self-hosting).
Registering a deployment is a license operation only. It does not create, start or stop any infrastructure; you install and update that yourself, as described in self-hosting.
Plans and what a license includes
| Component | Monthly | Yearly |
|---|---|---|
| Base plan: 1 installation and 100,000 runs a month | $5,000 | $50,000 |
| Each additional installation | $2,500 | $25,000 |
| Each additional 100,000 runs a month | $1,000 | $10,000 |
The base plan includes one installation and 100,000 runs a month. Add installations and blocks of 100,000 runs as you need them: for example, the base plan with 2 additional installations and 3 additional blocks is 3 installations sharing 400,000 runs a month, for $5,000 + 2 × $2,500 + 3 × $1,000 = $13,000 a month ($130,000 a year).
Runs are pooled: the monthly runs belong to your organization and are shared by all of its installations, however they are split between them. Every installation allows 20 runs at once, with every update and email support. Larger allowances are available under a separate agreement: contact us. Prices exclude taxes. The subscription renews automatically until you cancel it.
Changing, cancelling and failed payments
- Manage subscription on the Deployments page opens the Stripe billing portal, where owners and admins update the card, download invoices and cancel.
- Cancelling takes effect at the end of the period you paid for. Installations keep working until then.
- Changing the plan: Change your plan on the Deployments page changes the number of installations and extra blocks of runs. Stripe prorates the change for the rest of the period, and a subscription on the earlier per-license price is converted to the base plan with extra items.
- Removing installations is refused while more installations are registered than the new number: deactivate some first. Removing blocks of runs lowers the shared monthly runs at once.
- A failed payment does not stop your installations at once. Stripe retries the payment, and the license stays valid until 7 days after the end of the last paid period. If payment is still missing, the license expires and installations stop validating. Paying later restores it.
- When a license ends, token and registry sign-in stop working. Your data was never with Ephemeral and stays in your own installation.
Check your entitlement
/v1/organizations/{id}/licenseentitlement (null when your organization has none) and its current use, the subscription (status, interval, quantity, paid_through) of a purchased license, and the sales information the website uses to offer a purchase.max_deploymentsintegermax_concurrencyintegermax_runs_per_monthintegerpooledbooleanpooled_runs_per_monthintegerruns_used_this_monthintegerexpires_attimestampstatusstringactive or expired.sourcestringsubscription for a license you bought, operator for an allowance granted by Ephemeral.active_deploymentsintegeravailable_deploymentsintegerThe subscription also reports installations, run_blocks (the extra blocks of runs) and pooled_runs_per_month.
/v1/organizations/{id}/license/plan409 when fewer installations are requested than are active.installationsintegerrequiredextra_run_blocksintegerRegister an installation
/v1/organizations/{id}/deploymentsnamestringrequiredmachine_idstring{
"id": "dep_2c8f0e6a4b1d9375c0e8a2f4b6d1c3e5",
"name": "production-eu",
"machine_id": "mch_3f9a0c1e7b2d4a6c8e10",
"token": "lic_…",
"max_concurrency": 4,
"max_runs_per_month": 20000,
"expires_at": "2027-09-30T00:00:00Z"
}Registration fails with 403 when your organization has no active license and with 409 when all allowed deployments are registered.
List and deactivate
/v1/organizations/{id}/deploymentsid, name, machine_id, max_concurrency, max_runs_per_month, expires_at and revoked./v1/organizations/{id}/deployments/{deployment_id}What the installation enforces
| Check | Effect |
|---|---|
| Startup | The engine does not start without a valid token and machine ID, or if its configured concurrency exceeds the license. |
| Before each run | The license is checked again, using a cached result for up to 30 seconds. If it is no longer valid, the run fails. |
| Monthly runs | When the month's allowance is used up, POST /v1/runs returns 402 until the next month. With a subscription, the allowance is the pool shared by all installations (see below). |
How the pool is enforced: each installation reports the runs it started this month whenever it validates its license (at most every 30 seconds while it starts runs). Ephemeral answers with a limit equal to that installation's own runs this month plus what is left of the pool, so the organization as a whole stays within its allowance. Installations refresh every 30 seconds, so the pool can be exceeded briefly, by at most the runs started across all installations in about a minute. An installation running a release from before pooling does not report; it receives an equal share of the pool.
The limits that apply are the lower of the values on the registration and the current entitlement, so a reduced entitlement takes effect without re-registering. When Ephemeral renews an entitlement, existing registrations get the new expiry and limits and keep their tokens. Revoking the entitlement revokes all of its registrations.