openmixer — generated API reference
    Preparing search index...

    Interface StageboxNodeView

    The minimal I/O-node shape the detector reads. A structural subset of the engine's IoNode and the wire WireIoNode, so either is passed directly — no adapter.

    interface StageboxNodeView {
        description?: string;
        id: string;
        kind: "source" | "sink";
        name?: string;
        ports: readonly string[];
        reacBoxFirmware?: string;
        reacBoxMac?: string;
        reacBoxModel?: string;
        reacBoxReacVersion?: string;
        reacBoxWidth?: number;
        reacLinkState?: string;
        reacSegment?: string;
    }
    Index
    description?: string

    Longer/raw description. On the engine path this is the raw node.name; on other paths the PipeWire description.

    id: string

    Stable id — the PipeWire node.name (reac-capture.drums, reac-capture).

    kind: "source" | "sink"

    Which side of the patchbay: source (take from) or sink (route to).

    name?: string

    The node's human label — where the box's operator name + real channel width live. reac-pw sets PW_KEY_NODE_DESCRIPTION to "<Name> — <N> ch (REAC box inputs)" (e.g. "Drums — 16 ch (REAC box inputs)"). NOTE: the engine's pw-dump reader lands the PipeWire node.description in name (the friendly label) and repurposes description for the raw node.name — so the detector reads BOTH fields and takes whichever carries the "— <N> ch" box descriptor (see advertisedChannelWidth / operatorNameOf).

    ports: readonly string[]

    The node's full pw-link port names (<node>:<port>), e.g. reac-capture.drums:capture_01.

    reacBoxFirmware?: string

    The box's system firmware, D.DDD (reac.box-firmware, DT1 identity addr 0x0500), e.g. '2.200'. Absent on a bridge older than the identity-page decode, or a box that has not answered that page — a RECORDING of what the box last announced, never a claim.

    reacBoxMac?: string

    The box's Ethernet MAC — its stable identity across sessions, reboots and reconnects (the persistent-registry key, Build A). Not a scalar reac-pw prop: the graph reader lifts it out of the reac.discovery.devices JSON snapshot (the owned:true peer — the box this master joined) and surfaces it here lower-cased. Absent on an older reac-pw, a bridge that has not yet joined a box, or when the snapshot is ambiguous (more than one owned peer).

    reacBoxModel?: string

    reac-pw's reac.box-model prop (e.g. S-4000S), if published.

    reacBoxReacVersion?: string

    The box's REAC PROTOCOL version, D.DDD (reac.box.reac_version, DT1 identity addr 0x0600), e.g. '2.302' — a DIFFERENT number from reacBoxFirmware: the M-200i shows both (S-1608: REAC 2.302, Firmware 2.200). Absent under the same conditions.

    reacBoxWidth?: number

    reac-pw's reac.box-width prop (the box's channel count), if published.

    reacLinkState?: string

    reac-pw's reac.link-state prop (probing / connected / no-box), if published.

    reacSegment?: string

    The segment this node speaks for — reac-pw's own reac.segment prop (2026-08-20-reac-auto-spine.md). A VLAN sub-interface (enp131s0.11) is a segment name like any other; this is never derived from id/name — the discriminator a multi-box node name carries is a DIFFERENT fact (which box on a shared fabric), and a segment can rename (a trunk reconfigured) while the box's discriminator stays put. Absent on an older reac-pw or a non-REAC node.