Skip to main content

Glowbug

A little desk creature that shows your Claude Code sessions — five OLED screens and ten RGB LEDs that tell you, from across the room, which agent is thinking, which one needs you, and which one just finished.

  • dark — session idle
  • deep blue ↔ violet fade — thinking
  • orange pulse + chime — Claude asked you a question
  • pink pulse + chime — Claude is waiting for permission to use a tool
  • green pulse + ding — an agent just finished its turn
  • red blink — error

The underglow acts as one ambient lamp echoing the most important thing happening on the board, so you don't even need to look directly at it.

This repository is the host software: everything that runs on your Mac. It's deliberately tiny — one Python file, standard library only, zero network code — so you can read every line before trusting it.

Install

Pick a door (they all do the same thing):

Tell Claude Code (easiest — you already have it):

Install glowbug from github.com/pud-blip/glowbug

One-liner:

curl -fsSL https://glowbug.dev/install | sh

Homebrew:

brew install pud-blip/tap/glowbug
glowbug install

pipx / uv:

pipx install glowbug && glowbug install
# or
uvx glowbug install

By hand (the fully-auditable path):

git clone https://github.com/pud-blip/glowbug
cd glowbug && python3 glowbug.py install

Then plug in your Glowbug. New Claude Code sessions appear on the device. (glowbug status for a health check; glowbug.py uninstall removes everything, including the hook entries, with a backup of your settings.)

If it ever seems dead

glowbug rescue reflashes a known-good firmware image over USB — it works even if a bad update left the device unable to talk (hold the knob while plugging in → the screen shows RESCUE MODE). Full walkthrough in TROUBLESHOOTING.md. Needs brew install dfu-util.

Privacy — what Glowbug can and cannot see

The point of open-sourcing this is that you don't have to take our word:

  • No network code. Search the repo for http, urllib, requests — there's nothing. Data flows from Claude Code's local files/hooks to a USB serial port. That's the entire graph.
  • The hook forwards exactly six fields and nothing else — search glowbug.py for HOOK_SOURCE, it's one screen of code: hook_event_name, session_id, session_title, cwd, tool_name, error_type. Never prompt text, never tool arguments, never file contents.
  • The daemon also reads ~/.claude/sessions/*.json (Claude Code's local session registry) for session names and busy/idle status.
  • The device itself only ever receives a session's name and a status word.

How it works

Claude Code ──hooks──▶ glowbug-hook ──unix socket──▶ glowbug.py (daemon)
Claude Code session registry (~/.claude/sessions) ──────▶      │
                                                       USB serial (115200-ish,
                                                        newline protocol)
                                                                ▼
                                                            Glowbug 🐛✨

The daemon assigns your first five sessions to the five slots (stable — sessions keep their screen), merges hook events with the session registry, and streams semantic states over a simple text protocol:

SLOT 3 STATE question NAME my-project DETAIL Bash

The device firmware owns all rendering — colors, animations, chimes, the on-device settings menu (brightness, underglow, sound, chime choice).

Requirements

  • macOS (Apple Silicon or Intel), Python 3.9+ (the system one is fine)
  • Claude Code with hooks support
  • A Glowbug device (hardware docs coming later — glowbug.dev)

Uninstall

python3 ~/.glowbug/glowbug.py uninstall

Removes the daemon, LaunchAgent, and hook entries. Your ~/.claude/settings.json is backed up before every change.

License

MIT — see LICENSE. https://glowbug.dev

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

glowbug-1.0.1.tar.gz (12.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

glowbug-1.0.1-py3-none-any.whl (13.1 kB view details)

Uploaded Python 3

File details

Details for the file glowbug-1.0.1.tar.gz.

File metadata

  • Download URL: glowbug-1.0.1.tar.gz
  • Upload date:
  • Size: 12.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.3

File hashes

Hashes for glowbug-1.0.1.tar.gz
Algorithm Hash digest
SHA256 9335402d6d03e5da3a21bcdfd7304c9de73a754c1b026815a24f5c0c3fa624a4
MD5 11331bd5e1a4751a55c9dd173bd4080a
BLAKE2b-256 b692fdd8dc3eac07a88269e5c5b05ece344d3bf37ef1caa8ee68b7f46a278dae

See more details on using hashes here.

File details

Details for the file glowbug-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: glowbug-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 13.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.3

File hashes

Hashes for glowbug-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 bbf664475e9e8a3acb0c0a25a028c8054bc221dac608e11d8d631b4d12256981
MD5 fac37a8d5b52d189f4d933884adf665e
BLAKE2b-256 9fc47287e0402eec777cf98487a70976541202384a124bda38d7179a070a3e19

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page