Agent Status Hardware: one light and one e-ink display for every agent session, driven by hooks
by PaperChaseWebb
Wire the hooks Claude Code, Codex and Hermes already have, plus a rules block for Grok Bot, to one small bridge on your machine. It turns agent events into one state for all sessions and drives a terminal, a USB busylight, a blink(1), an ESP32 LED, a 2.13 inch e-ink panel or a Home Assistant light. Waiting for you is a red blink nothing can cover, a session with no news turns amber, and the light never approves anything.
- Price
- $14
- Difficulty
- Intermediate
- Setup
- 30 min
- Format
- .md file
agent-status-hardware-lights-and-e-ink-via-hooks.md · 105 KB · instant download after checkout
Want this built for you instead? We can build it for you.
What you end up with
You see at a glance when any agent session needs you, a crashed session stops looking busy, and flashing a board, opening the bridge to your network or using a Home Assistant token each wait for your written yes.
What you get
- 19 sections in one .md file
- Hook files for Claude Code, Codex and Hermes, and a rules block for Grok Bot
- status_bridge.py: one state for all sessions, six states with waiting first, stale decay, a local read-only endpoint, standard library only
- Seven adapters: terminal, simulated light, e-ink frame, busylight-for-humans, blink(1), ESP32 serial and Home Assistant, each with plain notes on what was tested
- MicroPython firmware for an ESP32 LED and a Raspberry Pi script for a Waveshare 2.13 inch e-ink panel
- Owner approvals in approvals.csv for firmware flashing, network exposure and Home Assistant tokens
- status_check.py: fifteen read-only checks, with a fixture builder and the expected output
- Four test scripts: selftest, hooks, adapters and firmware
- Ten prompts and a failure table
- A look at ten status lights, displays and tools people are using, with sources
Who it is for
People who run long or parallel agent sessions in other windows and want one honest signal for when an agent needs them, on a light or a display they control.
Works with
Solid chips: the agent is named in this listing's own tools list. Dashed chip: Hooks for Claude Code, Codex and Hermes, a rules block for Grok Bot; tested against a simulated light, fake device tools, a mock Home Assistant and a virtual serial port, not on real hardware.
Tools needed
Cost to run: The pack is the only purchase. No hardware is included; a terminal window needs none.
Time to result: A working terminal light in about ten minutes, a device in about half an hour
How it works
Test the bridge
Save status_bridge.py into ~/.agent-status with the example config, set owner to your name and run selftest.
Expected: 16 ok, 0 failures, including a waiting session that stays red while another finishes.
Test the check
Save the scripts, run make_fixture.py and run status_check.py on the two fixture folders.
Expected: 15 findings on seeded, 0 on fixed; exit 2 on a missing folder.
Connect your harness
Merge the hook file for Claude Code, Codex or Hermes, or paste the Grok Bot rules block, then start serve with the terminal adapter.
Expected: A prompt turns the terminal light green, a permission prompt turns it red and blinking.
Add a device
Pick the adapter for your light or panel from section 8 and add it to the config. Record an approval first if it needs a flash, the network or a token.
Expected: The device follows the terminal light, and status_check.py prints no findings.
Sample prompt from the pack
Show me the hooks block you would merge into my ~/.claude/settings.json from hooks/claude-settings.json, as a diff against what is there now. Do not write it until I say yes.
Prompt 2 of 10. Your settings file is yours to change.
Show me the sha256 of the firmware file and the approvals.csv row I would need to flash it to the port I name, then stop. I will add the row and run the command myself.
Prompt 9 of 10. The agent never writes approvals.
Free preview of the file
# Agent Status Hardware: one light and one e-ink display for every agent session, driven by hooks Version 1.0, 2026-10-28. By PaperChaseWebb. Works with Claude Code, Codex and Hermes through their hooks, and with Grok Bot through a rules block. Plain Markdown, hook files for each harness, a bridge script, firmware for an ESP32 light and a Raspberry Pi e-ink panel, and a read-only checker, all Python 3 with no outside packages for the bridge. Tested as described in section 12: everything ran on Linux with Python 3.13 against a simulated light, fake device tools, a mock Home Assistant and a virtual serial port. No real light, panel or board was connected for this release, and the hook files were not loaded inside the harnesses. Both are marked where they matter. No hardware is included. You start an agent, switch to another window, and come back twenty minutes later to find it has been waiting for a yes since minute two. With two or three sessions open it gets worse: one finishes, you check that one, and the one that is blocked sits there. A status light fixes this, if it is honest. It has to tell you "needs you" louder than anything else, it has to stop claiming "working" when the agent has crashed, and it must never become a way to approve things without reading them. This pack wires the hooks each harness already has to one small bridge on your machine. Every hook writes one line of metadata (agent, event, a hashed session id, the folder name) to a local log. The bridge r
Worth knowing
- No real light, e-ink panel, ESP32 board or Home Assistant was connected for this release. The adapters were tested against fake tools, a mock server and a virtual serial port, and the real busylight-for-humans 1.0.3 was run with no light attached.
- The hook files were run with sample payloads in the documented shapes, not loaded inside Claude Code, Codex or Hermes. Open /hooks after installing and trigger one permission prompt to see the light change.
- Grok Bot has no hooks; its rules block works only when it runs commands on the same machine as the bridge.
- On 2026-10-28, selftest gave 16 ok, the hook test 35 ok, the adapter test 15 ok, the firmware test 7 ok, all with 0 failures; status_check.py reported the fifteen expected findings on the seeded fixture and 0 on the fixed one, with file hashes unchanged and exit 2 on a missing folder. Run the tests on your own machine first.
Questions
Do I need to buy hardware?
No. The terminal adapter needs none, and the bridge works the same way with it. If you buy a light later, section 8 lists what the adapters drive and what was tested.
Can I approve from the light?
No, on purpose. A button cannot show you the command it approves, and anyone can press it. The light tells you to look; you answer at the keyboard. The bridge refuses a config that sets device buttons to approve.
Does anything leave my machine?
Not by default. The bridge listens on 127.0.0.1 and the hooks write a local log of metadata only. Opening it to your network or using Home Assistant needs a row in approvals.csv with your name.
How is this different from Agents That Use a Computer?
That pack covers approval gates and status signals for agents that drive a browser or desktop. This one is the hook-driven light and display for any agent session.
Details
Version 1.0 · Updated Oct 28, 2026 · Markdown version of this page
License: Use on your own machines and on installs you do for clients and teams. Do not resell or republish the pack itself. Download terms
Related

A terminal status light for your agent hooks, with a five-check quick check (free sample)
From Agent Status Hardware: an event-to-state map for Claude Code and Codex hooks, five rules, a script that shows one colored light for all your sessions in a spare terminal window, and a read-only quick check with a worked example.

Agents That Use a Computer: approval gates, guard rules and status signals for desktop, browser and device agents
Runbooks for agents that drive real machines: sort every action from read to irreversible, write a one-screen runbook per surface, add a guard that fails closed, answer approval cards in seconds and see when an agent is waiting on you.

Cross-Harness Relay: Grok Bot, Claude Code, Codex and Hermes on one job
A bot template and teaching guide for running more than one agent harness on the same work. Six seat cards (front desk, planner, builder, reviewer, tester, night shift), a RELAY.md seat map, a relay packet for every handoff, four loop shapes, routine-or-judgment routing with a fallback when limits run tight, a preflight check, the front desk and night shift split with a proof footer, shared memory rules, eight relay drills, a rules block and 14 prompts.

Two-Agent Build and Test Loop for paid apps: one agent builds, another tests, and nothing passes on its own say-so
A tested setup for apps that take money: one agent writes the code, a separate tester session writes the stories and tests and gives the verdicts, a small runner records every red, green and revert exit code itself, and the owner says yes to the plan, any payment or pricing work, each merge and each release. Test keys and sandboxes only. A read-only check with fifteen tests audits the finished run.

Agent Readiness Self-Check: score one workflow before you hand it to an AI agent
A free self-check for agencies and small businesses. Score one workflow across eight areas (workflow mapped, data access, approval gates, owner per agent, handoffs, cost tracking, security and vetting, measurement) with an evidence rule and three gate rules, read your band and what to do next, plus an interview prompt for Grok Bot, Claude Code, Codex or Hermes, a score sheet and a worked example.

Agent Control Room: voice control for a dozen agents
Talk to twelve agents by name from one place. Say "tell juniper to fix the login test" and it goes to juniper and only juniper, read back in a sentence. Ask "who is waiting" and the board answers with waiting on top. Say "stop all" and every session gets it. What voice never does is approve: every yes, "approve it", "go ahead" and "1" is refused, and gated actions wait for a typed yes from the owner tied to the sha256 of the request, which the agent checks before it acts.