Open Tenants (/tenants). Admin writes.
A tenant with slug default is seeded. Omit tenant_id on prefix create to use it. Most sites never add a second tenant.
Create a tenant (slug + name), then attach prefixes. Rename patches name only. Plan can filter by tenant.
Readonly can list. API: GET/POST /api/v1/tenants, PATCH /tenants/{id}.
A tenant-scoped operator cannot delete or patch another tenant’s reservations, assignments, pools, or DHCP options. Attaching a pool to a missing class, or a class from another tenant, is refused.
Isolated networks
A tenant slug scopes IPAM and tokens. DHCP is tenant-blind — subnet selection is giaddr / link-selection / interface, not tenant_id. Two tenants with the same CIDR on one cluster are undefined.
Non-overlapping plans on one cluster are fine. If two networks must not share a DHCP server — the same RFC1918 numbers on isolated VLANs, a site that must not be scanned from another, different DNS, or different upgrade windows — run two clusters. Fleet is how you operate both from one login.