Nikolai Bockholt DE

Gerald

Built

A handheld terminal next to the keyboard – a ClockworkPi uConsole with a Raspberry Pi CM4 – showing as a large drawn face what Claude Code is doing right now: thinking, working, waiting, done. It chimes when Claude needs input, streams the tool calls, and lets you allow or deny shell commands with a key press on the device.

The uConsole handheld on a desk. On its display, in green: the name Gerald, a drawn face with raised brows, below it the large status word “ARBEITE” with a running bar, the current tool call, and a status line showing model, context fill and usage limits.
The “working” state, with the live tool call and the session HUD below it. Interface set to German.

The part that keeps it from being decoration

A face mirroring state is a display. It gets interesting when the path runs back: when a Bash command is waiting for permission, it takes over the device's screen, and pressing Y or N allows or denies it in the real session.

At that point it stops being an ambient display and becomes a control. The decision about whether a command runs on my machine happens on a piece of hardware sitting next to the machine.

How it hangs together

Claude Code hooks fire on session events and send a small JSON line to a unix socket, fire-and-forget. A daemon holds exactly one BLE connection to the device and pushes JSON snapshots over Nordic UART, one object per line – the same protocol as Anthropic's Hardware Buddy reference, which the project originally grew out of.

The return path is the actual trick: PreToolUse(Bash) round-trips. The device answers with a permission, and that becomes the hook's allow or deny.

Plus a session HUD: model, context window fill, usage limits with a reset countdown – read off the statusline and mirrored onto the device.

Status

Public monorepo, both halves keeping their own git history. Interface in English and German, switched via GERALD_LANG. It runs; autostart of the Mac daemon across a real reboot is still open, which is a macOS permissions matter.

Source on GitHub

← Everything I've built