feat(addons): add the PiKVM add-on

Chats and agents can check a PiKVM (kvmd) device and, when a person
confirms each call, press the power buttons of the machine it controls
and use its keyboard.

Read tools: get-info (model, versions, no serial or host name),
get-power-state (ATX LEDs) and get-keyboard-state. Write tools:
power-action (on, off, reset; off_hard, reset_hard and long_press only
with a per-device switch), type-text (bounded, no control characters,
refuses key, token and password-list shapes) and send-key (a short
allowlist, no Windows or Meta chords). All three declare approval
always. The preview reads the power state; apply reads it again and
rejects a stale operation. The add-on journals before it sends, never
retries and reports unknown when the connection drops.

One connection is one device: the address is the single resource of the
connection and the one sealed credential holds user:password, split at
the first colon. A one-time code is not supported. The add-on speaks
only to that address, refuses redirects, uses no proxy and accepts a
self-signed certificate only through a #sha256= pin in the address.
Typing, the text length and hard power actions are per-device switches
that an administrator sets on the add-on page; all start off. Snapshots,
mass storage, GPIO and the mouse are left out.

The add-on ships a skill, a connection page with a Test button and
approval cards, the package files, the library entry and the docs, and
joins the package workflow and the case inventory.

PiKVM API reference: https://docs.pikvm.org/api/

Assisted-by: Claude:claude-sonnet-5-5 go node
This commit is contained in:
Ettore Di Giacinto committed 2026-11-04 17:20:57 +00:00
1 parent 48d6d03f3d
commit bab8a605cc
54 files changed
+4520 -11

No files matched your search

+5 -1
View File
@@ -662,10 +662,12 @@
"has consistent package files for github",
"has consistent package files for home-assistant",
"has consistent package files for jellyfin",
"has consistent package files for pikvm",
"writes the zip of a verified layout with a digest manifest and a sha256 file",
"audits actual host calls and strict package contract for github",
"audits actual host calls and strict package contract for home-assistant",
"audits actual host calls and strict package contract for jellyfin",
"audits actual host calls and strict package contract for pikvm",
"lists every release platform with its runner",
"enables a platform exactly when its native check is recorded",
"has a catalog template"
@@ -4576,6 +4578,7 @@
"go: audits actual host calls and strict package contract for jellyfin",
"go: audits actual host calls and strict package contract for memory",
"go: audits actual host calls and strict package contract for office",
"go: audits actual host calls and strict package contract for pikvm",
"go: audits actual host calls and strict package contract for quantization",
"go: audits actual host calls and strict package contract for sandbox",
"go: audits actual host calls and strict package contract for slack",
@@ -4593,7 +4596,8 @@
"go: has a catalog template",
"go: has consistent package files for github",
"go: has consistent package files for home-assistant",
"go: has consistent package files for jellyfin"
"go: has consistent package files for jellyfin",
"go: has consistent package files for pikvm"
]
},
"updates": {