> ## Documentation Index
> Fetch the complete documentation index at: https://docs.neochamber.io/llms.txt
> Use this file to discover all available pages before exploring further.

# How it works

> Operators, tenants, nodes, and agents — the four nouns the whole platform is built from.

Four nouns carry the entire model. Learn these and every screen in both consoles
reads the same way.

## Operator

An **operator** is one independent datacenter. It owns its own admin accounts,
its own customer tenants, its own servers, and its own capacity pool. No other
operator on the deployment can see any of it.

Operator accounts are code-gated: NeoChamber issues the first admin invite code
during onboarding, and that code names the operator, so redeeming it creates the
datacenter and makes the redeemer its first admin.

<Note>
  Inside a datacenter, an operator account is effectively root. Everyone you add
  sees every one of *your* tenants' machines and telemetry and your whole capacity
  pool. What they cannot see, ever, is another operator. There is no narrower role
  *within* an operator yet — so keep your own list short.
</Note>

## Tenant

A **tenant** is the isolation boundary inside a datacenter — one per customer
company. Every tenant belongs to exactly one operator.

Machines reach a tenant two ways:

1. The customer **rents whole nodes** themselves from your live availability.
2. You **reassign** a node to them from its detail page.

Either way the assignment is immediate, and telemetry starts from the moment of
assignment.

## Node

A **node** is one GPU server. It belongs to your operator permanently — there is
no destination outside it — and sits either in your **capacity pool** (rentable,
never visible to customers) or assigned to one tenant.

Each node holds **its own credential**, issued at enrollment. That single fact
explains a lot of the platform's behavior: revoking an enrollment token never
stops a machine that already installed with it, and deleting the teammate who
enrolled it changes nothing about the node.

A node's GPUs are identified by **UUID**, which is the identity anchor for
hardware-change detection. A vanished UUID raises a `gpu_missing` event; a new
one is flagged for explicit swap acknowledgment.

## Agent

`chamberd` is the agent on every GPU server. One static binary — no Docker, no
runtime, no dependencies on the machine.

* Reads GPU state every **15 seconds** and streams it out.
* Speaks **outbound HTTPS on port 443 only**. No inbound access is ever needed.
* Buffers **24 hours** of telemetry on disk and backfills with original
  timestamps after an outage, up to a **55-minute replay cap**. Gaps older than
  that are shown as gaps, honestly.
* Runs under a hardened systemd unit with `Restart=always` and a watchdog.

## How they fit together

```
Operator (your datacenter)
├── Capacity pool ──── nodes nobody has rented yet
│     └── node ──── chamberd ──── GPUs (by UUID)
├── Tenant: Acme Corp
│     └── node, node        ← rented by the customer, or assigned by you
└── Tenant: Globex
      └── node
```

Every metric and log line is attributed to its tenant **and** its operator by
the platform itself — never by anything the agent or the browser sends. Every
query has its scope injected from the session. See
[Isolation](/platform/isolation) for how that is enforced and proven.

## The lifecycle, end to end

<Steps>
  <Step title="An operator account is created">
    From an invite code that names the datacenter. See [Create your account](/operators/create-your-account).
  </Step>

  <Step title="An enrollment token is issued">
    Named, revocable, revealed exactly once. See [Enrollment tokens](/operators/enrollment-tokens).
  </Step>

  <Step title="Servers are enrolled">
    One command per box, the same command fleet-wide. Nodes appear in Fleet
    within two minutes. See [Install the agent](/operators/install-the-agent).
  </Step>

  <Step title="Tenants are created and invited">
    One tenant per customer company, with single-use member invites. See [Tenants](/operators/tenants).
  </Step>

  <Step title="Customers rent from the pool">
    Whole nodes by GPU model, assigned on the spot. See [Rent compute](/customers/rent-compute).
  </Step>
</Steps>
