Start a project

Heads-upFree, open-source plugin for Claude Code on Mac

Your Mac will tell you when Claude Code needs you.

It speaks a short line when a task is done or Claude is waiting on you, so you can step away from the screen.

Install for Claude Code

Voices made with ElevenLabs (elevenlabs.io). Powered by Sarvam.

The Heads-up status panel on a Mac, with demo data: the waveform of a spoken alert, "I've completed the task." in the American male voice, with Play test and Turn off buttons and the mute options below.

01

Seven voices, built in

They all say the same line here, so you can compare them. They come with the plugin, so you don't need a key or an account.

Voices made with ElevenLabs (elevenlabs.io). Powered by Sarvam.

02

Twenty things it can say

Claude picks the one that fits. Every line starts with “Hello.” and a short pause. Press a line to hear Brian say it.

Needs you

Finished

Problems

Updates

You can switch any of them off on the settings page. With your own voice key you can rewrite them too.

03

When it stays quiet

Before each alert, Heads-up checks six things. If any of them is true, it skips the alert and tells Claude why, so Claude doesn't try again.

  1. You used the keyboard or mouse in the last 60 seconds.

    You're already at the desk. The 60 seconds is adjustable.

  2. Your microphone or camera is on.

    You're probably on a call, and it won't talk over one.

  3. A Focus mode is on.

    It follows the Focus settings you already have on your Mac.

  4. It's your quiet hours.

    You choose the hours on the settings page.

  5. Your Mac isn't on your home network.

    It knows home by your router's hardware address. It never uses GPS or Location Services.

  6. It spoke a moment ago, or has reached its hourly limit.

    A long session won't turn into a stream of alerts.

If none of them is true, your Mac says the line.

Volume

If your Mac is muted or turned down, Heads-up raises the volume for the alert and puts it back afterwards. It has hard limits that no setting can go past, and any output it doesn't recognise gets the headphone limit.

50%

Headphones

The most it will ever play through AirPods or headphones

90%

Speakers

The most it will ever play through your Mac's speakers

The Calls and Focus section: switches to stay silent while a microphone or camera is in use and while a Focus mode is on.
Calls and Focus, on the settings page.
The Limits section: speak only when you have been away for 60 seconds, quiet hours, a gap between alerts, an hourly limit and a chime before the voice.
Away time, quiet hours, the gap between alerts and the hourly limit.

04

More with your own voice key

Everything above works without a key. Add an ElevenLabs or Sarvam key and Heads-up can record new lines for you.

  1. It says which project is calling.

    “Hello from Brand Bakery Hub.” Handy when several sessions are running. Each name is recorded once and cached, up to 20 new names a day.

  2. Claude can add a sentence of its own.

    For when the fixed line isn't enough: “The migration ran, but two tables need your review.”

  3. You can rewrite any alert.

    Only the line you change gets recorded.

  4. You get more voices.

    Any voice in your ElevenLabs account, or any of Sarvam's 37 speakers.

You pay your provider directly, and the amounts are small. A project name is 16 to 25 characters, recorded once per voice. All 20 alerts in a new voice come to about 570 characters, and ElevenLabs' free plan includes 10,000 a month. A daily budget, 1,000 characters per provider unless you change it, caps anything recorded automatically.

The key is stored in the macOS Keychain. It never goes into a file or a log, and the settings page never shows it back to you. Project names and Claude's own words stay off until the key checks out and you switch them on.

The Project names section: Say the project name is on, with BB Studio and Brand Bakery Hub listed, each saying "Hello from" its name.
Project names, with a key added.
The Claude's own words section: a switch to let Claude speak its own lines, a longest line of 160 characters, a daily budget of 1,000 characters, a faster model switch and a box to try a line.
Claude's own words, with its daily budget.

05

What stays on your Mac

All of it, unless you add a voice key.

Heads-up is one small Node server and a Swift helper, with no npm dependencies. There's no account and no telemetry.

With a key, the short line being recorded goes to your voice provider and nothing else does. Claude is told to keep code, file paths and secrets out of anything it says.

06

What Claude calls

The plugin adds one tool, notify_user, and a skill that tells Claude to call it once, at the end of a turn where you have to do something, and to leave it alone otherwise.

notify_user({
  status: "review",            // one of 20
  message: "The migration ran, but two tables need your review.",
           // optional, needs your key
  repeat: 1,                   // 1 to 3
  volume: 65                   // optional, always under the caps
})
  • Hooks announce permission prompts and turns longer than 2 minutes, even if Claude forgets to call the tool. Background sessions never set them off.
  • When a rule blocks an alert, the tool answers “Not played” with the reason, and Claude moves on without retrying.

07

Add it to your agent

Heads-up is a small MCP server with a skill and hooks. One command sets it up in Claude Code, and in Codex too if you use it.

Works withClaude CodeCodex

Needs
macOS, Node.js 20 or later, and Claude Code or Codex
Call detection
Xcode Command Line Tools
Lines in your own voices
ffmpeg, from Homebrew
  1. Install

    In Terminal

    npx headsup-mcp install
    • The plugin in Claude Code, and in Codex if you have it
    • The call detector, so it stays quiet on calls
    • Permission for notify_user, so alerts don't wait on a prompt
    • The headsup command

    Add --dry-run to see the changes first. It's safe to run again after an update.

    In Codex, open /hooks once and trust its three hooks. Codex asks again after every update.

    Or inside Claude Code

    /plugin install heads-up --marketplace abhishek207/headsup-mcp

    Just the plugin. Call detection and the headsup command come with the Terminal install.

  2. Hear it

    headsup test review

    Your Mac plays this line. Press it to hear it here first.

  3. Ask your agent

    Tell me out loud when you're done.

    Add it to your next task, then step away. It stays quiet while you're using the keyboard or mouse.

The headsup command

It comes with the Terminal install.

  • headsup

    Opens the settings page. It runs on your Mac only, at 127.0.0.1:4777.

  • headsup status

    Shows whether an alert would play right now, and what would stop it.

  • headsup mute 30

    Quiet for half an hour. headsup unmute ends it early.

  • headsup say "The build is green."

    Speaks a line of your own, with your voice key.

  • headsup uninstall

    Takes it all out, and keeps your settings.

  • Every commandOn, off, usage and the rest, in the README.Read the README

08

Questions

Is it free?

Yes, and it will stay free. There's no paid version. The built-in voices need no account or key. If you add your own ElevenLabs or Sarvam key, they bill you for what you record. The code is open source too, under the GNU GPL v3.

Does it work on Windows or Linux?

Not yet. It's Mac only for now. A Windows version is planned.

Does it work with Codex, Cursor or other agents?

Claude Code and Codex. The Terminal install adds it to Codex if Codex is on your Mac. Open /hooks there once and trust its three hooks, and again after each update. There's no package for Cursor or other agents yet.

Will it talk over my meetings?

No. It stays silent while your mic or camera is in use, while a Focus mode is on and during your quiet hours. It also skips alerts if you've touched the keyboard or mouse in the last minute, because then you're already there.

Will it blast my AirPods?

No. Headphones are capped at 50% and speakers at 90%, and no setting goes past that. If your Mac is muted, it turns up for the alert and then puts the volume back.

Does anything leave my Mac?

Only if you add a voice key. Then the short line being recorded, a project name or Claude's sentence, goes to your provider. There's no telemetry and no Heads-up account. Claude is told to keep code, paths and secrets out of spoken lines.

Where is my API key stored?

In the macOS Keychain. It's never written to a config file or a log, and the settings page never shows it back.

How much will a key cost me?

Very little. A project name is 16 to 25 characters, recorded once per voice. A daily budget caps automatic recording at 1,000 characters per provider by default, and ElevenLabs' free plan includes 10,000 characters a month.

What if Claude forgets to call it?

Hooks cover the cases that matter most: permission prompts, and any turn that runs longer than 2 minutes.

Can I change what it says?

Yes, with a key. Edit any alert's wording on the settings page, add voices from your ElevenLabs account or Sarvam's 37 speakers, or let Claude say a short line of its own.

How do I turn it off?

Run headsup off, or headsup mute 30 for half an hour. headsup uninstall removes it completely.

Who made it?

Brand Bakery, a founder-led studio in India. Voices made with ElevenLabs (elevenlabs.io). Powered by Sarvam.

Credits

Voices made with ElevenLabs (elevenlabs.io): Brian, Sarah, George, Alice and Charlie.

Powered by Sarvam: Aditya and Priya, recorded with Sarvam Bulbul v3.

Heads-up is free and will stay free. There is no paid version.

It's an independent project, not affiliated with Anthropic, ElevenLabs or Sarvam.

Open source on GitHub, under the GNU GPL v3. The built-in voice clips are not covered by it.

Heads-up, by Brand Bakery. Voices made with ElevenLabs (elevenlabs.io). Powered by Sarvam.

WhatsApp