familiar
Operate the Hermes Familiar desk device — notify it, configure its button deck, provision Wi-Fi, run setup, and troubleshoot the link.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Operate the Hermes Familiar desk device — notify it, configure its button deck, provision Wi-Fi, run setup, and troubleshoot the link.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | familiar |
| description | Operate the Hermes Familiar desk device — notify it, configure its button deck, provision Wi-Fi, run setup, and troubleshoot the link. |
| version | 1.0.0 |
| author | Jason Brashear |
| license | MIT |
| platforms | ["macos","linux"] |
| prerequisites | {"commands":["hermes"]} |
| metadata | {"hermes":{"tags":["familiar","hardware","esp32","desk","notify","deck"],"related_skills":[]}} |
Use this skill when the operator asks you to do anything with the familiar —
the ESP32-S3 desk companion device wired to this gateway. You (Hermes) can reach
it, configure it, and help set it up. The device runs the familiar plugin; you
have the familiar_notify tool and the /familiar command.
Use the familiar_notify tool proactively when the operator is away from chat
and something deserves their attention: a long task finished, a scheduled job
found something, you are blocked waiting on them, an approval is pending.
message — under ~100 chars, plain text.sound — alert (default), ack, tap, or none.speak: true — also say it aloud (needs a speaker + Wi-Fi; degrades to
banner+chirp if either is missing).Quiet hours (if the operator set voice.quiet) suppress sound automatically;
the banner still lands. Don't spam — one notify per genuinely notable event.
The deck lives in ~/.hermes/familiar_actions.json under actions. Every
enabled action becomes a button on the device's OPS tab (max 6, 3×2 grid).
Edits go live within ~60s — no restart. Each action:
{
"id": "unique_id",
"label": "DEPLOY", // ≤8 chars, shown uppercase
"enabled": true,
"color": "red", // green | amber | red | cyan
"confirm": true, // optional: two-tap arm for dangerous buttons
"prompt": "Redeploy the site and confirm it's live." // OR "command": [...]
}
prompt — fired at Hermes as a task (anything the operator would ask you).command — an argv array run as a subprocess on the gateway machine
(scripts, git, curl, deploys). Use ["/bin/bash","-lc","…"] for shell.prompt / command. confirm: true for anything destructive.To add a button: read the file, append an action (or set enabled: true),
write it back, keep ≤6 enabled. Confirm to the operator what button you added.
You can configure the device by sending a JSON line to its serial port (115200 baud, newline-terminated). The plugin owns the port while the gateway runs, so provisioning is normally done via the plugin, but the raw frames are:
{"type":"config","wifi":{"ssid":"…","password":"…"}} →
acks {"ack":"config","ok":true} then {"wifi":"ok","ip":"…"}.{"type":"config","display":{"rotation":1}} (1 landscape, 3 flipped).Ask the operator for the SSID/password of a network that shares a LAN with this machine (voice needs the device and gateway on the same subnet). Full runbook: https://buildafamiliar.com/agent.md
The plugin also serves the same newline-JSON protocol over the network,
configured in the transport block of ~/.hermes/familiar_actions.json
({"enabled":true,"port":8767,"ws_port":8768,"token":"<secret>"}):
token set (it should be — network clients can approve dangerous
commands), a client's first message must be {"type":"auth","token":"…"}
or it is dropped; success is acked with {"type":"auth","ok":true}./familiar shows connected/searching, transport
(usb:<port>, tcp, ws, or combinations like usb:...+ws), pending
approvals, and job state./familiar ping (banner + chirp) or /familiar say hello
(speech — needs speaker + Wi-Fi)./dev/cu.usbmodem* /
/dev/ttyACM* and self-heals a wedged USB port; a replug or 60s wait usually
fixes it. Check grep familiar ~/.hermes/logs/agent.log.