AI Rush Hour

August 17, 2026 · View on GitHub

Chrome extension (Manifest V3) that visually shows whether the current time falls inside a peak ("rush") window of AI model usage. Evaluation is done exclusively in UTC — the browser's local timezone is never used.

  • Red icon and badge (RUSH) during rush hours — steady, never blinking.
  • Green/yellow blinking icon in the 30 minutes right before a rush window starts.
  • Green icon and badge (OK) the rest of the time.
  • Updates automatically every minute, and immediately when settings are saved.

Presets

PresetWindows (UTC)
Chinese (default)01:00–04:00 and 06:00–10:00
American13:00–19:00
CustomIntervals you define, in UTC

Interval rules: [start, end) (start inclusive, end exclusive), HH:MM format, with support for intervals crossing midnight (e.g. 22:00–02:00). An interval whose start equals its end is invalid.

Warning window

The blinking state is derived, not configurable: whenever the next rush window starts in 30 minutes or less, the icon alternates between green and yellow (700 ms). It applies to every preset and to custom intervals alike, and wraps across midnight — at 23:45 UTC with a window opening at 00:10 UTC, the icon is already blinking. Invalid intervals are skipped, so they never trigger a warning.

Once the window opens, blinking stops and the icon goes solid red.

Manual installation

  1. Open chrome://extensions in Chrome.
  2. Enable Developer mode (top right corner).
  3. Click Load unpacked and select the ai-rush-hour folder.
  4. The extension shows up in the toolbar with the Chinese preset active by default.

Usage

  1. Click the extension icon to open the popup.
  2. Check the current state ("In rush hours" / "Outside rush hours") and the UTC time.
  3. Pick a preset, or select Custom to add your own HH:MM–HH:MM intervals.
  4. Click Save. The indicator updates immediately.

Structure

ai-rush-hour/
├── manifest.json      # MV3, storage + alarms permissions
├── background.js      # Service worker: UTC evaluation, alarms, icon/badge
├── popup.html         # Settings UI
├── popup.js           # Popup logic: load/save, validation
├── styles.css         # Popup styles
├── test-rush.mjs      # Self-check for the UTC window logic (`node test-rush.mjs`)
└── icons/             # Locally generated PNG icons (green/yellow/red)

Privacy

No backend, no network, no external dependencies. Settings live in chrome.storage.sync (synced across your signed-in browsers if Chrome sync is enabled).