Daemon-free Creator Micro status lighting for Claude Code, designed to coexist safely with Codex. The installed command is creator-micro-claude.
- Visible slots 1-2 (hardware IDs 0-1): Codex/ChatGPT
- Visible slot 3 (hardware ID 2): Claude lead conversation
- Visible slots 4-6 (hardware IDs 3-5): the three most recently active Claude teammates
The command rejects hardware IDs 0-1 before it serializes a device message. Every update uses only the runtime v.oai.thstatus method with key and ambient synchronization disabled.
| State | Light |
|---|---|
off |
Off |
ready |
Dim Claude coral, solid |
working |
Bright Claude coral, shallow breathing |
attention |
Amber, faster breathing |
completed |
Green, solid |
error |
Red, breathing |
States persist until another hook event changes them. There is no timer process.
creator-micro-claude doctor --live
creator-micro-claude status
creator-micro-claude set --slot 3 --state ready --dry-run
creator-micro-claude set --slot 3 --state ready
creator-micro-claude disable
creator-micro-claude enable
creator-micro-claude uninstall
event is reserved for Claude hooks and accepts one JSON object on standard input. It always exits successfully and prints nothing, even if the device is missing, busy, disconnected, or unavailable.
The app or terminal process opening the Creator Micro may need macOS Input Monitoring permission. Enable the relevant application under System Settings → Privacy & Security → Input Monitoring, then fully quit and reopen it:
ChatGPTfor Codex's built-in Creator Micro support- The terminal application that launches Claude Code, such as Terminal, iTerm2, or Ghostty, for this hook command
doctor --live opens and closes the vendor HID interface without changing any light. Installation refuses to enable hooks until this probe succeeds.
The bridge uses teammate_name when Claude supplies it and deliberately ignores agent_id, because Claude documents agent_id as subagent identity. TeammateIdle and TaskCompleted include teammate_name; ordinary working/error events update a teammate light when that same team field is present. Background subagents never receive their own slots.
State is stored under ~/.local/state/creator-micro-claude with restrictive permissions. It contains only:
- Salted 24-character hashes for session and teammate identity
- Conversation kind (
leadorteammate) - Hardware slot and lighting state
- Last activity timestamp
- Enabled/disabled flag
Prompts, responses, teammate names, session IDs, tool inputs and outputs, transcript paths, task text, working directories, and file contents are not persisted. Inactive entries are pruned after seven days. The bounded log contains only timestamp, hook event name, result, and a fixed error code and rotates after 256 KiB.
The installed source lives at ~/.local/share/creator-micro-claude and the command symlink at ~/.local/bin/creator-micro-claude. Installation merges ten exact command handlers into ~/.claude/settings.json, preserving existing Caudex and unrelated hook entries. It creates a timestamped byte-for-byte settings backup under ~/.claude/backups/creator-micro-claude before a change.
uninstall removes only handlers whose command exactly equals ~/.local/bin/creator-micro-claude event, creates a final settings backup, removes only its owned symlink, and moves the installed source to ~/.Trash for recovery.
To restore a backup manually, first disable the bridge, quit Claude Code, copy the desired .bak file over ~/.claude/settings.json, and reopen Claude Code.
Codex and Claude use the same runtime device interface. Claude opens it non-exclusively and closes it immediately after each event. If Codex sends a full six-slot refresh, it may temporarily overwrite a lower Claude light; Claude reasserts that light on its next lifecycle event. This is runtime contention only—neither integration writes firmware or a persistent device profile.