Setup guide

Set up your VibeBuddy

Install the app, plug in the box, and VibeBuddy starts watching Claude Code, Codex and your GitHub Actions runs.

1Install and open the VibeBuddy app

Before you start: you need a Mac with Apple silicon and macOS 14 or later, and Claude Code or Codex (or both). x86_64 Linux is experimental (see below); Windows isn't supported.
a

Download VibeBuddy-<version>-arm64.dmg from the latest release.

b

Open it and drag the app to Applications.

c

Open the app. First-run setup starts and walks you through steps 2 and 3.

macOS won't open the app? If a release isn't signed yet, macOS blocks the first launch. Open System Settings → Privacy & Security and allow it there.

2Connect the box to your computer

Plug VibeBuddy into your Mac with the included USB-C cable. The one cable powers the box and carries its events; there's no Wi-Fi or pairing. If macOS asks whether to let the accessory connect, click Allow.

Setup finds the box and makes it blink, so you know it's the right one.

VibeBuddy, front view, connected with a white USB-C cable and showing the Ready screen
Connected and ready. The buddy waits for your agents.

Not found? Make sure you're using the included cable (some USB-C cables only charge). More in Troubleshooting.

3Connect your agents

Setup lists Claude Code and Codex. For each one you use:

a

Click Connect.

b

Check the change VibeBuddy is about to make to that agent's hook config, then click Write to confirm. You don't edit any config yourself.

c

The row shows Waiting for the first event… until you use that agent. As soon as it reports, the row turns green and shows the time of its last event (step 4 does this).

VibeBuddy Settings, Agents tab: Codex is not set up and shows a Connect button; Claude Code has a green dot, its last event time, and Repair and Remove buttons
Before and after: Codex not connected yet (click Connect); Claude Code connected, with a green dot and its last event.
  • ✓GitHub Actions: nothing to connect. VibeBuddy checks your runs every 30 seconds through the gh CLI you're already signed in to, for the repositories your agents worked in during the last hour.
  • ✓Desktop app and terminal: the connection is user-level, so it covers both the agent's desktop app and the same agent in a terminal.
  • ✓Later: connect, repair or remove an agent any time in Settings → Agents.

Setup then asks you to pick an announcement voice and whether to launch at login.

Privacy: the hook only forwards session and turn IDs, event names and the working directory. It never forwards prompts, assistant replies, transcripts or tool results.

4Open Claude Code or Codex and try it

Start Claude Code or Codex in any project and give it a small task, such as summarizing the README or fixing a typo. Then watch the box:

1

Working. A card appears with the agent (CC or CX), the session name and the project. The buddy stays quiet while the agent works.

2

Input required. When the agent needs you (to approve a command, or answer a question), the box says one short line. Press K2 to bring up the most recent session, the card on top.

3

Done. When the task finishes, you hear it and see how long it took.

VibeBuddy next to a MacBook: the box shows Input required for two Claude Code sessions, and the same two sessions are open in the terminal
Two Claude Code sessions waiting for input, on the box and in the terminal. (Stand not included.)

That's it: get back to work and let the buddy call you. The rest of this page covers the app, the buttons, every screen state and troubleshooting.

The VibeBuddy app

The app runs the connection to the box and holds your settings. It doesn't show task alerts itself: those come from the box.

Menu bar

The icon is the buddy's pixel face. It's grayed out with its eyes closed when the box isn't connected. Click it for:

  • ✓Box status: online with its firmware version, box not found, or daemon not responding (click to restart it)
  • ✓Current mode: On duty, Pomodoro or Leisure
  • ✓Today's stats
  • ✓Settings… (or open the app again from Finder, Launchpad or Spotlight)
  • ✓Quit. Quitting takes the box offline, so leave the app running. It can start at login.

The app shows a Dock icon only while one of its windows is open. It sends a macOS notification only when the link breaks: the box has been disconnected for more than 30 seconds, or the background service failed to restart. Agent events never become Mac notifications.

Settings

TabWhat's there
GeneralLaunch at login, notifications when the link breaks, and the interface language (System, English or 简体中文).
SoundThe box's volume and the announcement voice. See Voice and volume below.
AgentsClaude Code and Codex, each with its status, its most recent event, and Connect, Repair and Remove. One connection covers both the desktop app and the same agent in a terminal.
DeviceFirmware versions and updates, and a live view of the box's screen. See Firmware and the box screen below.
AdvancedOpen logs, restart the background service, and export diagnostics to send to support.

Voice and volume

In Settings → Sound, drag the slider to set the box's volume and click Play a line on the box to hear it. The volume is saved on the box and kept across restarts. To mute, hold K2 on the box.

Below it are the announcement voices: Jessica and Chris in English, Wanwan Xiaohe and Xiaohe 2.0 in Chinese. Press play to preview one, then click Use to write it to the box. Writing can take a few minutes; keep the cable plugged in. When it's done, the box says a line in the new voice.

VibeBuddy Settings, Sound tab: a volume slider set to 40 with a Play a line on the box button, and the announcement voices Jessica, Chris (in use), Wanwan Xiaohe and Xiaohe 2.0, each with a play button and Use
Settings → Sound: volume, and four announcement voices (Chris in use).

Firmware and the box screen

Settings → Device shows the box's firmware next to the firmware bundled with your app. When they differ, an Update to bundled version button appears; click it and keep the cable plugged in until the box restarts. Firmware updates keep your voice and today's stats.

  • ✓Flash from file… installs a firmware package you downloaded yourself (VibeBuddy-firmware-<version>.zip from the releases page). It shows the package and the box's current version side by side before flashing.
  • ✓Make the box blink confirms which box the app is talking to.
  • ✓Box screen shows what's on the box right now. Click Refresh to update it and Save image to keep a copy, handy when you contact support.
VibeBuddy Settings, Device tab: box firmware and bundled firmware both v0.2.2, Flash from file and Make the box blink buttons, and a live view of the box screen with Refresh and Save image
Settings → Device: firmware versions match, so no update is offered.

Updating the app

The app doesn't update itself. New versions are on the releases page: install the new app over the old one, then check Settings → Device in case it offers a firmware update.

Buttons and modes

The box has three buttons, K0, K1 and K2, plus RST, along its top edge. Each one does the same thing in every mode.

Close-up of VibeBuddy showing the buttons along its top edge and two GitHub Actions runs on screen
The buttons sit along the top edge. (Stand not included.)
ButtonPressHold 1 second
K0Pomodoro: start, pause, resumeGive up the current phase (or skip a break that's waiting to start)
K1Switch between On duty and PomodoroSend the buddy to Leisure right away
K2Bring up the window of the most recent session (the card on top)Mute or unmute all voice, including the Pomodoro chime (MUTE shows on screen)

Modes

On duty: a Codex firmware build in progress
On duty
Pomodoro: the 25-minute focus timer running
Pomodoro
Pomodoro: the focus timer paused with K0
Pomodoro, paused (press K0)
  • ✓On duty (default): watches your agents and calls you when something happens.
  • ✓Pomodoro: 25 minutes of focus, 5 of break. Each phase ends with a chime and a spoken line, and the next one waits for you to press K0. It runs on the box, even without your computer.
  • ✓Leisure: when nothing has happened for a while, the buddy goes off to play, later dozes, and at night turns its backlight off. Any agent activity or button press brings it back on duty.

What the screen means

Up to three task cards, newest on top. Each shows the agent (CC Claude Code, CX Codex, CI GitHub Actions), the session name, the project, and how long it has been in its current state.

Working: a firmware build in progress
Working: an agent is busy. No sound.
Input required: a Codex task asking for input above a running Claude Code task
Input required: an agent is waiting for you. One short spoken line.
Done: a completed test run
Done: a task finished. One short spoken line.
Failed: a failed CI test run
Failed: a task or CI run failed. One short spoken line.
Ready: the buddy idle, showing the number of tasks done today
Ready: nothing going on; it shows what got done today.
Claude Code, Codex and CI task cards on the same screen
Several agents: Claude Code, Codex and CI cards on one screen.

NO LINK: eyes closed and the screen goes gray when the box hasn't heard from your computer for 15 seconds. See Troubleshooting.

Troubleshooting

  • ✓The app can't find the box. Use the included cable (some USB-C cables only charge), and click Allow if macOS asks whether to let the accessory connect.
  • ✓Screen says NO LINK. Check the USB-C cable is plugged into your computer and the VibeBuddy app is running (menu bar icon). The box reconnects on its own once the link is back.
  • ✓An agent's sessions don't appear. Open Settings → Agents: if the agent shows Not set up, click Connect and Write; if it's connected, try Repair.
  • ✓No GitHub Actions cards. Run gh auth status to check you're signed in. Only repositories an agent worked in during the last hour are watched.
  • ✓No voice. If MUTE is on screen, hold K2 for one second to unmute. Volume and voice are in Settings → Sound.
  • ✓K2 doesn't bring back my session. A session inside tmux or over SSH has no window to go back to.
  • ✓Firmware out of date. Settings → Device offers the firmware bundled with your app (details).
Still stuck? Export diagnostics from Settings → Advanced and email them to vibekeys-customer-support@secondstate.io with your order number, or open an issue on GitHub.

Linux (experimental)

For x86_64 Linux with systemd; tested on Omarchy (Arch, Hyprland). Download VibeBuddy-<version>-linux-x86_64.tar.gz from the latest release, then:

tar xf VibeBuddy-<version>-linux-x86_64.tar.gz
cd VibeBuddy-<version>-linux-x86_64 && ./install.sh

The script installs the daemon as a systemd user service, adds the app to your launcher and login, and adds the hooks to Claude Code and Codex. Run it again to upgrade. Your user needs access to /dev/ttyACM* (group uucp on Arch, dialout on Debian and Ubuntu); the script tells you if it's missing. More options, including an Arch package, are in the README.