Every Claude Code user knows the approval loop: the agent wants to run a shell command, a file edit request pops up in the terminal, you tab back to the editor, you squint, you hit allow. Mitsumine Suzu decided that workflow was annoying enough to build hardware around.
What It Does
The project is a physical approval console for AI coding agents. An M5Stack Core2 for AWS sits next to the keyboard. When Claude Code triggers a PreToolUse event, the device lights up its LEDs, sounds a buzzer, and shows the action description on its touch LCD. The developer presses one of three buttons: Allow, Deny, or Hold. No alt-tabbing, no hunting for the right terminal window.
How the Stack Works
Claude Code’s built-in hook system intercepts the PreToolUse event and routes it to a command that calls hook_client.py. That script sends an HTTP request to a background process called bridge.py. The M5Stack maintains a persistent WebSocket connection to bridge.py and waits for incoming requests.
Claude Code Hooks
| Command execution
hook_client.py
| HTTP
bridge.py
| WebSocket
M5Stack Core2 for AWSWhen a request arrives, the device displays the action as JSON and starts a 4-minute timeout. The user’s selection travels back over the WebSocket, hook_client.py returns the response to Claude Code, and the agent proceeds or stops.
Hardware and Software
The M5Stack Core2 for AWS packs an ESP32, a touch LCD, ten full-color LEDs, a speaker, and a 500mAh battery into a compact unit. The firmware is written in Arduino IDE using the M5Unified, FastLED, ArduinoJSON, and Websockets libraries. Source code is MIT licensed and published on GitHub.
If you run Claude Code sessions for long stretches and find context-switching on approval prompts disruptive, this is a clean hardware solution to a real daily friction point.
