Review · Concept 8 · Lattice
Demo state
Fictional demonstration data — not real equipment
Fictional demonstration data — not real equipment

CLI · relationship-aware voice

Every answer is a small tree: who reads what (telemetry — a data link, never wiring), what that UPS powers (known dependency), and how fresh each fact is. Mint marks live/healthy, sodium marks the object in focus; everything also reads with NO_COLOR=1, where the glyphs and words carry the state.

mainskeeper status on duplex-pi-probe

duplex-pi-probe — 92 colscolour · 256
$ mainskeeper status
MainsKeeper · duplex-pi-probe · site Duplex                        Wed 30 Sep 2026 15:22
Raspberry Pi OS 12 · mainskeeperd 0.4.2 · up 30 min (since 14:52)

ROLES     UPS monitoring on · connectivity monitoring on (independent roles)
SERVER    ● connected · heartbeat 3 s ago · ✓ recovered 15:02 (fresh evidence)

RELATIONSHIPS  ┄▸ reads = telemetry, not wiring   ━┫ powers = known dependency
duplex-pi-probe (this probe)
├── this probe reads: Duplex Utility UPS (USB) ┄┄▸
│   ├── ● on utility · 78% (recharging) · reading 3 s old
│   ├── ◌ est. runtime 29 min (UPS estimate) · load 27% · input 119 V
│   ├── ▨ temperature: not reported
│   └── which powers: duplex-router, duplex-ont, duplex-camera-nvr (known dependency)
└── this probe checks: probe targets ╌╌◎ ● 3 of 3 answering
    └── last failure window 13:41–15:02 (recorded on this probe)

SYNC      separate from recovery
  ⇡ 1,248 pending · 382 of 1,630 uploaded · oldest pending 13:41 (1 h 41 m old)
  last upload 15:21:48 · batch 16/64 · 1 retry (15:19, server 503, accepted on retry)
  est. drain ~22 min (estimate) · buffer 38.2 MB / 512 MB
  [█████░░░░░░░░░░░░░░░░░] 23% uploaded

HISTORY 
  ○ 14:03 on battery — recorded locally, received 15:17 (delayed)
  ▨ 14:30–14:52 history gap · no records (probe offline)
  ! At least 27 minutes on battery; endpoint unknown.
  [ ] 14:52 utility first observed present (first record after the gap, ±90 s)
      return time unknown — sometime between 14:30 and 14:52

Fictional demonstration data — not real equipment. Output format is a design proposal.
duplex-pi-probe — 92 colsNO_COLOR=1
$ mainskeeper status
MainsKeeper · duplex-pi-probe · site Duplex                        Wed 30 Sep 2026 15:22
Raspberry Pi OS 12 · mainskeeperd 0.4.2 · up 30 min (since 14:52)

ROLES     UPS monitoring on · connectivity monitoring on (independent roles)
SERVER    ● connected · heartbeat 3 s ago · ✓ recovered 15:02 (fresh evidence)

RELATIONSHIPS  ┄▸ reads = telemetry, not wiring   ━┫ powers = known dependency
duplex-pi-probe (this probe)
├── this probe reads: Duplex Utility UPS (USB) ┄┄▸
│   ├── ● on utility · 78% (recharging) · reading 3 s old
│   ├── ◌ est. runtime 29 min (UPS estimate) · load 27% · input 119 V
│   ├── ▨ temperature: not reported
│   └── which powers: duplex-router, duplex-ont, duplex-camera-nvr (known dependency)
└── this probe checks: probe targets ╌╌◎ ● 3 of 3 answering
    └── last failure window 13:41–15:02 (recorded on this probe)

SYNC      separate from recovery
  ⇡ 1,248 pending · 382 of 1,630 uploaded · oldest pending 13:41 (1 h 41 m old)
  last upload 15:21:48 · batch 16/64 · 1 retry (15:19, server 503, accepted on retry)
  est. drain ~22 min (estimate) · buffer 38.2 MB / 512 MB
  [█████░░░░░░░░░░░░░░░░░] 23% uploaded

HISTORY 
  ○ 14:03 on battery — recorded locally, received 15:17 (delayed)
  ▨ 14:30–14:52 history gap · no records (probe offline)
  ! At least 27 minutes on battery; endpoint unknown.
  [ ] 14:52 utility first observed present (first record after the gap, ±90 s)
      return time unknown — sometime between 14:30 and 14:52

Fictional demonstration data — not real equipment. Output format is a design proposal.
duplex-pi-probe — 92 colscolour · 256
$ mainskeeper status
MainsKeeper · duplex-pi-probe · site Duplex                        Wed 30 Sep 2026 15:22
Raspberry Pi OS 12 · mainskeeperd 0.4.2

ROLES     UPS monitoring on · connectivity monitoring on (independent roles)
SERVER    ● connected · heartbeat 3 s ago

RELATIONSHIPS  ┄▸ reads = telemetry, not wiring   ━┫ powers = known dependency
duplex-pi-probe (this probe)
├── this probe reads: Duplex Utility UPS (USB) ┄┄▸
│   ├── ● on utility · 100% · reading 3 s old
│   ├── ◌ est. runtime 36 min (UPS estimate) · load 27% · input 119 V
│   ├── ▨ temperature: not reported
│   └── which powers: duplex-router, duplex-ont, duplex-camera-nvr (known dependency)
└── this probe checks: probe targets ╌╌◎ ● 3 of 3 answering

SYNC      ● current · no backlog

HISTORY 
  ● 29 Sep 21:14–21:31 utility outage · 17 min on battery (measured)
      start record received 21:14:03 · end record received 21:31:05 · resolved
      measures that outage, not battery capacity

Fictional demonstration data — not real equipment. Output format is a design proposal.
duplex-pi-probe — 92 colsNO_COLOR=1
$ mainskeeper status
MainsKeeper · duplex-pi-probe · site Duplex                        Wed 30 Sep 2026 15:22
Raspberry Pi OS 12 · mainskeeperd 0.4.2

ROLES     UPS monitoring on · connectivity monitoring on (independent roles)
SERVER    ● connected · heartbeat 3 s ago

RELATIONSHIPS  ┄▸ reads = telemetry, not wiring   ━┫ powers = known dependency
duplex-pi-probe (this probe)
├── this probe reads: Duplex Utility UPS (USB) ┄┄▸
│   ├── ● on utility · 100% · reading 3 s old
│   ├── ◌ est. runtime 36 min (UPS estimate) · load 27% · input 119 V
│   ├── ▨ temperature: not reported
│   └── which powers: duplex-router, duplex-ont, duplex-camera-nvr (known dependency)
└── this probe checks: probe targets ╌╌◎ ● 3 of 3 answering

SYNC      ● current · no backlog

HISTORY 
  ● 29 Sep 21:14–21:31 utility outage · 17 min on battery (measured)
      start record received 21:14:03 · end record received 21:31:05 · resolved
      measures that outage, not battery capacity

Fictional demonstration data — not real equipment. Output format is a design proposal.

mainskeeper trace walk a dependency upstream

duplex-pi-probe — 92 colscolour · 256
$ mainskeeper trace duplex-camera-nvr
duplex-camera-nvr · protected equipment · site Duplex · not monitored directly
└── powered by: Duplex Utility UPS ━┫ known dependency (configured)
    │   ● on utility · 78% (recharging) · reading 3 s old
    └── read by: duplex-pi-probe ┄┄▸ USB · telemetry, not wiring
            ● contact 3 s ago · ✓ recovered 15:02 · ⇡ sync 382 of 1,630 (separate)

Fictional demonstration data — not real equipment. Output format is a design proposal.
duplex-pi-probe — 92 colsNO_COLOR=1
$ mainskeeper trace duplex-camera-nvr
duplex-camera-nvr · protected equipment · site Duplex · not monitored directly
└── powered by: Duplex Utility UPS ━┫ known dependency (configured)
    │   ● on utility · 78% (recharging) · reading 3 s old
    └── read by: duplex-pi-probe ┄┄▸ USB · telemetry, not wiring
            ● contact 3 s ago · ✓ recovered 15:02 · ⇡ sync 382 of 1,630 (separate)

Fictional demonstration data — not real equipment. Output format is a design proposal.
duplex-pi-probe — 92 colscolour · 256
$ mainskeeper trace duplex-camera-nvr
duplex-camera-nvr · protected equipment · site Duplex · not monitored directly
└── powered by: Duplex Utility UPS ━┫ known dependency (configured)
    │   ● on utility · 100% · reading 3 s old
    └── read by: duplex-pi-probe ┄┄▸ USB · telemetry, not wiring
            ● contact 3 s ago · sync current

Fictional demonstration data — not real equipment. Output format is a design proposal.
duplex-pi-probe — 92 colsNO_COLOR=1
$ mainskeeper trace duplex-camera-nvr
duplex-camera-nvr · protected equipment · site Duplex · not monitored directly
└── powered by: Duplex Utility UPS ━┫ known dependency (configured)
    │   ● on utility · 100% · reading 3 s old
    └── read by: duplex-pi-probe ┄┄▸ USB · telemetry, not wiring
            ● contact 3 s ago · sync current

Fictional demonstration data — not real equipment. Output format is a design proposal.

mainskeeper coverage --fleet what is observed, by whom

duplex-pi-probe — 92 colscolour · 256
$ mainskeeper coverage --fleet
COVERAGE  4 sites · 6 collectors · 6 UPSs                            from server · 15:22
UPSs      6 of 6 assigned to a collector · 5 of 6 currently observed
          ? Shop Bench UPS — last known 15:10 (12 min ago) · contact lost — cause unknown
Agents    ⊘ 2 machines without agents — expected: bw-desk-ws (sleeping), shop-cnc-ctrl
Values    ▨ 10 UPS measurements not reported by hardware (shown as not reported, never 0)

Broadwater  ■ 1 of 2 UPSs on battery · 1 on utility (separate circuit)
├── bw-pi-01 reads: BW Rack UPS (USB) on battery 13 min · est. 18 min (UPS estimate)
│   └── which powers: bw-router, bw-nas-01, bw-switch-24 (known dependency)
└── bw-pi-01 reads: BW Office UPS (SNMP) ● on utility
    └── which powers: bw-desk-ws ⊘ no agent, sleeping — expected
Shop        ? contact lost with 2 of 2 probes — cause unknown (no local evidence yet)
└── shop-esp32-ups reads: Shop Bench UPS (USB) ? last known 15:10
    └── which powers: shop-cnc-ctrl ⊘, shop-switch, shop-camera (known dependency)

Fictional demonstration data — not real equipment. Output format is a design proposal.
duplex-pi-probe — 92 colsNO_COLOR=1
$ mainskeeper coverage --fleet
COVERAGE  4 sites · 6 collectors · 6 UPSs                            from server · 15:22
UPSs      6 of 6 assigned to a collector · 5 of 6 currently observed
          ? Shop Bench UPS — last known 15:10 (12 min ago) · contact lost — cause unknown
Agents    ⊘ 2 machines without agents — expected: bw-desk-ws (sleeping), shop-cnc-ctrl
Values    ▨ 10 UPS measurements not reported by hardware (shown as not reported, never 0)

Broadwater  ■ 1 of 2 UPSs on battery · 1 on utility (separate circuit)
├── bw-pi-01 reads: BW Rack UPS (USB) on battery 13 min · est. 18 min (UPS estimate)
│   └── which powers: bw-router, bw-nas-01, bw-switch-24 (known dependency)
└── bw-pi-01 reads: BW Office UPS (SNMP) ● on utility
    └── which powers: bw-desk-ws ⊘ no agent, sleeping — expected
Shop        ? contact lost with 2 of 2 probes — cause unknown (no local evidence yet)
└── shop-esp32-ups reads: Shop Bench UPS (USB) ? last known 15:10
    └── which powers: shop-cnc-ctrl ⊘, shop-switch, shop-camera (known dependency)

Fictional demonstration data — not real equipment. Output format is a design proposal.
duplex-pi-probe — 92 colscolour · 256
$ mainskeeper coverage --fleet
COVERAGE  4 sites · 6 collectors · 6 UPSs                            from server · 15:22
UPSs      ● 6 of 6 UPSs observed by a collector
Agents    ⊘ 2 machines without agents — expected: bw-desk-ws (sleeping), shop-cnc-ctrl
Values    ▨ 10 UPS measurements not reported by hardware (shown as not reported, never 0)

Broadwater  ● 2 of 2 UPSs on utility
Home        ● 2 of 2 UPSs on utility
Shop        ● 1 of 1 UPS on utility · 2 of 2 probes reporting
Duplex      ● 1 of 1 UPS on utility · sync current

Fictional demonstration data — not real equipment. Output format is a design proposal.
duplex-pi-probe — 92 colsNO_COLOR=1
$ mainskeeper coverage --fleet
COVERAGE  4 sites · 6 collectors · 6 UPSs                            from server · 15:22
UPSs      ● 6 of 6 UPSs observed by a collector
Agents    ⊘ 2 machines without agents — expected: bw-desk-ws (sleeping), shop-cnc-ctrl
Values    ▨ 10 UPS measurements not reported by hardware (shown as not reported, never 0)

Broadwater  ● 2 of 2 UPSs on utility
Home        ● 2 of 2 UPSs on utility
Shop        ● 1 of 1 UPS on utility · 2 of 2 probes reporting
Duplex      ● 1 of 1 UPS on utility · sync current

Fictional demonstration data — not real equipment. Output format is a design proposal.
Glyphs survive without colour● live/measured · ◌ estimate · ○ delayed · ▨ not reported / no records · [ ] uncertain · ? contact lost — cause unknown · ⊘ no agent · ⇡ sync.
Relationship words, not line art“reads:”, “which powers:”, “checks:”, “read by:”, “powered by:”. The tree uses box-drawing only for structure; link types are named in words.
Separate attributesRecovery and sync are on separate lines; the battery episode keeps its unknown endpoint; runtime is always labelled as the UPS estimate.