- Get Started

Tenants

OpenFlows is designed to serve many teams from a single server. Each team is called a tenant, and tenants are kept strictly separate from one another.

If you only have one team, you still have "a tenant" - you just have one. Think of a tenant as "one project, one team, one repository."

What a tenant is

A tenant is made up of three things bound together:

How isolation is enforced

Tenants are isolated in two independent ways at the same time:

  1. Identity and access. Each tenant is a separate user with its own access controls. A user allowed into one tenant's control plane cannot reach another tenant's workspaces.
  2. Coordination state. Every record in the coordination store is namespaced to its tenant. One tenant simply cannot read or collide with another tenant's records, even on shared infrastructure.

These two layers reinforce each other: even if access control were somehow misconfigured, the data itself is still partitioned.

What this means in practice

Managing a tenant

From the control panel, an operator can manage the tenants currently running:

ActionWhat it does
AddCreate a tenant for a repository so its team can start working.
ListSee the tenants currently running.
CleanReset a stuck tenant - clear stale or failed work back to the start so the team can take another pass.
RemoveTake down a tenant and its fleet entirely.

Cleanup is an important operational tool. If a tenant's work is wedged and automated recovery has already given up, resetting it back to a clean state is the way to get the loop moving again.