AirGap Controller

Audience: operators and automation authors who query or transition Stella Ops sealed-mode state, plus engineers integrating with the controller’s API.

The AirGap Controller is the tenant-scoped state keeper for sealed-mode operation. It records whether an installation is sealed, what policy hash is active, which time anchor is in force, and what staleness budgets apply.

For workflow context, start at the Air-Gap overview and the Air-Gap Mode Guide.

Responsibilities

Non-goals:

API

Base route group: /system/airgap (requires authorization).

GET /system/airgap/status

Required scope: airgap:status:read

Response: AirGapStatusResponse (current state + staleness evaluation).

Notes:

POST /system/airgap/seal

Required scope: airgap:seal

Body: SealRequest

Behavior:

POST /system/airgap/unseal

Required scope: airgap:seal

Behavior:

POST /system/airgap/verify

Required scope: airgap:status:read (policy AirGap.Verify, Program.cs:59-69) — verification is read-only, so it shares the status-read scope. There is no airgap:verify scope in the canonical catalog.

Purpose: verify replay / bundle verification requests against the currently active AirGap state.

State model (per tenant)

Canonical fields captured by the controller (see src/AirGap/StellaOps.AirGap.Controller):

Determinism requirements:

Persistence backend

Controller state persistence is implemented in src/AirGap/__Libraries/StellaOps.AirGap.Persistence using EF Core v10.

Regeneration commands are documented in the AirGap module README under EF Core Persistence Workflow.

Telemetry

The controller emits:

References