● COMPANION — the Warlock deck's engagement gate, on your desk

Warlock Buddy

The deck's gate, on your desk. A desk-side M5Stack CoreS3 that mirrors the Warlock engagement gate — SAFE, staged, or ARMED — and lets you ARM a scoped engagement, END it, or hit the KILLSWITCH with a physical tap. A hacker-HUD of the deck's posture, pairing straight to the deck over Bluetooth.

01 // a tactile authorization surface

The deck's gate, made physical.

Warlock's whole safety model is the engagement gate: offense is inert until a human arms a scoped engagement, and a kill switch reaches every queue. Warlock Buddy puts that gate on a small screen on your desk — at-a-glance posture, and a deliberate, tap-twice control to arm or abort.

AT A GLANCE

Posture, across the room

A hero banner reads SAFE (green), ARMED (red, pulsing), staged (amber), or OFFLINE — so you know the deck's state without unlocking anything.

PHYSICAL GATE

Tap to arm, tap to kill

ARM a pre-staged engagement, END the active one, or fire the KILLSWITCH — each a deliberate tap-twice confirm. A real arm switch and panic button for offensive ops.

NO NEW SURFACE

Consumer-side only

Every action rides the same audited endpoints the Warlock web UI and TUI already use. The buddy adds zero new backend — and every armed action is still a signed attestation.

02 // how it connects

Pairs straight to the deck.

A small Bun bridge relays between the buddy and the Warlock API. Run it on the deck itself — the CM5's onboard Bluetooth pairs to the buddy directly, no second machine — or on any nearby host in BLE range.

# the relay, in one line
 CoreS3  — BLE (Nordic UART) —  bridge (on the deck)
 bridge  — localhost HTTP —  Warlock API
 tap ARM / KILL    POST to the deck's audited gate.

The deck carries two Bluetooth radios (the CM5's BT 5.0/BLE and the AC1200's BT 5.2), so the buddy uses the onboard radio while the attack Wi-Fi stays on monitor-mode duty. The full radio map is in the deck's hardware spec.

03 // what it shows you

The HUD

A black-CRT, phosphor-green readout: one hero banner for the gate, a telemetry grid for the deck.

ReadoutWhat it tells you
Gate bannerSAFE · ATTENTION (engagements staged) · ARMED (live, pulsing warning) · OFFLINE
EngagementThe active engagement's name + scope cardinality (ssid / bssid / cidr)
SIGILSCount of signed AAR attestations the deck has emitted — provable conduct, at a glance
Deck telemetryCPU temp, CPU %, memory %, mesh node count, GPS fix, SDR count
UplinkHeartbeat age — confirms the bridge link is alive
Touch zonesContext-aware: ARM / NEXT when staged, KILL / END when armed, MENU always

04 // the build — build-your-own

Hardware

An off-the-shelf M5Stack CoreS3 and a tiny bridge daemon. Flash the firmware, run the bridge on the deck, pair.

ComponentDetail
HostM5Stack CoreS3 (ESP32-S3, 320×240 capacitive touch, speaker, IMU)
LinkBluetooth LE — Nordic UART Service (JSON), CoreS3 ⟷ bridge
BridgeBun + noble — runs on the deck (systemd, CM5 onboard BT) or a host in BLE range
FirmwareArduino / PlatformIO (M5Unified); build-your-own from documented source
RoadmapOn-device LLM "ask the deck" via the stacked Module-LLM (AX630C) over UART

Same posture as everything under the umbrella: the buddy only ever calls the deck's existing gated, audited endpoints — it can't do anything the operator couldn't already authorize.

One of a family.

The Warlock deck is the brain; Wisp is the wand that physically locates a radio the deck flags; Warlock Buddy is the desk-side gate that arms and aborts an engagement with a tap. Build the deck for everything; add the buddy to make authorization tactile.