Skip to main content
Each net type has a handle obtained from LagerBox and a page of its own. Handles are cheap and do no network traffic until you call a method. The box resolves and validates the net name on every request, so a typo fails loudly.

Instrument nets

Addressed by the net name you gave them with lager nets add.

Box-level capabilities

These drive the box’s own hardware, so they take no net name and have no name().

Two handles that behave differently

Almost every constructor above returns a handle immediately and infallibly. Two do not:
  • lager.uart(name)? returns a Result — it opens a Socket.IO session and starts streaming right away, so it can fail at construction.
  • lager.scope(name) returns a value, not a borrow. Scope has no lifetime and no async twin, because the box has no endpoint for it to talk to yet.

Discovery

NetRecord carries:
  • the name
  • the role
  • the instrument
  • the pin or channel
  • the VISA or device address
  • any role-specific saved params
  • the net’s safety limits
See Client and Box for the rest of the discovery surface.

Not yet available

Scope is a documented stub, and there is no logic-analyzer handle at all: the box has no HTTP endpoint for scope or logic capture yet. Rotation and Actuate nets serve provisioning flows rather than test-time net access, and the crate deliberately leaves them out. The work list is in MISSING_ENDPOINTS.md.