# Display Beeminder deadlines in Mac toolbar

**URL:** <https://forum.beeminder.com/t/display-beeminder-deadlines-in-mac-toolbar/12784>\
**Category:** Akrasia\
**Created:** [May 29, 2026, 3:30pm UTC](https://forum.beeminder.com/t/display-beeminder-deadlines-in-mac-toolbar/12784 "2026-05-29T15:30:54Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![narthur](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/narthur/32/5113_2.png) [@narthur](https://forum.beeminder.com/u/narthur)\
**Post date:** [May 29, 2026, 3:30pm UTC](https://forum.beeminder.com/t/display-beeminder-deadlines-in-mac-toolbar/12784/1 "2026-05-29T15:30:54Z")

</div>

Setting up a new Mac, so thought I’d document this.

You can use [Buzz](https://github.com/pinepeakdigital/buzz) (a Beeminder CLI I built) and [Xbar](https://github.com/matryer/xbar) together to display Beeminder deadlines in your Mac toolbar.

 ![Screenshot 2026-05-29 at 10.18.51 AM](https://us1.discourse-cdn.com/flex019/uploads/beeminder/original/2X/9/9ec79bd6dd49395f3e68dbdfac3a70aad6b7ecd1.jpeg)

AI-generated tutorial below. I’ve checked for accuracy, but let me know if you run into any issues following it and I’ll try to update.

* * *

## 1. Install buzz

The easiest way is via Homebrew:

```bash
brew tap narthur/tap
brew install narthur/tap/buzz

```

Or via [bin](https://github.com/marcosnils/bin) if you use it:

```bash
bin install https://github.com/pinepeakdigital/buzz

```

Verify the install:

```bash
buzz --version

```

* * *

## 2. Authenticate buzz with Beeminder

Run buzz for the first time to trigger the auth prompt:

```bash
buzz

```

You’ll be asked to paste your Beeminder credentials as JSON. To get them:

1. Go to: [https://www.beeminder.com/api/v1/auth\_token.json](https://www.beeminder.com/api/v1/auth_token.json) (you must be logged in)
2. Copy the entire JSON output — it looks like:

```json
{"username":"your_username","auth_token":"your_token_here"}

```

3. Paste it into the terminal prompt and press Enter

Your credentials are stored in `~/.buzzrc` with user-only permissions.

Test that it works:

```bash
buzz next
# Output example: mygoal +1 2h

```

* * *

## 3. Install xbar

xbar runs scripts on a timer and displays their output in the macOS menu bar.

```bash
brew install --cask xbar

```

Then open xbar from your Applications folder (or Spotlight). It will start silently in your menu bar with no plugins loaded yet.

* * *

## 4. Create the buzz-next plugin

Create the plugins directory if it doesn’t exist, then add the plugin script:

```bash
mkdir -p ~/Library/Application\ Support/xbar/plugins

```

Create the file `~/Library/Application\ Support/xbar/plugins/buzz-next.5m.sh`:

```bash
#!/usr/bin/env bash
# <xbar.title>Buzz Next</xbar.title>
# <xbar.version>v1.0</xbar.version>
# <xbar.desc>Shows the next buzz/Beeminder goal in the menu bar.</xbar.desc>
# <xbar.dependencies>buzz</xbar.dependencies>

# Add common binary locations to PATH (xbar runs with a minimal environment)
export PATH="$HOME/.local/bin:/opt/homebrew/bin:/usr/local/bin:$PATH"

result=$(buzz next 2>/dev/null)

if [-z "$result"]; then
    echo "✓ no tasks"
else
    echo "$result"
fi

```

Make it executable:

```bash
chmod +x ~/Library/Application\ Support/xbar/plugins/buzz-next.5m.sh

```

The `5m` in the filename tells xbar to refresh the output every 5 minutes. Change it to `1m` for every minute, or `15m` for every 15 minutes.

* * *

## 5. Load the plugin in xbar

In the xbar menu bar icon, click **Refresh All** (or restart xbar). Your next Beeminder goal should now appear in the menu bar, updating every 5 minutes.

If it shows nothing or an error, test the script directly:

```bash
bash ~/Library/Application\ Support/xbar/plugins/buzz-next.5m.sh

```

The output of that command is exactly what will appear in your menu bar.

* * *

## Tips

- **Multiple goals** : `buzz today` lists all goals due today. You could adapt the plugin to show a count or list them in a dropdown (lines after `---` in xbar output become dropdown items).
- **Refresh rate** : Change the interval in the filename (`1m`, `5m`, `15m`) to suit your preference.
