3D printers and home electronics, controlled from the website behind the opaque secure login — realized entirely on the sovereign nishi fabric. No Node, no nginx, no third-party proxy.
Paste your printer control capability (an opaque bearer token). It is stored only in this browser and presented to the sovereign edge on each command — never to any third party. Revoke it anytime via /api/cap/revoke.
X-Nishi-Cap token (encrypted session cookie / bearer). Nothing about the printer leaves the browser except a control intent./printers route inward. This is the operator's web-server + reverse-proxy leg — already live, already sovereign.nx_printer_ctl to reach the device. Least-authority is proven: a read-only cap is denied at the tool boundary.M500/M502). A verb outside the allowlist has no route → the gate goes RED. CLAUDE rule 26http-proxy-middleware. Sovereign organs over our own TLS 1.3 and LAN sockets — one auditable byte path, edit→build→deploy over the sovereign API.| Verb | Method + endpoint | Effect |
|---|---|---|
| info | GET /printer/info | Printer + Klipper state (ready / startup / shutdown / error) |
| status | GET /printer/objects/query | Live telemetry — parsed hotend & bed temps + targets as clean JSON |
| ready | GET /printer/info | Preflight gate — refuse to print unless Klipper state is ready |
| discover | LAN sweep (non-blocking) | Auto-find printers on your subnet — discover 192.168.8 7125 → list of live hosts (no hand-entered IPs) |
| survey | multi-port LAN inventory | Map all home electronics on your subnet — survey 192.168.8 classifies each device (3D printer / web device / hub) by port profile |
| estop | POST /printer/emergency_stop | Instant halt — runtime MCU stop, RAM-only; recovered by a soft firmware restart. Writes no persistent hardware state. |
| pause | POST /printer/print/pause | Pause the active print |
| resume | POST /printer/print/resume | Resume a paused print |
| cancel | POST /printer/print/cancel | Abort the active print |
| contract | — (no network) | Emit this security/routing contract as JSON for an agent |
Live telemetry (temperatures, position, progress) parses through the shipped nx_moonraker_telemetry_parse / nx_moonraker_motion_parse organs. Real-time updates stream over our sovereign API — not WebSocket: the connected dashboard polls the cap-gated edge every few seconds (Nishi-native; the last-mile interop is the API). On the LAN side the organ polls Moonraker over plain HTTP. The camera feed (MJPEG over HTTP, sovereign) is the one piece that waits on the printer's webcam hardware.
| Reference (Node/Express) | Sovereign nishi equivalent |
|---|---|
| Express server on public internet | sites.elf edge :8443 (live) |
| Opaque token DB lookup middleware | X-Nishi-Cap capability verify (ta_mcp_call) |
| http-proxy-middleware + mTLS agent | sovereign reverse-proxy /api/route + TLS 1.3 |
| Home nginx mTLS server | not needed — edge is on-LAN |
| Moonraker/OctoPrint client code | nx_printer_ctl → nx_moonraker_client/io |
Emitted JSON is the same object whether called by the browser dashboard, the mgmt API, or an autonomous agent over MCP. Malformed input is rejected fail-closed; an offline printer returns an honest {"result":"NETWORK_ERR"} — never a fabricated status.
Every hardware-access capability is individually revocable by nonce. If a token leaks, present it to POST /api/cap/revoke — the edge validates its signature and appends its nonce to the denylist (cap_revoked.list), checked on every subsequent request. Revocation is surgical: killing one token never affects another, and needs no key rotation or downtime.
Proven live: minted a scoped test token → it worked → revoked it → the same token returned capability denied (revoked) on the next call, while the live token kept working.
| Control organ nx_printer_ctl + lib (10 verbs) | built · gate GREEN 10/10 · MCP-live |
| Live telemetry status + preflight ready verbs | parsed JSON · proven (gate T6/T7/T8) |
| LAN auto-discovery discover + home-device survey | MCP-live · surveyed 6 real LAN devices in 226ms (gate T9/T10) |
| Moonraker primitives (client · io · telemetry · motion · ready-check) | shipped |
| Never-brick safe-endpoint allowlist | proven (gate T3) |
| Real loopback roundtrips (GET info · POST estop) | proven (gate T4/T5, real kernel TCP) |
| Live monitor dashboard (auto-refresh + auto-discover) | LIVE · renders survey + printer state; refresh beat every 2 min |
| Browser control (operator, cap-gated) | LIVE · buttons → /mcp with your cap; anon denied -32001 (proven) |
| Sovereign slicer nx_slicer (STL → G-code) | MCP-live · gate 5/5 · real STL → 140KB G-code on the QIDI profile, no OrcaSlicer |
| G-code upload + FULL pipeline (slice→upload→print→track) | MCP-live · 15 verbs, gate 14/14 · zero third-party |
| QIDI X-Max 3 hardware | offline — powers on → point info <ip> 7125 at it |