尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗https://ratelimit.world — Claude Code と Codex の 5時間枠を、リセットの瞬間から使い切るためのウェブサービス。
A Duolingo-style tracker for AI coding rate limits: it pings your phone the moment a 5-hour window resets, and turns maxing out every window into streaks, XP, leagues and daily quests.
Cloudflare Workers + D1 (SQLite) · Web Push (RFC 8291 / VAPID を WebCrypto で実装) · GitHub OAuth · シェアカードは SVG を resvg-wasm で PNG に · 依存なしの Node.js CLI (Claude Code の hooks と Codex の notify から呼ばれる) · フレームワークなしの HTML/CSS/JS
5時間枠は「リセット後に最初に使った時刻」から数え直されます。3:00 にリセットされても 3:30 に再開すれば、次のリセットは 8:30 になる。この出遅れは1日のあいだ積み重なっていきます。ratelimit.world はリセットの瞬間にスマホへ通知し、使い切った回数をストリーク(Duolingo 方式)で記録します。
~/.claude.json の oauthAccount.organizationType / organizationRateLimitTier と、Codex のログの rate_limits.plan_type から読む。両方使う人は両方のリーグに、そのツールの枠だけで出る。quotaLimits.rateLimitType: seven_day*)や Codex(10080分枠)の週間リミットを使い切ると 🏆 +1000 XP と「週間制覇」。リセットまでの日は5時間枠を使えないので、ストリークを自動で守る(フリーズは使わない)。/welcome): コマンドを貼る → 連携した瞬間に過去60日の記録(使い切った枠・平均の出遅れ・取りこぼした時間)を見せる → 「ふだんの1日」を目安に目標を自分で選ぶ → 通知を ON。日本語と英語に対応。文言はすべて worker/src/i18n.js にあり、ページ下部の切り替え(cookie)→ ユーザーに保存した言語 → ブラウザの言語設定の順で決まる。スマホ通知は保存した言語で送る。CLI は RATELIMIT_WORLD_LANG → サイトで選んだ言語 → LANG / OS の設定で決まる。
[PC] Claude Code / Codex
│ hooks (UserPromptSubmit / Stop / StopFailure=rate_limit)と Codex の notify
▼
cli/ratelimit-world.mjs ── ローカルログから「到達・リセット・再開の時刻」だけを送る
│
▼
[Cloudflare Worker + D1] worker/
├ 記録・ストリーク・フリーズ・XP・リーグ
├ 毎分の Cron: リセット通知 / 10分出遅れ通知 / ピンチ通知
└ Web Push (VAPID) → スマホ (PWA)
| ディレクトリ | 中身 |
|---|---|
cli/ | 依存なしの Node CLI。setup / sync / status / scan / uninstall |
worker/src/logic.js | 集計(0時区切り・ストリーク・フリーズ・出遅れ・XP)と通知の文面 |
worker/src/webpush.js | WebCrypto だけで書いた Web Push(RFC 8291 / 8292) |
worker/src/index.js | API・GitHub ログイン・CLI のデバイスログイン・Cron |
worker/src/pages.js | サーバーで組み立てる HTML(LP・ダッシュボード・設定・プロフィール・シェアカード) |
worker/public/ | CSS・クライアント JS・Service Worker・manifest・アイコン |
~/.claude/projects/**/*.jsonl:error: "rate_limit" の合成メッセージ。新しい版の quotaLimits.resetsAt(rateLimitType: "five_hour")を優先し、なければ本文の resets 5:20pm (Australia/Melbourne) を読む。週次リミットは数えない。~/.codex/sessions/**/*.jsonl:token_count の rate_limits.primary(window_minutes: 300)。used_percent >= 100 を到達として数える。使用率(%)は表示しない(使っていないときは古い数字になるため)。task_started(Codex)。cd worker
npm install
npm run db:local # D1 (ローカル) にテーブルを作る
{ echo DEV_LOGIN=1; npm run -s vapid; } > .dev.vars
npm run dev # http://localhost:8787 (GitHub なしで /login から名前だけでログイン)
npm test # 集計ロジックと Web Push の暗号化のテスト
CLI をローカルのサーバーにつなぐ: node cli/ratelimit-world.mjs setup --server http://localhost:8787
(実行すると ~/.claude/settings.json と ~/.codex/config.toml に hooks / notify を登録します。元のファイルは *.ratelimit-world.bak に保存されます)
npx wrangler loginnpx wrangler d1 create ratelimit-world → 表示された database_id を wrangler.toml に書くnpm run db:remotehttps://ratelimit.worldhttps://ratelimit.world/auth/github/callbacknpm run -s vapid # 出力された 2つの値を使う
npx wrangler secret put GITHUB_CLIENT_ID
npx wrangler secret put GITHUB_CLIENT_SECRET
npx wrangler secret put VAPID_PUBLIC_KEY
npx wrangler secret put VAPID_PRIVATE_KEY
npm run deployratelimit.world を Cloudflare に追加し、Worker の Custom Domain に設定する