# nerves_gate v0.1.0 - Table of Contents > Nerves Gate device firmware and application runtime ## Pages - [Nerves Gate firmware](readme.md) - [Changelog](changelog.md) ## Modules - [NervesGate](NervesGate.md): Public commands and status queries for the gateway. No client process is needed. - [NervesGate.Alarms](NervesGate.Alarms.md): Domain-owned conditions and Alarmist policy; no monitor or automatic remedies. - [NervesGate.Alarms.Warning](NervesGate.Alarms.Warning.md): Availability faults must persist for two seconds; recovery clears immediately. - [NervesGate.Apps](NervesGate.Apps.md): Administrative lifecycle for trusted OTP applications on SD. - [NervesGate.Buses](NervesGate.Buses.md): CAN and RS485 ownership, SDK access and bounded diagnostics on allowlisted ports. - [NervesGate.Buses.EC100](NervesGate.Buses.EC100.md): Only can0/can1 and ttyS3/ttyS4. Never opens the boot console or guesses DE/RTS GPIOs. - [NervesGate.Buses.Modbus](NervesGate.Buses.Modbus.md): Modbus RTU functions 3/4 only, raw zero-based registers, CRC-checked exact responses. - [NervesGate.Buses.Policy](NervesGate.Buses.Policy.md): Fixed EC100 ports and bounded, explicit bus operations. No arbitrary paths or writes. - [NervesGate.Buses.Serial](NervesGate.Buses.Serial.md): Short-lived passive UART sessions. EC100's qualified automatic-direction 9600 8N1 profile. - [NervesGate.Config](NervesGate.Config.md): Pure network input validation and port-role helpers. Persistence belongs to VintageNet. - [NervesGate.Distribution](NervesGate.Distribution.md): Starts native OTP distribution when the existing Tailscale observations provide an address. An explicit development node bypasses Tailscale naming. No separate connection process, discovery or cookie store. - [NervesGate.Equipment](NervesGate.Equipment.md): Equipment observations and local labels for the confirmed equipment subnet. - [NervesGate.Equipment.Adapter](NervesGate.Equipment.Adapter.md): Equipment observations, explicit ARP probes and label persistence. - [NervesGate.Equipment.Labels](NervesGate.Equipment.Labels.md): Bounded, local labels keyed by confirmed equipment scope and MAC, not a guessed identity. - [NervesGate.Equipment.Linux](NervesGate.Equipment.Linux.md): Kernel neighbor observations and an explicit bounded ARP-only scan. No IP port probes. - [NervesGate.Equipment.Subnet](NervesGate.Equipment.Subnet.md): Confirmed equipment scope. Never derives a scan or route from submitted interface names. - [NervesGate.Indicators](NervesGate.Indicators.md): Three status LEDs and fixed, release-only button gestures. - [NervesGate.Indicators.Button](NervesGate.Indicators.Button.md): Pure release-only gestures. A release is required after startup or input loss. - [NervesGate.Indicators.EC100](NervesGate.Indicators.EC100.md): EC100 RUN/USER1/USER2 LEDs (1 = on) and gpio-keys. Never changes kernel triggers. - [NervesGate.Indicators.Policy](NervesGate.Indicators.Policy.md): Pure LED policy. Slow is 1 Hz; fast is 4 Hz. Unknown is never shown as healthy. - [NervesGate.Linux.CAN](NervesGate.Linux.CAN.md): SocketCAN observations, explicit link configuration, and bounded receive-only captures. - [NervesGate.Linux.Netlink](NervesGate.Linux.Netlink.md): Small bounded rtnetlink boundary for Linux neighbor and CAN observations/configuration. - [NervesGate.Network](NervesGate.Network.md): Ethernet and Internet uplink configuration with protected trials and rollback. - [NervesGate.Network.Access](NervesGate.Network.Access.md): Identifies the independent USB management path from server-observed addresses. - [NervesGate.Network.Adapter](NervesGate.Network.Adapter.md): Infrastructure boundary. Implementations may configure only LAN interfaces; USB provisioning must remain independent. Host implementations never touch workstation interfaces. Hardware writes run in the network server's bounded worker. - [NervesGate.Network.Cellular](NervesGate.Network.Cellular.md): Firmware-supplied modem identity and VintageNet configuration, not a modem manager. - [NervesGate.Network.Discovery](NervesGate.Network.Discovery.md): Suggestions from observed ports. Never changes or persists port roles. - [NervesGate.Network.LAN](NervesGate.Network.LAN.md): VintageNet technology for explicitly shared or isolated Ethernet ports. - [NervesGate.Network.Policy](NervesGate.Network.Policy.md): Pure trial admission, topology readiness and observed subnet conflict checks. - [NervesGate.Network.RouteMetric](NervesGate.Network.RouteMetric.md): VintageNet's normal Internet-first policy, including our shared LAN and named modem. - [NervesGate.Network.Vintage](NervesGate.Network.Vintage.md): Firmware adapter. USB is never part of a port-role change. No Ethernet DHCP server or NAT. - [NervesGate.Observations](NervesGate.Observations.md): Ephemeral workflow properties. Firmware subsystem readings stay in VintageNet and Tailscaled's own tables. Subscriptions belong to the calling process and PropertyTable's Registry removes them on process death. - [NervesGate.Observations.Network](NervesGate.Observations.Network.md): Pure interpretation of permitted uplinks and observed Internet connectivity. - [NervesGate.Projection](NervesGate.Projection.md): The UI read model. Inputs are sanitized domain snapshots, including device metadata. Replacing one input recomputes the entire view with no effects. The device and its LiveViews use this same reducer; form drafts live elsewhere. - [NervesGate.ProjectionServer](NervesGate.ProjectionServer.md): One device-owned UI read model, not a command coordinator. - [NervesGate.Recovery](NervesGate.Recovery.md): Small recovery boundary, called only by Indicators' one-shot worker. - [NervesGate.Recovery.EC100](NervesGate.Recovery.EC100.md): EC100 recovery using the BSP's standard Nerves operations. - [NervesGate.Remote](NervesGate.Remote.md): Tailscale connection and device-name control. - [NervesGate.Remote.Adapter](NervesGate.Remote.Adapter.md): Tailscale infrastructure boundary. Snapshot and enrollment URL reads must use cached observations; execute may block and is run in an owned, bounded worker. Stopping a worker cannot undo an already accepted daemon mutation. - [NervesGate.Remote.Policy](NervesGate.Remote.Policy.md): Pure command admission, public observation filtering and daemon outcome interpretation. - [NervesGate.Remote.Sharing](NervesGate.Remote.Sharing.md): Pure admission and route changes for the confirmed IPv4 equipment subnet. - [NervesGate.Remote.Tailscaled](NervesGate.Remote.Tailscaled.md): Firmware adapter. The daemon owns identity and settings; never copy credentials into gateway config. - [NervesGate.SDKBackend](NervesGate.SDKBackend.md): Device implementation of the read-only SDK views and process-owned bus operations. - [NervesGate.SSH](NervesGate.SSH.md): Device-owned SSH public keys. Commands persist before changing authentication. - [NervesGate.Status](NervesGate.Status.md): Pure status builder behind `NervesGate.status/1`. No process, cache or command execution. - [NervesGate.Storage](NervesGate.Storage.md): Application-card commissioning, detection and mounting. Insertion never formats media. Setup offers use without erasing, skip, or explicitly confirmed ext4 formatting. Applications remain owned by `NervesGate.Apps`. - [NervesGateWeb.Backend](NervesGateWeb.Backend.md): UI calls use the configured `:backend_node`: `:local` for device services, a node name for remote services, or nil while disconnected. Commands have no local fallback or retries. Projection subscriptions call the device server directly, preserving the LiveView caller's identity. The simulator site observes each device by passing its node explicitly. - [NervesGateWeb.BusesLive](NervesGateWeb.BusesLive.md) - [NervesGateWeb.ConnectionPanel](NervesGateWeb.ConnectionPanel.md): Connection details rendered from the parent's observed view, never its form draft. - [NervesGateWeb.CoreComponents](NervesGateWeb.CoreComponents.md): Reusable, stateless controls and surfaces for the local gateway UI. - [NervesGateWeb.DashboardLive](NervesGateWeb.DashboardLive.md) - [NervesGateWeb.DistributionLive](NervesGateWeb.DistributionLive.md) - [NervesGateWeb.Endpoint](NervesGateWeb.Endpoint.md) - [NervesGateWeb.EquipmentLive](NervesGateWeb.EquipmentLive.md) - [NervesGateWeb.ErrorHTML](NervesGateWeb.ErrorHTML.md) - [NervesGateWeb.LanLive](NervesGateWeb.LanLive.md) - [NervesGateWeb.Layouts](NervesGateWeb.Layouts.md) - [NervesGateWeb.NetworkEditor](NervesGateWeb.NetworkEditor.md): Separate drafts sharing the device-owned network trial workflow. - [NervesGateWeb.NetworkLive](NervesGateWeb.NetworkLive.md) - [NervesGateWeb.NetworkStatus](NervesGateWeb.NetworkStatus.md): Presentational network primitives. ConnectionPanel owns their live data. - [NervesGateWeb.Observations](NervesGateWeb.Observations.md): Bind LiveViews to the device's projection stream. Each view reduces the same ordered operations, with separate form drafts. A lost server means unavailable, then a fresh subscription snapshot, never continued use of a stale cache. - [NervesGateWeb.RemoteStatus](NervesGateWeb.RemoteStatus.md): Read-only Tailscale observations, shared by operations and settings. - [NervesGateWeb.Router](NervesGateWeb.Router.md) - [NervesGateWeb.SettingsLive](NervesGateWeb.SettingsLive.md) - [NervesGateWeb.StorageLive](NervesGateWeb.StorageLive.md) - [NervesGateWeb.TailscaleLive](NervesGateWeb.TailscaleLive.md)