
Claude Lamp
github.com/bobek-balinek/claude-lamp- Category
- Developer Tools
- Rank
- No. 1513Tools index
- Pricing
- Open Source
- Type
- TOOL
- Use case
- Productivity & Collaboration
- Interfaces
- CLI
- Builder
- @bobek-balinek
- GitHub
- 296 stars
- Date
About
Integrates Claude Code with Moonside LED lamps via Bluetooth to provide visual status indicators. Your lamp displays different colors and animations based on Claude's state - animated themes while working, green when idle, and purple when input is needed.
What it does
Claude Lamp turns Claude Code lifecycle events into a small physical state machine. Hooks record one of four states, while a background Python process maintains a Bluetooth Low Energy connection and sends lamp commands. A separate command-line controller can scan devices, set colors and brightness, select themes, send raw commands, or run interactively.
Why it's ranked here
This is a focused, understandable hardware integration with sensible latency and failure choices. The persistent connection avoids repeated Bluetooth setup, hooks always aim to leave Claude unblocked, and reconnect retries handle interruptions. Its narrow macOS and Moonside scope, manual installation, and explicit hardware warning keep the verdict measured.
What's good
The architecture separates fast event capture from slower Bluetooth work. A lock prevents duplicate daemons, state polling is lightweight, reconnect attempts back off, and shutdown turns the lamp off. Automatic name-based discovery reduces initial configuration. Debouncing also guards against internal tool events incorrectly changing an idle lamp back to working.
Tradeoffs
Setup requires Python, a separately installed Bluetooth library, copied scripts, and manual merging of hook configuration. Bluetooth support is macOS-only through CoreBluetooth. Only the Halo model was tested; compatibility with other Moonside models is presented as an expectation. The author explicitly disclaims responsibility for possible hardware issues, and initial connection can take several seconds.
How to use it well
It suits macOS developers who already use Claude Code at a desk and own a compatible Moonside lamp. Install it globally when an ambient cue helps you notice approvals or completed work without watching the terminal. Use the standalone controller for lamp experiments. It does not provide general application notifications or support lamps outside the documented Moonside protocol.
Technical notes+
claude_hooks/settings.json maps Claude Code events and selected tool matchers to claude_hooks/moonside_hook.sh, which writes /tmp/moonside_state and starts claude_hooks/moonside_daemon.py when needed. The daemon polls every 200 ms, holds an fcntl lock, maintains a Bleak connection, writes ASCII commands through the Nordic UART Service TX characteristic, retries connections with increasing delays, and exits on the off state or after 30 minutes idle. moonside_ble.py is documented as a standalone CLI, although its source was not included in the supplied text. The README documents MOONSIDE_MAC pinning, but the supplied daemon source only performs name-prefix discovery and does not read that environment variable.
Observed
- License
- MIT
- Languages
- Python daemon and controller, Bash hook, and JSON configuration
- Install surface
- Manual script copy and Claude Code settings merge; Bleak installed with pip
- Interfaces
- Claude Code command hooks and a standalone command-line controller with interactive mode
- Platform support
- macOS with CoreBluetooth and Python 3.10 or newer
- Hardware support
- Moonside lamps over Bluetooth Low Energy; tested with Halo
- Protocol
- Nordic UART Service carrying ASCII commands for power, color, brightness, and themes
Read from README.md, claude_hooks/moonside_daemon.py, LICENSE, claude_hooks/settings.json, claude_hooks/moonside_hook.sh.
What it can do
Connect to Moonside LED lamps wirelessly
Bluetooth-enabled Moonside LED lamp → Established Bluetooth connection
Display animated visual themes when Claude is processing
Claude Code working state → Animated light patterns on lamp
Show green indicator when Claude is idle
Claude Code idle state → Green light display on lamp
Display purple indicator when Claude needs input
Claude Code input-needed state → Purple light display on lamp
Monitor Claude Code's current operational state
Claude Code application status → Real-time state information
Control lamp colors and animations remotely
Color and animation commands → Visual light changes on Moonside lamp
Tags
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.