Back to browse
GitHub Repository

VibeBar is a lightweight macOS menu bar app that monitors live TUI session activity for Claude Code, Codex, and OpenCode.

27 starsSwift

VibeBar – macOS Menu Bar Monitor for Claude Code, Codex and OpenCode

by yelog·Feb 26, 2026·2 points·0 comments

AI Analysis

●●SolidShip ItSolve My Problem

Multi-tool session monitor via PTY wrapping, plugin events, and fallback scanning.

Strengths
  • Triple-redundancy detection (PTY wrapper, plugin socket, process scan) eliminates blind spots.
  • Solves genuine friction: tracking parallel AI coding sessions without context switching.
  • Swift implementation with thoughtful UI (multiple icon styles, multi-language, launch-on-login).
Weaknesses
  • Audience is narrow: only macOS, only three specific tools, only relevant if running multiple parallel sessions.
  • Early stage with only 2 GitHub stars; ecosystem/plugin adoption unclear.
Target Audience

macOS developers using Claude Code, Codex, or OpenCode

Post Description

I've been running multiple AI coding sessions in parallel and kept losing track of which one was thinking, which one was waiting for my input, and which one had quietly finished. Alt-tabbing through terminals every 30 seconds got old fast.

VibeBar is a lightweight macOS menu bar app that solves this. It shows real-time session states (running / awaiting_input / idle / stopped) for Claude Code, Codex, and OpenCode without you leaving your current window.

How it works

Rather than relying on a single detection method, it uses three data channels and merges them:

1. PTY wrapper (vibebar): wraps the CLI in a pseudo-terminal and monitors output patterns to infer interaction state with high fidelity. 2. Plugin events (vibebar-agent): a local Unix socket server that receives lifecycle events from dedicated hooks in Claude Code and OpenCode. 3. Process scanner: a fallback that runs ps to detect running tool processes when the stronger channels aren't available.

State priority when channels conflict: running > awaiting_input > idle > stopped > unknown.

Honest caveats

- Without the plugin, awaiting-input detection uses regex heuristics on terminal output — it works but isn't perfect. - Codex has no plugin event channel yet, so it relies on the PTY wrapper or process scanner. - Automated test coverage is still thin. - macOS 13+ only.

Built in Swift 6.2 with strict concurrency. The menu bar icon has four styles (Ring, Particles, Energy Bar, Ice Grid) and supports English, 中文, 日本語, 한국어.

Source and releases: https://github.com/yelog/VibeBar

Happy to answer questions about the PTY/plugin architecture or the Swift implementation.

Similar Projects

Developer Tools●●●Banger

C9watch – macOS menu bar app to monitor all Claude Code sessions

Discovers Claude Code sessions automatically across any terminal—no plugins, no vendor lock-in.

Solve My ProblemDark HorseSlick
minchenlee
103mo ago
Developer Tools●●Solid

Claude Status

Darwin notifications beat polling, but macOS-only limits who cares.

CozyNiche Gem
crad
303mo ago