Supervisor Bot
Bun + discord.js, roughly a hundred lines — !start !stop !restart !status drive a systemd user unit; strangers are silently dropped by a user-ID allowlist
Channel Plugin
The official Claude Code Discord plugin carries messages into the live session and replies back out — DM or channel, no @-mention needed once paired
Approvals on the Phone
Tool permission prompts arrive as Allow/Deny buttons in Discord; an optional patch moves them from DMs into the ops channel without granting anyone else approval power
Unattended Resilience
systemd user units with linger survive reboots, tmux survives dropped connections, a restart loop survives crashes — proven with an unattended reboot test before release
Security Model
Zero inbound ports — both bots are outbound gateway clients. Tokens live in one chmod-600 config file; sender allowlists gate both bots; permission prompts stay on by default
Auto-Repatcher
Plugin updates silently revert local patches — a pre-launch check re-applies the channel-buttons patch, verifies it still compiles, and posts a Discord notice either way