Skip to main content

Manage organization limits

Set per-organization caps on fleet resources (nodes, CPU cores, memory, GPUs). Org limits sit on top of the platform license caps — every edge create / node add request is gated by both the license cap and the org's own cap.

Who can do this​

Super-admins. Regular org members never see the Limits action.

Open the dialog​

  1. Admin → Organizations (sidebar in admin section).
  2. Find the org row and click Limits in its action column.
  3. The dialog opens with two halves:
    • Current usage — read-only, computed from the latest fleet snapshot. Shows nodes, cpu_cores, memory_gi, gpus and the org's edge count.
    • Limit form — four numeric inputs, each with an Unlimited toggle.

Set a cap​

For each dimension you want to bound:

  1. Toggle Unlimited off.
  2. Enter the cap as a whole number (cores, GiB, etc.).

Leave Unlimited on (the default) for any dimension where you don't want a per-org ceiling — license-wide caps still apply.

Click Save.

Validation rules​

The server enforces two invariants:

  1. Single-org cap ≤ license cap. A non-zero limit can't exceed the platform license cap on the same dimension.
  2. Sum of org caps ≤ license cap. Across all orgs, the non-zero limits on a dimension can't add up to more than the license cap.

If either invariant fails the dialog shows a toast with the specific dimension and conflicting numbers, e.g.:

Sum of org limits exceeds license cap: nodes sum=15 (other orgs 12 + this 3) > license=10

Lower this org's limit, or another org's, until the sum fits.

What happens at edge create / node add time​

After the limits are set, every request to:

  • POST /api/orgs/:org/edge-instances (BYO with provisioner)
  • POST /api/orgs/:org/edge-instances/provision (VM-path)
  • POST /api/orgs/:org/edge-instances/:id/nodes (add node)

…runs through three sequential gates:

  1. License count cap (e.g. max_edges not exceeded)
  2. License-wide fleet quota (total resources across all orgs)
  3. Org-level cap (this org's resources alone)

If the org's current usage already meets or exceeds any non-zero cap on a dimension, the request comes back with 402 ORG_LIMIT_REACHED — the response body names the failing dimension and the current vs. cap counts.

Set limit = 0 to remove a cap​

Toggle Unlimited back on (or type 0). The dimension falls back to "no per-org ceiling" — only the license cap applies.

When usage isn't shown​

If the periodic fleet aggregator hasn't run yet (very fresh install, no edges) the usage row shows zeros. The aggregator runs every ~15 minutes; once the first cycle completes, the dialog populates.

See also​