01 — AI AGENTS · 2026
The Agent Wall
A wall of screens, one per AI agent, fed live from their own session logs, so I can watch a job pass from one agent to the next.
- Built
- Six status screens, their frames and rail, and the PC bridge that reads my agent sessions.
- Stack
- ESP32 touch boards, C++ firmware, a Python bridge, an authenticated TCP link.
- State
- In use on my wall.








What it is
Each 'agent' is an AI assistant session I run with a role and a name; the wall shows which one is working. CB Labs runs on AI agents: Goldie the chief of staff, Nova on finance, two product owners (Jade and Stella), Kai the developer and Lin in the print shop. Each agent has its own screen on my wall, fed live from that agent's session log, so I can watch work move without opening a terminal.
Each screen shows who is working, the job they hold, who handed it to them, and when they finished. When one agent hands work to another, both screens show the hand-off within about a second; idle, each one rests with its eyes closed until work wakes it. The agents draft and run work under my direction; I review, test and own what ships.








How it works
- Boards
- Six inexpensive ESP32 touch-display boards, 2.8 and 3.2 inch. No PSRAM, so every frame is drawn in 40-row bands through one sprite.
- Faces
- Each agent is a vector face, outlines filled with anti-aliasing band by band, in its own color, with its own hair and its own blink, glance and breathing timings. About 11 frames a second. A Python twin of the renderer previews every change on the PC before it ships.
- Bridge
- A Python process on the PC reads each agent's session transcript and sub-agent metadata and decides who is working, waiting or done.
- Link
- An authenticated TCP link that the PC opens outward, so no inbound firewall rule. Screenshots and firmware updates travel over the same link.
- Updates
- Over Wi-Fi: 1.3 MB in 9 to 14 seconds, back on the wall in about 15. The board checks the image's hash before it switches.
- Frames
- One printed frame for every role, 68 × 100 × 21 mm, on a printed rail with a cable raceway. The role shows as a pinstripe color and a title on the chin, plus a product logo on top for the two product owners; the cable drops out of the bottom.
By the numbers
- 6 screens
- one per agent, on one printed rail
- 1 s
- from a hand-off to the next screen lighting up
- ~11 fps
- face animation on boards with no PSRAM
- 9–14 s
- to push 1.3 MB of firmware over Wi-Fi
What I learned
- 01
A screen is a better progress bar than a log
'The agent is working' is invisible in a terminal. A wall where one screen says 'waiting on finance' and the next one lights up is not.
- 02
Data displays should not ask for attention
The first frames were a different object per role, with a dial and a speaker. I never touch these screens; they are data displays. v2 is one frame for everyone; a role-color pinstripe and a title on the chin are the differences, plus a product logo on top for the two product owners.
- 03
The look changes; the plumbing shouldn't
The screens have had six looks since late September: simple eyes, pixel creatures, a heads-up display, a cut-out paper doll, 3D-rendered animation, and now vector 'terminal' faces. The bridge, the link and the frames carried over each time, so a new look was a firmware push, not a rebuild.
- 04
Judge a cheap display by the glass
Two boards from the same family used different panel controllers, one with inverted color. A screenshot of the frame buffer looked right on both. Only a photo of the actual glass showed the gray background.
What went wrong
- 01
The boss said 'done' before the worker had answered
A chief-of-staff session ends its turn while a background sub-agent works, then wakes when the answer lands. The wall read that as finished. A sequencer now orders every line across the wall and detects the hand-back first, so 'done' can never come before the report. A regression test replays the exact failing run.
- 02
Dead connections kept talking
After a reconnect, the old link's sender kept running into every later connection: three senders after two reconnects. Both halves of a link now stop when either one stops.
- 03
At a glance, the faces all looked alike
The first terminal faces were the same cream panel with a thin accent color, and at a quick glance I couldn't tell who was who. The current firmware gives each agent its own hair and tints its whole panel in its color; the state moved to a small chip.
