Clauminella

Turn your Luminella into a status light and an approval button for Claude Code.
Hold the stick, speak, and it becomes text.

macOS 26 or later / Apple Silicon only / requires a BRAIN MAGIC Luminella

What it does

Claude Code barely moves on screen while it is thinking. This puts that state on the ring under your hand.

State as colour

Idle, working, waiting for approval, error, done — each has its own colour on the glow ring. You can track progress without watching the terminal.

Blinking means it stopped

Movement carries meaning too. Steady means a settled state, a slow breath means work in progress, a fast blink means it is waiting on you. Readable from the corner of your eye.

Approve or deny with a button

When a permission prompt appears the ring blinks amber. One button approves, another denies. Your hand never has to go back to the keyboard.

No vendor software needed

It talks to the device directly rather than through Luminella Core. No profiles, no key assignments — install it and the ring lights up.

Assign buttons by pressing them

You never need to know which switch is number what. Pick "assign" from the menu and press the button you want while the ring is lit.

One-click hook setup

The app writes the Claude Code hook configuration for you. It only appends, never touches your existing hooks, and backs the file up first. Removing it is one click as well.

Built so it cannot block you

Quit the app or unplug the device and Claude Code carries on as usual. If nothing answers, the on-screen prompt decides — the physical button is never a gate you can get stuck behind.

Survives unplugging

Pull the cable and it notices; plug it back in and it reconnects on its own. No need to restart the app.

Push to talk

Hold the stick over and it records; let it centre and the speech is transcribed straight into whatever field you are typing in, and onto the clipboard too. Dictate a long prompt instead of typing it. Audio never leaves this Mac.

Menu bar only

No Dock icon. The menu bar icon itself shows the current state. Claude Code launches the app when a session starts, so you do not have to keep it running.

Colours and states

Colours are configurable. There are three ways the ring lights: steady, breathing, and blinking.

ColourMotionStateWhat to do
Dim blueSteadyIdle, waiting for inputGive it a task
CyanBreathingThinking or running a toolWait
AmberBlinkingWaiting for approval. StoppedPress approve or deny
PurpleBlinkingNotificationLook at the screen
RedSteadyDenied, or an errorDepends
GreenSteadyApproved, or response finished—
PinkSlow blinkMicrophone starting upDo not speak yet
PinkSteadyRecordingKeep holding and speak
VioletBlinkingTranscribingWait about a second

If nothing is pressed within 30 seconds, the ring returns to the working colour and the normal on-screen prompt takes over. The timeout is configurable.

Requirements

For the status light and the approve/deny buttons, no special macOS permissions are needed — no Accessibility, no Input Monitoring.

ItemDetail
OSmacOS 26 or later
CPUApple Silicon (M1 or later) only. Does not run on Intel Macs
DeviceBRAIN MAGIC Luminella (USB)
SoftwareClaude Code
PermissionsDepends on what you use (below)

The Luminella link is an Amazon affiliate link. As an Amazon Associate, the author earns from qualifying purchases. Using it does not change the price you pay.

Permissions

Each is asked for only when you use the feature that needs it.

What you usePermission
Status light and approve/deny onlyNone
Push to talk (to the clipboard)Microphone
Push to talk (into the focused field)Microphone + automation

Typing into the focused field sends a keystroke (Cmd+V), which macOS gates behind automation permission. It can be switched off from the menu at any time, and with it off no keystroke is ever sent — the text still reaches the clipboard, so pasting gets you the same result.

If you want push to talk

This one feature needs external tools. They are not bundled with the app.

ForInstall
Recordingbrew install ffmpeg
Transcriptionpip install mlx-whisper

The transcriber is 180MB and its speech model is over a gigabyte — out of proportion to a 22MB app, so it is called as an external command instead of being bundled. The only time anything is downloaded is when that model is first fetched; nothing is sent after that.

About the microphone

Plug a USB microphone in directly. The difference in start-up time is large enough to feel.

ConnectionTime until recording starts
USB microphone, directabout 0.5s
iPhone (Continuity)1.8 to 8.6s

That is the gap between pushing the stick and the microphone actually delivering audio. Nothing before that is captured — it does not arrive as silence, it does not exist. A sleeping iPhone takes several seconds over Continuity, which swallows the start of a sentence. Waiting for the ring to go steady avoids it, but waiting several seconds every time is not practical.

Development used a FIFINE AmpliGame A8: 0.5s to start, and it caught proper nouns the other inputs missed. Nothing depends on that particular model — any microphone you can plug in over USB should be just as quick.

As an Amazon Associate, the author earns from qualifying purchases.

It cannot run alongside Luminella Core. Both compete for the same serial port, so only one of them works at a time. Quit Luminella Core while you are using the Luminella with Claude Code.

Audio is processed entirely on this Mac and never sent anywhere, and the app itself makes no network connections. See the privacy policy for details.

Download

Free, with no feature limits and no ads. The source is published under GPLv3.

Free

The app is notarized by Apple, so it installs straight from the download. There is no warning to work around.

Once installed, choose "Install hooks" from the menu bar icon to connect it to Claude Code.

Support development

Only if you like it. It is entirely optional, and nothing about the app changes either way.

Report bugs or request features on GitHub Issues, or email admin@gigowat.com.

Questions

Can I use it together with Luminella Core?

No. Both hold the device's serial port, so they cannot run at the same time. While Luminella Core is running this app will report "Device: not connected". Quit Luminella Core, then choose "Reconnect device" from the menu.

Does it work with the Orbital2 or Orbital2 STERNA?

Unverified. The protocol appears to be shared across the family, but the Luminella is the only device this has been tested on. The Orbital2 has hardware the Luminella lacks — a vibration motor and a rotary encoder — and none of that has been exercised. If you try it, I would be glad to hear how it went.

Does Claude Code break if I quit the app?

No, it keeps working normally. If the hook cannot reach the app it exits without returning a decision, and approval falls back to the usual on-screen prompt. The same applies if you unplug the device or let the approval time out. You can never end up unable to proceed because a button was not pressed.

Will it break my existing hook configuration?

It leaves it alone. The app only appends to the settings file and preserves other tools' hooks. It writes a timestamped backup before making any change, so you can always go back. "Remove hooks" deletes only the entries it added.

Can I use it alongside a remote approval tool?

Registering more than one approver for the same event is possible and they coexist in the configuration. What has not been verified is which one wins when both try to answer at once. If you need predictable behaviour, enable only one of them.

How does it control the device?

The Luminella presents itself as a USB serial device. The app sets the LED colour and receives button presses over a 9600 baud serial link. That protocol is not published, so it was worked out by studying how the vendor software communicates with the device, then verified against real hardware. What is known is documented in the repository.

What does push to talk need?

Microphone permission, plus ffmpeg for recording and mlx-whisper for transcription — brew install ffmpeg and pip install mlx-whisper. Together the transcriber and its model exceed a gigabyte, which is why they are not bundled. None of it is needed if you do not use the feature.

Is my speech sent anywhere?

No. Transcription happens entirely on this Mac. The only network access is fetching the speech model the first time. The recording is deleted once it has been turned into text.

Can I turn off typing into the focused field?

Yes. Switch off "入力欄に直接入力" in the menu and the transcript only goes to the clipboard; no keystroke is sent and no automation permission is needed. It is on by default, but asks before it is first enabled.

Does it record my keystrokes?

No. It requests neither Accessibility nor Input Monitoring permission, and without those it cannot read your keyboard at all. The only input it reads is the Luminella's own buttons and stick. It makes no network connections either.

Is it really free?

Yes. No feature limits, no trial period, no ads. The source is published under GPLv3, so you can build it yourself, modify it, and redistribute it (modified versions must also be released under GPLv3).