Claude Code status light with the smart bulb you already own
The short answer AC Bridge turns the smart lights and plugs you already own into a Claude Code status light: your lamp changes colour when the agent is working, needs permission, is waiting for your input, or has finished. It listens to Claude Code's official hooks, drives 16 brands straight over your home network plus anything in Home Assistant, and works with the Codex CLI too. There is nothing to solder and no hook script to write.
- Agents: Claude Code and the OpenAI Codex CLI, side by side.
- Devices: 16 brands on your LAN, 1000+ more through Home Assistant, and SmartThings through its cloud.
- Computer: Windows, macOS or Linux, with Claude Code or Codex already installed.
- Price: a 3-day free trial with a card up front, then £2.99 a month.
What each colour means
These are the six states most people start with, shown in the colours our homepage uses. Read them as an example legend: you pick the colours, per project, and a state can just as well run an effect (flash, pulse, candle) or switch a plug.
| State | Example | When Claude Code reports it |
|---|---|---|
| Working | breathes blue | You submit a prompt (UserPromptSubmit). It holds until the turn ends. |
| Needs permission | flashes red | Claude Code sends a Notification with the permission_prompt matcher, about six seconds after a permission prompt opens. |
| Needs input | soft orange pulse | Claude asks you a question with its AskUserQuestion tool (a PreToolUse hook), or sends an agent_needs_input notification. |
| Plan ready | glows violet | Claude presents a plan for your approval (ExitPlanMode, also through PreToolUse). |
| Context low | turns yellow | The context window fills past a threshold you set on the profile. AC Bridge works this one out itself from the session's usage. |
| Finished | turns green | Claude finishes responding and hands control back to you (Stop). |
There are thirty states in all — idle, error, rate limited, compacting, subagent finished
and more — listed under states and effects in the docs. A new
profile starts blank; if you would rather begin from a ready-made set,
acbridge profiles create --starter writes one you can edit.
How it works
Claude Code has hooks: commands it runs at fixed points in a session. AC Bridge uses them exactly as the official docs describe, so nothing is scraped from your terminal.
-
The app installs a small plugin that registers for the events a light cares
about:
SessionStart,UserPromptSubmit,PreToolUse,PostToolUse,Notification,Stop,SubagentStop,PreCompactandSessionEnd, among others. - Each event becomes one state, which the plugin hands to the AC Bridge hub running on your computer.
- The profile bound to that project folder decides what each device does. LAN devices are driven straight from your machine, with no cloud round trip.
- When the session ends or you press stop, every device the bridge touched goes back to how it found it. A light the bridge never touched is left alone.
One timing detail
On Claude Code the permission light is a few seconds late, because of the signal it uses. AC
Bridge takes needs permission from the Notification hook's
permission_prompt matcher, and Claude Code sends that notification once a permission
prompt has waited about six seconds. Claude Code also has a PermissionRequest hook
that fires when the dialog appears; the AC Bridge Claude Code plugin does not use it today. The
other states in the table come from events that fire when the thing happens: a prompt submitted,
a question asked, a turn finished.
A note on words: this is a physical light in your room, not Claude Code's status line (the customisable text bar at the bottom of the terminal).
Codex CLI too
Codex has hooks of its own, and AC Bridge wires into them the same way. Codex reports a
permission request through its PermissionRequest hook, so on Codex the permission
light changes as soon as Codex asks. It also reports working (UserPromptSubmit),
finished (Stop), compaction, subagents and context low — 24 of the 30 states.
Codex has no hook for needs your input, so that one is Claude Code only.
You can run both at once. A project folder can hold one Claude profile and one Codex profile side by side, and when two sessions want the same light, the most recent one wins.
Supported brands
16 brands are driven directly on your LAN. Scan in the app (or acbridge scan)
finds what is on your network; the notes say what, if anything, each one needs first.
- Philips Hue — through your Hue Bridge; press its link button once to pair.
- LIFX — found on the network, no account needed.
- Govee — lights and LED strips over Govee's LAN API once LAN Control is on in the Govee app, or through Govee's cloud with your own API key.
- WiZ — found on the network, no account needed.
- Nanoleaf — a one-time pairing from the device's power button.
- Kasa — found on the network; newer models need your TP-Link sign-in, like Tapo.
- Tapo — your TP-Link account sign-in, kept on your machine for the local handshake.
- Yeelight — switch on LAN Control in the Yeelight app.
- WLED — found on the network, no account needed.
- Shelly — local, with a password only if you set one on the device.
- Tuya — local control, after a one-time key fetch from your Tuya account.
- Meross — local control, after a one-time key fetch from your Meross account.
- SONOFF / eWeLink — local control, after a one-time key fetch from your eWeLink account.
- Elgato — Key Light and Light Strip, no account needed.
- Roku — TVs: power, playback and volume, once network control is allowed in the Roku's own settings.
- ESPHome — your own ESPHome devices, over their native API.
Home Assistant brings 1000+ more devices: paste a long-lived access token and your Home Assistant address, and its lights, plugs and switches become available to a profile. SmartThings is supported through Samsung's cloud API rather than on your LAN; you link it by signing in to your Samsung account.
What a device can show depends on what it is. A colour bulb gets all nine effects, a white-only bulb four, a light that cannot dim two, and a plug simply switches on and off — which still makes a fine status light if it powers a lamp.
Why a light instead of a sound
Most people get here after searching for a Claude Code notification when done, or for a way to
know when it is waiting for input or needs permission. The usual answer is a
Notification or Stop hook that plays a sound or pops up a desktop
notification, and that works while you are at the desk and listening. A light works from across
the room, with headphones on, while you cook or watch a film, and it adds no extra ping to compete
with chat and email. With the example colours above you glance up and know: green, it finished;
red, it needs permission; orange, it is waiting for your answer. If a sound or a desktop
notification is all you want, our guide to
Claude Code notifications covers every free way,
and when each one fires.
DIY alternatives
You do not need AC Bridge to put a light on Claude Code. If one of these fits your setup, use it: they are good projects, and they are free.
-
agent-light
turns an Arduino traffic-light module into a status light over USB serial (or shows an
on-screen one), driven by four Claude Code hooks:
UserPromptSubmit,PreToolUse,PostToolUseandStop. Its states are idle, thinking and running tools, with no separate permission state. -
claude-lamp
drives a Moonside lamp over Bluetooth from eight Claude Code hooks, including
PermissionRequest, so its input colour shows as soon as a dialog opens. It runs on macOS. - A Home Assistant automation. A Claude Code hook calls a Home Assistant webhook trigger, and an automation sets a light. It is flexible and free if you already run Home Assistant; you write and maintain the hook script and decide what each event means.
What they leave out is what AC Bridge is for. The two repos are each built around one device — an Arduino module, or a Moonside lamp on a Mac — none of the three covers Codex out of the box, and putting a lamp back the way it was before the session is left to you. AC Bridge is for when you want the lights you already have, on Windows, macOS or Linux, to follow both agents without maintaining scripts.
What it costs
One plan, AC Bridge Pro: a 3-day free trial, then £2.99 a month. A card is taken before the trial starts and charged when it ends; cancel any time from your account, and if you cancel before the trial ends you pay nothing. It drives the agents you already run, so there is no API key to buy.
LAN devices are driven straight from your machine and their keys never leave it; your account, settings, device list, usage counts and session states sync through our servers. Your prompts, code and session transcripts are never collected. Privacy policy.
Try it on your own lights Start the 3-day free trial, or read the setup docs first. Setup takes about ten minutes.