Control Bus

The control bus provides a bidirectional command channel between operators, LLM agents, and edge SDKs. Commands are policy-checked, queued, and dispatched to targets via QUIC bidi streams. Domain simulators enable dry-run validation before live execution.

Command Queue

Rust Command (IssuedCommand)
auto-generated
/// A command queued by the UI, awaiting processing by the device/sim layer.
pub struct IssuedCommand {
    pub id: CommandId,
    /// Sim-time seconds when the command was issued.
    pub issued_at: f64,
    pub target: CommandTarget,
    pub fields: Vec<FieldAssignment>,
    pub status: CommandStatus,
    /// Sim-time when the command was resolved (Acked / Failed / Timeout).
    pub resolved_at: Option<f64>,
    /// Human-readable description shown in the audit log.
    pub label: String,
    /// User or system that issued the command (backward-compat display string).
    pub issued_by: String,
    /// Typed principal identity (None during migration from legacy call sites).
    pub principal_id: Option<PrincipalId>,
}

CommandTarget Types

  • Entity(EntityId) — Single device or sensor
  • Group(GroupId) — Named entity group (e.g. "floor-3-hvac")
  • Broadcast — All connected sources in a domain

Status Lifecycle

graph LR P["Pending"] --> A["Acked"] A --> C["Completed"] P --> F["Failed"] P --> V["Vetoed"] A --> T["Timed Out"]

Policy Engine

  • Veto rules: Block commands by action, target, or principal role
  • Allow rules: Explicit allow-list overrides for specific principals
  • ObjectSet expressions: ObjectSet::Union, Intersection, Complement for complex target scoping

Domain Simulators

  • HvacSimulator — Zone temp, damper, setpoint response curves
  • AviationSimulator — ADS-B trajectory, altitude, squawk
  • RallySimulator — Stage splits, GPS trace, penalty timing

Bridges

The ActionBridge translates high-level TAI actions into concrete bus commands. The SubscriptionBridge allows UI panes to subscribe to command status updates via the event bus, enabling real-time feedback in the operator console.

Questions?

Reach out for help with integration, deployment, or custom domain codecs.