Skip to content

Organisations & Sites

This is the canonical reference for how Consystence models tenancy: accounts (people), organisations and the tenants they own, and sites (locations). It defines what is identified by what, how URLs are constructed, how one codebase is published as two server artifacts (Site and Cloud), and where licence tiers and membership roles attach.

ConceptWhat it isIdentity key
AccountOne per individual personEntra oid (object id)
OrganisationThe membership, ownership, and commercial boundary — it owns zero or more tenants, typically oneAccount-minted immutable id (org_…)
SiteA physical location belonging to an orgImmutable GUID; addressed by a path code

An account gains capabilities only through org membership — it has no inherent class of its own. The same person can be an admin in one org and a member in another simultaneously.

The stable membership key is the Entra oid — the tenant-immutable object id, identical across every relying party (the account console and each cell), so one person resolves to one identity everywhere. Email is a verified attribute and the invitation channel — never the membership key. A membership may optionally carry a preferredEmail chosen from the account’s verified emails, but authorisation is always resolved against the oid.

See Authentication for how identities are issued and verified.

An organisation is the membership, ownership, and commercial boundary — the entity that owns tenants and carries the tier and the member roster. A tenant is the operational workspace it owns: the unit of isolation, addressed by an immutable id, a slug, and a subdomain. In the common case an organisation owns a single tenant, so the two are often spoken of together; the fields below cover both.

FieldDescription
Organisation idImmutable, account-minted (org_…). Identifies the organisation in the account console.
Tenant idImmutable, account-minted when the tenant is provisioned. Also of the form org_…, but distinct from its organisation’s id. The directory key and the provisioning idempotency key.
SlugMutable, user-facing routing label. Becomes the subdomain. Unique per canonical domain, not globally — acme may exist once on .com and once on .dev.
NameDisplay name.
TierOrg-keyed licence tier — free by default, or a paid Integrator or Enterprise tier arranged with our team. See Licensing.

The ids are identity; the slug is a label. Internal records, isolation claims, licences, and site/scene references resolve through these immutable ids (or the slug as the cell’s operating key) — never through a value a client could spoof. The slug is deliberately changeable but strongly discouraged: renaming it triggers DNS propagation, TLS re-issuance, and broken external links, much like renaming a GitHub organisation. Slug changes are owner-only and not yet permitted in the current build.

Each tenant lives at its own subdomain on its canonical domain — .com for Enterprise tenants, .dev for Integrator tenants, trials and sandboxes (see Domain families):

{slug}.consystence.com e.g. acme.consystence.com

One URL, one login, one tenant boundary.

Org membership carries exactly one of three roles:

RoleAuthority
ownerThe tenant’s irreducible root authority. Full administration; only an owner may manage owners.
adminFull tenant administration — manage members, domains, licences, sites.
memberBelongs to the tenant; no tenant-admin authority.

An organisation always keeps an owner: the account console never removes an organisation’s owner, and the cell mirrors the owner and admin set the account holds. The cell’s own guard prevents removing or demoting the last owner-or-admin member.

The table above is the cell tenant-membership model. The account console’s roster for a free organisation (one that holds no paid tenant) is currently owner / member only, with a single owner — it has no admin role yet.

See Roles & permissions for the full authority model and the two-gate (membership vs. operation) split.

A site is a physical location belonging to an organisation — a plant, a CHPP, a workshop.

Sites are declared account-side, per tenant: an owner declares a site on the tenant’s Sites page in the account console, and the declaration is fed down to the cell. Removing a declared site never touches the cell’s operational data for that site. Site-activation codes are issued against a declared site.

FieldDescription
GUIDImmutable internal id.
CodeReserved at creation; the path segment under the org subdomain.
NameDisplay name (e.g. “Riverbend CHPP”).
OrgParent reference — the owning tenant’s id in the account directory (sites are declared per tenant); the cell’s site records currently carry the tenant’s slug as the operating key.
LocationGPS coordinates / address.

A site is a path route under the org subdomain — never its own top-level domain:

acme.consystence.com/sites/{code}

There is no .site TLD and no per-site subdomain; the fleet dashboard and every site view are routes under one tenant URL. A site may host zero or more server installs, edge runtimes, and deployables. A site with zero installs is valid — declared in the cloud but not yet commissioned.

graph TD
  CP["Account control plane<br/>account.consystence.com"] -->|provisions| ORG["Tenant<br/>{slug}.consystence.com"]
  ORG --> S1["Site<br/>/sites/{code}"]
  ORG --> S2["Site<br/>/sites/{code}"]
  S1 --> SRV["Site server"]
  S1 --> EDGE["Edge runtime"]

Consystence ships as two published server artifacts — Site and Cloud — with the mode baked into each at build time, not selected by runtime configuration:

  • Cloud — the multi-tenant server running on a cell, where each tenant’s hosted workspace lives. It provides the fleet view across a tenant’s sites, validates sign-ins itself, and relays site activation and mediates licensing for the account control plane, which keeps the identity directory, provisions tenants, and is the sole licence issuer. The cloud is never in the runtime data path.
  • Site — an on-premises server at a site. It is authoritative for its own model configuration and is offline-capable, continuing to operate when disconnected.

A site server is enrolled once, by redeeming a one-time activation code through its hosting cell: it receives its identity and, where a seat is available, a signed licence that it then verifies offline. Activation for fully air-gapped sites is roadmap. Delivering configuration from the site model to edges automatically (from the site server, or from the cloud where a site has no site server) is roadmap; today each edge runs on its own local settings. Above the cells, the account control plane provisions tenants into cells.

See Cell topology and the Architecture overview for how cells host tenants, and the Edge runtime for what runs at a site.

A site hosts deployables, each following a template → instance pattern (an integrator authors a template; an instance is stamped out at a specific site):

ClassDomainStatus
ProcessPhysical plant control — pump station, conveyor, CHPP circuitActive
ApplicationDigital workflows — inspections, checklists, shift handoverRoadmap — not yet built
MissionRobotic operations — stockpile survey, yard inspectionFuture
  • Process — a running instance of an industrial process with real equipment, I/O, and control: device instances, scene graphs, alarm definitions, trend configuration, and control logic. Processes are deliberately independent in the current model (no shared device instances or cross-process state); shared physical equipment is modelled as cross-referenced instances in each process, because ambiguous control authority is a safety concern for a mining audience.
  • Application (roadmap) — a digital workflow (forms, procedures, inspections) not tied to equipment I/O. Not yet built.
  • Mission (future) — robotic operations from a base skid, where the edge runtime forks into a robot variant for UAV/rover survey work; mission outputs feed back into Processes as tags.

Consystence offers three public tiers. An organisation holds its tier as an org-keyed property; an organisation with no paid tier is free and members-only.

TierHeld byPosture
Free sandboxAn individual accountA personal sandbox tenant on .dev; arranged on request during the beta.
IntegratorAn organisationFor organisations that author and deploy templates; tenants live on .dev.
EnterpriseAn organisationFor organisations that operate plants; tenants live on .com.

Integrator and Enterprise access is arranged with our team; see plans. A paid tenant is provisioned against an entitlement the organisation holds, and the entitlement is consumed when the tenant provisions.

A tier carries operating entitlements, such as the historian’s retention period, which the cell applies.

Alongside the org tier sit counted, per-seat SKU pools (SiteServer / Edge / Agent), account-issued and cell-mediated. Licensing is bound to a provisioned identity, not a hardware id; offline operation uses an account-signed artifact; and crucially, grace and expiry degrade rather than kill — they never gate operator control writes. The full mechanism, including the SKU pools and offline artifacts, is described in Licensing.

PatternScopeExample
{slug}.consystence.comEnterprise tenantsacme.consystence.com
*.consystence.devIntegrator tenants, trial tenants and individual-account sandboxesdev-acme.consystence.dev
consystence.ioOne advisory AI web interface, with no per-tenant addresses; the tenant comes from the sign-in, defaulted and switchable — not yet publicly available—
account.consystence.comAccount control plane / provisioning console—
id.consystence.comEntra External ID — the OIDC issuer—
status.consystence.comPublic platform status page—
api.consystence.comReserved for a future public APINo committed contract — see the public API surface
*.consystence.appReserved for the future marketplace—

Two distinctions are load-bearing:

  • A site is always a path under the org subdomain (/sites/{code}) — it never gets its own TLD.
  • A sandbox is account-level, provisioned under an individual account onto .dev and holding no org; an org-owned tenant lands on .com (Enterprise) or .dev (Integrator, and trials). A free organisation routes nowhere on its own — an org has no slug or subdomain of its own; its tenants do — though it can hold the organisation’s one free trial (simulation) tenant.

New to the platform? Start with the core concepts or the quickstart, or return to the platform overview.