Tenant

Tenant Architecture #

A tenant is a logical workload namespace representing an application or service domain, defined entirely as code β€” its network, its workloads, and its DNS β€” so it can be rebuilt from scratch against the substrate.


What is a Tenant? #

Tenants are the workload layer that runs within sites, on top of substrate infrastructure:

graph TB
    subgraph tenants["Tenants (Workloads)"]
        T["grooveiq, vintronics, moneyrouter, etc."]
    end
    subgraph substrate["Substrate Infrastructure"]
        S["Network, Compute, Management Plane"]
    end
    tenants -->|deployed on| substrate

Examples of tenants: grooveiq, vintronics, moneyrouter


Key Properties #

Tenants Live Within Sites #

Tenants:

  • Run within sites, not defining them
  • May be deployed to one or more sites
  • Are isolated from other tenants
  • Share substrate infrastructure (network, compute, management)

Tenant Networks Are Virtual Overlays #

A tenant’s network is a virtual overlay owned by the tenant compute domain (the tenant fabric), not a physical VLAN on the core router. The tenant owns its own Layer 3 β€” subnet, gateway, routing, and isolation β€” while the core router acts only as the perimeter (NAT, internet egress, and tenant↔management policy on a transit boundary). Creating a tenant creates a virtual network; it requires no change to physical switching. This is the model established by ADR-0001; see Networking for the full model.

Code Is the Source of Truth #

Every tenant supplies the IaC and CaC needed to rebuild itself from scratch against the substrate, and it supplies them from its own repository β€” deevnet-tenant-<name>, not a directory inside a substrate repo ( ADR-0006). Nothing about a tenant is precious hand-clicked state: its overlay network, its VMs, and its DNS records are all declared in the tenant’s own code. Rebuilding a tenant reconstitutes it whole β€” network, workloads, and records β€” which is what keeps the substrate stateless and the tenant portable.

Intent Over Identity #

Tenants express intent (what’s running), not identity (what the host is):

  • A host has stable identity (hostname, MAC, IP)
  • A tenant workload can move between hosts
  • Services are addressed by DNS, not by host

DNS Naming Pattern #

Tenant services follow a hierarchical DNS pattern:

service.tenant.site.deevnet.net

Example: api.grooveiq.mobile.deevnet.net

  • api β€” the service
  • grooveiq β€” the tenant
  • mobile β€” the site
  • deevnet.net β€” the domain

Tenant vs Site #

AspectSiteTenant
PurposeInfrastructure boundaryWorkload namespace
ContainsNetwork, compute, managementApplications, services
LifetimeLong-lived, stableMay be created/destroyed frequently
ProvisioningAutomation-firstTerraform-first
Examplemobile, homegrooveiq, vintronics

Multi-Site Tenants #

A tenant may be deployed to multiple sites:

api.grooveiq.mobile.deevnet.net  β€” Development instance
api.grooveiq.home.deevnet.net   β€” Production instance

The tenant is logically the same (grooveiq), but instances are site-scoped.


The Tenant Contract #

A tenant is defined by the contract it satisfies with the substrate β€” a clean interface between what the tenant supplies and what the substrate guarantees:

The tenant supplies (as code)The substrate guarantees
Its overlay network (subnet, gateway, isolation) in the fabricA tenant fabric to attach to
Its workloads (VMs from a template)Compute on the tenant hypervisor
Its data disks, sized and attached to its VMsVM images with a small, growable OS disk
Its own repository, from which it is rebuiltA fabric attachment, issued at onboarding
Custody of its Terraform state, or use of the one offeredA state store it may use or decline
Its DNS recordsA DNS zone to publish into
Its addressing, from a globally-unique planA perimeter for egress and shared-service access

Because the interface is explicit, any conforming tenant can be built, rebuilt, or moved without changing the substrate. The contract itself is being formalized β€” see the Tenant Platform roadmap.


Child Documents #

  • Networking β€” Tenant network isolation via the overlay fabric
  • Shared Tenant Services β€” Substrate-run services tenants consume, and the rules for consuming them
  • Management β€” Tenant lifecycle and observability
  • Building β€” Tenant provisioning as code
Page last modified: September 16, 2026