AC Bridge ac-bridge.com

Claude Code status light with the smart bulb you already own

By Sam, solo developer in the UK · Last updated

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.

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.

  1. The app installs a small plugin that registers for the events a light cares about: SessionStart, UserPromptSubmit, PreToolUse, PostToolUse, Notification, Stop, SubagentStop, PreCompact and SessionEnd, among others.
  2. Each event becomes one state, which the plugin hands to the AC Bridge hub running on your computer.
  3. 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.
  4. 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.

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.

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.