0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【クォータ切れで作業を止めない】Claude Code・Codex・Antigravityの残枠と障害を1画面で常時監視するローカルダッシュボードを作った話

0
Last updated at Posted at 2026-09-13

0. 概要

この記事では、Claude Code、OpenAI Codex、そしてGoogle Antigravity(Gemini)の使用量・残枠・リセット解除までのカウントダウン・各社APIの稼働障害を1画面でまとめて常時監視できるローカルダッシュボード「AI Vitals」の制作記と使い方について記載します。
GitHubでMITライセンスのオープンソースとして公開しています:
👉 GitHub: KazutoMakino/ai-vitals

この記事の流れとしてはざっくり以下の通りです:

  • 複数ツールのクォータ切れで作業が止まる絶望と、制作の動機
  • 3大ツールのバイタル(残枠・秒単位カウントダウン・週枠ペース・障害)の集約
  • なぜフレームワークを使わず「外部依存ゼロ(Python標準ライブラリのみ)」にしたのか
  • 手触り感へのこだわり(上下並び替えボタン、9つのテーマ、Windows文字コードとの格闘)
  • 1秒で動かせるクイックスタート

(※外部SaaSにAPIキーを預けるのが怖い人、ターミナルで毎回 /usage を叩くのが苦である人以外には、無用なツールかもしれません)


1. 背景(クォータ切れで作業が止まる絶望)

最近の開発現場では、タスクの性質やモデルの得意不得意に合わせ、Claude CodeOpenAI Codex、Googleの Antigravity (Gemini) を併用するのがすっかり日常になりました。いやぁすごい時代です。
しかし、複数ツールを並行してガシガシ使っていると、誰もが次に直面するかと思います:

  1. 突然のクォータ上限到達で思考停止
    ノリノリでリファクタリングやデバッグを進めている最中に、突然「You have reached your current limit」と突き放されて作業が停止する。と同時に「あ、どうしよ」と思考停止する。
  2. 「次の解除って何時だっけ?」で集中が途切れる
    「あと何分で枠が空く? 今のペースで作業して今週の7日枠は保つの?」と気になり、別ターミナルを開いて /usage を叩きに行ったり、desktop / web で何ステップか踏んで見に行ったり。
  3. サーバー障害 or プロンプト不良かの疑心暗鬼
    「なんかレスポンスが返ってこないな……プロンプトが悪くて無限ループしてる? それとも鯖落ち?」と、各社のステータスを見に行く。

開発の本筋とは関係ない「残枠の確認」「ペース配分の心配」「障害の裏取り」で貴重な集中力と時間が削られていくのは、精神衛生上よろしくありません。
「別ターミナルを行き来せず、ブラウザの片隅に各ツールのバイタル(残量・解除までの秒数・消費ペース・障害ステータス)をリアルタイム表示しておけるダッシュボードが欲しい!」
そう思ったのが、「AI Vitals」を作ったストレートな動機でした。


2. 「AI Vitals」で解決したこと

ブラウザの片隅に置いておくだけで、開発中の不安や確認コストをまるごと解消できるように設計しました。

① 3大AIツールの利用状況を1画面に集約

  • Claude Code: 入力・出力・キャッシュトークン量、5時間枠および7日枠のプラン残量、リセット解除時刻
  • Codex (ChatGPT): 5時間枠・7日枠の残量、コンテキスト使用率(%)、直近実行タスク
  • Antigravity (Gemini): Gemini系およびClaude/GPT系のステップ数、トークン数、自動/手動プラン残量

② リアルタイム秒単位カウントダウン & 週枠ペース判定

リセット解除時刻までの残り時間を 秒単位でリアルタイムにカウントダウン します(ドパガキ安心仕様)。
さらに、1週間の経過時間と消費率のバランスを自動計算し、「⚡ ハイペース注意」「⚡ 適正ペース」「⚡ 安全ペース」 を判定してくれます。
これにより、「まだ週の前半なのに消費ペースが速すぎるぞ」と警告してくれるため、週末に枠切れで泣く事故を防げるかもしれません。

③ 各社API障害ステータス & 90日インシデント履歴

OpenAI、Claude、Google各社の公式稼働ステータスを常時監視します。
障害発生時はサマリーを表すバッジが黄色・赤色に変化し、各サービスの「90日稼働状況バー」(ロックマンの体力ゲージ風)で過去の障害履歴も直感的に確認できます。
これにより、「返事が遅いのは自分のせいじゃなくてClaudeのサーバーが落ちてるからだな」という具合に、原因が即座に切り分けられます。

④ クォータ上限到達時のデスクトップ通知

作業に没頭していても、残枠が0%になった瞬間や、リセットが解除されて再び使えるようになった瞬間にブラウザ通知でお知らせします。
ON/OFFはワンクリックで設定可能です。

⑤ 手触り感を追求したUI(上下並び替えボタン & 9つのテーマ)

各カードブロック(Today's Overview, Codex, Claude, Antigravity, Tasks, History)は、ドラッグ&ドロップだけでなく、「☰ メニュー」内の ▲ / ▼ ボタンでも上下の配置順序を並び替え可能 です。
ノートPCのトラックパッド操作でもストレスなく配置を変えられるようにしました(ドラッグ&ドロップを実装したものの使いづらかったから追加した、という話は内緒)。
また、開発者のテンションを維持するために、Dracula, Cyberpunk 2077, Synthwave '84, Monokai Pro, Nord などのダークテーマから、GitHub Light などのライトテーマまで全9種類のカラーテーマを完備しています。


3. 技術選定のこだわり(あえての単一ファイル・外部依存ゼロ)

今回、Webフレームワーク(FastAPIやFlask等)やReactを使わず、「Python標準ライブラリのみ・単一ファイル(Single-file)」 で実装しました。

「導入障壁」をゼロにしたかった

便利なツールを見つけても、動かすまでに:

  1. リポジトリをクローンする
  2. python -m venv .venv で仮想環境を作る
  3. pip install -r requirements.txt で大量の依存パッケージをインストールする
  4. やっと起動コマンドを叩く

というステップがあると、「ちょっと試したいだけなのに環境を汚したくないな……」と躊躇してしまいます。
標準ライブラリ(http.server 等)縛りにしたことで、「ファイルを落として叩けば1秒で動く」 という手軽さを実現しました。

# Linux / macOS の場合
curl -O https://raw.githubusercontent.com/KazutoMakino/ai-vitals/main/ai_vitals.py
python3 ai_vitals.py
# Windows (PowerShell) の場合
curl.exe -O https://raw.githubusercontent.com/KazutoMakino/ai-vitals/main/ai_vitals.py
python ai_vitals.py

(※WindowsのPowerShellでは、環境によって curl がエイリアスと衝突する場合があるため、curl.exe と叩くのが確実です。会社PCのセキュリティ上curlができない場合は、リポジトリ から直接 ai_vitals.py をダウンロードしてきてお使いいただくことも可能です。)

APIキー・認証情報の非保持

他人のツールにOpenAIやAnthropicのAPIキーを入力するのは誰でも抵抗があります(筆者も嫌です)。
AI Vitalsは各ツールがローカル端末内(~/.codex/sessions~/.claude/projects/ 等)に保存しているセッションメタデータから使用量だけを安全に読み取るため、APIキーを要求・保持することは一切ありません。
待受アドレスも 127.0.0.1(ループバック)にコードレベルで固定しています。


4. 泥臭いトラブルシューティング(現場のリアル)

標準ライブラリだけで組んだ分、マルチOS対応ではしっかり泥臭い罠を踏みました。

罠1: Windowsコマンドプロンプトの文字化け

Windows環境向けにダブルクリックで即起動できるバッチファイル(ai-vitals-bg.bat)を用意したのですが、実行してみるとコンソールの日本語が激しく文字化け(いわゆる「繝舌ャ繧ッ...」状態)。
原因は、Git管理されているバッチファイルがUTF-8であるのに対し、日本語Windowsの cmd.exe の既定コードページがShift-JIS(CP932)だったためです。
バッチファイルの先頭でコードページを明示的にUTF-8へ切り替えることで解決しました。

@echo off
setlocal
rem UTF-8コードページへ切り替えて文字化けを防止
chcp 65001 >nul 2>&1

罠2: Python 3.10 での構文エラーとマトリクスCI

GitHub Actionsで Ubuntu / Windows / macOS × Python 3.10〜3.13 の計12環境でCIを回したところ、Python 3.10環境だけが撃沈。
原因は2点ありました:

  1. from datetime import UTC(Python 3.11以降の新機能)を使っていたため、3.10で ImportError
  2. except ValueError, TypeError: とカンマ区切りで書いていた箇所があり、Python 3で SyntaxError

以下のように timezone.utc へのフォールバックと、タプル括弧 except (ValueError, TypeError): への統一を行い、全12環境でCIグリーンを達成しました。

try:
    from datetime import UTC
except ImportError:
    from datetime import timezone
    UTC = timezone.utc  # Python 3.10互換

5. クイックスタート

リポジトリをクローンすれば、追加インストールなしですぐ動かせます。

git clone https://github.com/KazutoMakino/ai-vitals.git
cd ai-vitals

Linux / macOS の場合

# フォアグラウンド起動
python3 ai_vitals.py

# またはターミナルを即座に戻すバックグラウンド起動
./ai-vitals-bg.sh

Windows の場合

rem 通常起動
py ai_vitals.py

rem バックグラウンド起動(ダブルクリックでもOK)
ai-vitals-bg.bat

起動すると、ブラウザで自動的に http://127.0.0.1:4202 が立ち上がります。
止めたいときは、画面右上の「⏹ 停止」ボタンを押せば安全にシャットダウンできます。


6. おわりに

AIコーディングツールが進化すればするほど、「各ツールの残量や制限をどうやりくりするか」という身も蓋もない運用コストが発生します。
当該ツールにより、そこをいちいち別ターミナルを開いて確認しにいかなくて済むだけでも、地味なモヤモヤが減って開発のテンポを崩されにくくなることを期待しています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?