macOS メニューバーアプリ · Claude Code / Codex / Qwen / Gemini / Cursor ほか 8 エージェント対応
動くエージェントを、
横から見る。
Claude Code を動かしたまま Codex も Qwen も開いていると、今どれが何をしていて、誰が誰を呼び出したのかは、しばらくすると分からなくなります。AgentBar はメニューバーに常駐し、各エージェントの「今」と呼び出し関係、トークンとコストの事後分析を、エージェントが自分でディスクに書いたファイルから再構成します。承認待ちは生ログの末尾レコードから検出して最上位に出します。AgentBar 自身は CLI も MCP もブラウザも起動しません。
macOS 14+ · Swift 6 / SwiftUI · メニューバー常駐 + Graph ウィンドウ
codexbar
Claude · sonnet-4.5 · 2m
Bash の承認待ち(ログ末尾から推定)
承認待ち
12.4k
landing-page
Qwen · qwen3-coder · 6m
入力待ち
8,204
agentbar
Codex · gpt-5-codex · 30s
実行中
3,120
docs-site
Cursor · 42m
完了
9,881
- 対応エージェント
- 8
- 使用量取得で起動するプロセス
- 0
- 既定の外部送信
- 0
機能
横から見る。何も起動しない。
popover と Graph ウィンドウが見せるのは、エージェントが自分でディスクに書き込んだ記録だけです。使用量・履歴・呼び出し関係はすべて、同じ土台の上に載っています。
POPOVER · Active タブ + 別ウィンドウ
「今」と「なぜ」を並べて見る
tool_use(未完了)と result レコードから判定します。推測ではありません。codex exec を呼び、その Codex が claude -p を呼ぶ、という連鎖を、ツール呼び出しのコマンドと時刻・作業ディレクトリから再構成します。ノードは実行単位(Run)なので、resume しても親子関係が壊れません。~/.codex/AGENTS.md ~/.claude/CLAUDE.md 等)とプロジェクトのエージェント設定ファイルを、 存在は緑・未設定は灰で一覧し、選択するとその場で編集できます。Compare トグルでグローバルとプロジェクトを並べ、指示の重複を行単位で確認できます。未 import やレガシー設定の指摘もここです。POPOVER · Usage / History タブ
読み先は、エージェントが書いたファイルだけ
使用量も履歴も、CLI・MCP・ブラウザを介しません。エージェントがすでに書き込んでいるファイルを読みます。
~/.claude/projects/**/*.jsonl+ rate-limits.json~/.codex/sessions/YYYY/MM/DD/*.jsonl~/.qwen/projects/<project>/chats/*.jsonl~/.gemini/tmp/<project>/chats/*.jsonl…/Cursor/User/globalStorage/state.vscdbSQLite 読取専用—ローカル履歴なし · リモート quota(opt-in)~/.local/share/opencode/storage/**/*.json~/.hermes/state.dbSQLite 読取専用軽さは機能なので、実行時に証明しています
更新と自己監視
Update
npm brew cask app binary と、入れ方がバラバラな AI ツールを横断して更新します。実行はユーザーが操作したときだけで、全コマンドにハードタイムアウト付き。Diag
ProcessGuard
プロセス非起動と負荷境界の回帰テストを含む 172 テストで検証済み。
設計
使用量を読むために、エージェントを起動しない
使用量も、履歴も、エージェント同士の呼び出し関係も、エージェント自身がディスクへ書き込んだファイルから読めます。だから AgentBar は、使用量を得るためにエージェントを起動しません。CodexBar は同じデータを得るために CLI を定期起動します。差は最適化ではなく、設計です。
1回の使用量取得で、それぞれ何が起きるか。
CodexBar の 1 回の使用量取得
- タイマー
- claude CLI 起動
- MCP · OAuth · 自動更新
- ブラウザ · セッション作成
- Mac フリーズ
AgentBar の 1 回の使用量取得
- タイマー
- JSONL を開く
- パース
- 表示
| 比較項目 | CodexBar | AgentBar |
|---|---|---|
| 使用量の取得元 | エージェント CLI の定期起動(MCP・OAuth・自動更新つきの Node.js フルスタック) | エージェントが既にディスクへ書き込んでいる JSONL / JSON ファイルの読取 |
| サブプロセス | 起動する。MCP サーバー・自動更新・ブラウザまで巻き込む | 起動しない |
| ネットワーク | CLI 依存(自動更新だけで 49 GiB/日の報告) | 既定は通信なし。明示設定したリモート usage のみ例外 |
| 失敗時 | リトライ継続・キャッシュ破棄・データ欠落 | 最後の正常データを保持し、取得時刻を明示 |
| 認証ダイアログ | Keychain プロンプトが数分おきに再表示(複数報告) | バックグラウンドで認証ダイアログを出さない |
CodexBar 欄は公開 Issues の報告に基づく記述です。詳細は docs/codexbar-issues.md を参照してください。
CodexBar の GitHub Issues から(抜粋)
#1767〜#2467 の 200 件を調査 · 2026-07-27 時点
#2052バックグラウンドプローブが CLI の自動更新を起動
3 日間で 90.6 GiB のダウンロード。1 日あたり 257〜495 の Claude CLI プロセスが起動した。
#1844時間ごとの delegated CLI refresh がデフォルトブラウザを起動
トークン期限の誤判定によるリカバリパスが /usr/bin/open を呼び、高速リトライ時は 20 秒〜3 分間隔でブラウザが開いた。
#2251プローブごとに空のアカウントセッションを新規作成
数週間で 36 以上のファントムセッションが claude.ai に蓄積。プロバイダのレート制限にも抵触。
#1999CodexBarCLI のメモリが 46 GB + 29 GB まで膨張
48 GB RAM マシンでシステム全体の OOM(jetsam)を誘発。同種のリークは #1004 からも再発。
#2241CLI プローブの成功率 8.6%(268 回中 23 回成功)
失敗時にキャッシュ済みスナップショットを破棄し、最長 110 分のデータ欠落。
#2306ステータスアイテムの定期更新が MenuBarAgent を永久スピン
CPU 100〜125% でメニューバーが数分間フリーズ(macOS 27 beta)。
出典: github.com/steipete/CodexBar の公開 Issues。分類と要約はリポジトリ内の docs/codexbar-issues.md にまとめています。
導入
DMG を入れるか、ソースからビルドする
配布は GitHub Releases の DMG(署名・ノータリゼーション済み)が推奨です。ソースからビルドしても動きます。起動するとメニューバーと Dock の両方に常駐します。
DMG(推奨)
GitHub Releases からダウンロード。Developer ID 署名 + ノータリゼーション済み。
ソースから
git clone して swift run。ビルドには Xcode 16 / Swift 6 が必要です。
Homebrew Cask
定義は用意しています。公開タップは準備中。
- macOS
- 14(Sonoma)以降。Apple Silicon / Intel 両対応
- ソースビルド時
- Xcode 16 / Swift 6(コマンドラインツールのみでは不足)
- 依存パッケージ
- なし(SwiftPM のみ)
ゲージアイコンをクリックすると、Active / Usage / History / Update / Diag の 5 タブの popover が開きます。Active タブからは、エージェント間の呼び出し関係をツリーで見る Graph ウィンドウを開けます。popover のレイアウト仕様はリポジトリ内の docs/DESIGN.md にまとめています。
# リポジトリのルートで
swift build
# 実行。ウィンドウは開きません。
# メニューバーにゲージアイコンが現れます。
swift run AgentBar
# コアロジックのテスト(プロセス非起動の回帰テストを含む)
swift test