# Toki: a StackChan that watches Claude work

An M5Stack StackChan wears Claude's workload on its face: a magnifier for search, a sweat drop for tests. When Claude needs a yes or no, it glows amber and waits for your tap.

- Category: Hardware (build)
- Device: [M5Stack StackChan](https://afterware.xyz/d/m5stack-stackchan)
- Made by: [Gideon Bullock](https://gideonb.me/) on GitHub
- Original: https://github.com/g1d30nB/toki
- On Afterware: https://afterware.xyz/p/toki-a-stackchan-desk-robot-for-claude-agents

## Can I build this?

- Difficulty: Beginner
- AI-buildability: 4/5 (Nearly all the work is software and flashing firmware onto a purchased robot, with no soldering described.)
- Time: A weekend
- Cost: $100–200
- Parts: ESP32-S3, CoreS3, Feetech HL-2915 servo
- Tools: USB-C cable, Mac with Homebrew, arduino-cli

Estimates based on the original write-up. How the AI-buildability score works: https://afterware.xyz/ai-buildability

## Build sheet

- Device: M5Stack StackChan K151
- Controller: CoreS3 (ESP32-S3)
- Firmware: Arduino, StackChan-BSP
- Host: Node bridge on macOS

## Starter prompt

```
Based on "Toki: a StackChan that watches Claude work" on Afterware: https://afterware.xyz/p/toki-a-stackchan-desk-robot-for-claude-agents

Write Arduino firmware for an M5Stack CoreS3 on a StackChan body that shows a different face expression for each state reported by a Node bridge over Wi-Fi: idle, reading, running a command, searching, testing, and waiting for approval. When waiting, raise the head servo and show an amber glow, and let a touch on Allow or Deny send the answer back to the bridge.
```

## Story

Toki's face changes with whatever Claude is doing: reading, running a command, searching the web, testing. Each job gets a small manga-style symbol, a magnifier for search, a sweat drop for tests. When Claude needs approval, the robot looks up and glows amber. Tap the touchscreen to allow or deny. It runs on an M5Stack StackChan K151 built around a CoreS3.

The servos are loud, so the head only moves for interruptions. It rises when Claude is waiting, nods when you approve a request, and wiggles at the end of the day. Long-press the face and a shop shutter drops over the robot. Tap, and it goes back up.

Behind it, a Node bridge on the Mac catches Claude Code hooks and keeps a local scrapbook: one sticker per prompt, plus extras for notable moments. The robot runs its own Arduino firmware, so it can keep working over Bluetooth with the bridge switched off.

## Resources

- [Behaviour spec](https://github.com/g1d30nB/toki/blob/main/docs/behaviour-spec.md)
- [StackChan-BSP](https://github.com/m5stack/StackChan-BSP)
- [M5Stack StackChan docs](https://docs.m5stack.com/en/StackChan)

Tags: stackchan, m5stack, desk robot, claude code, servo, touchscreen, esp32

AI assistants can search all Afterware builds through the MCP server at https://afterware.xyz/mcp (setup: https://afterware.xyz/agents).
