Setting up a new Mac, so thought I’d document this.
You can use Buzz (a Beeminder CLI I built) and Xbar together to display Beeminder deadlines in your Mac toolbar.
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:
brew tap narthur/tap
brew install narthur/tap/buzz
Or via bin if you use it:
bin install https://github.com/pinepeakdigital/buzz
Verify the install:
buzz --version
2. Authenticate buzz with Beeminder
Run buzz for the first time to trigger the auth prompt:
buzz
You’ll be asked to paste your Beeminder credentials as JSON. To get them:
- Go to: https://www.beeminder.com/api/v1/auth_token.json (you must be logged in)
- Copy the entire JSON output — it looks like:
{"username":"your_username","auth_token":"your_token_here"} - Paste it into the terminal prompt and press Enter
Your credentials are stored in ~/.buzzrc with user-only permissions.
Test that it works:
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.
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:
mkdir -p ~/Library/Application\ Support/xbar/plugins
Create the file ~/Library/Application\ Support/xbar/plugins/buzz-next.5m.sh:
#!/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:
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 ~/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 todaylists 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.
