| name | web-ai-router |
| description | Route explicitly requested, non-sensitive one-off work across user-bound ChatGPT and Gemini web tabs. Use to inspect available web models, apply user provider priority, or choose an eligible model using the public Artificial Analysis leaderboard. Do not use for code changes, tests, cron, bulk work, sensitive data, or to bypass subscription limits. |
Web AI Router
Route normal browser subscriptions without treating them as APIs. This skill works only with tabs the user already opened and bound to OpenCLI; it never creates ChatGPT or Gemini tabs during normal checks.
Setup
Initialize user settings once:
python3 ~/.codex/skills/web-ai-router/scripts/web_ai_router.py init
In Chrome, open each subscribed provider and bind the current tab:
opencli browser web-ai-chatgpt bind
opencli browser web-ai-gemini bind
Then check availability and visible model choices:
python3 ~/.codex/skills/web-ai-router/scripts/web_ai_router.py check --json
Routing
Use plan before an explicitly requested browser task:
python3 ~/.codex/skills/web-ai-router/scripts/web_ai_router.py plan --mode auto --json
python3 ~/.codex/skills/web-ai-router/scripts/web_ai_router.py plan --mode priority --json
priority: select the first available provider in provider_priority.
auto: fetch the public Artificial Analysis models leaderboard through a temporary OpenCLI tab, compare only discovered available models, then rank by Intelligence Index. User provider priority breaks close scores.
- If leaderboard retrieval or model matching fails,
auto falls back to priority and reports why.
Edit ~/.config/web-ai-router/config.json to change provider order, enable/disable providers, or set auto_priority_tolerance.
Safety
Use only for user-requested, one-off, non-sensitive image creation, creative work, drafting, or cross-model review. Do not upload credentials, private files, repository contents, personal/financial/medical/legal data, or run batch, scheduled, retry-heavy, or quota-probing workflows. Subscription limits still apply.
Tab Lifecycle
Provider checks require a bound tab and do not call opencli browser ... open. The Artificial Analysis scraper uses one temporary tab, closes its exact target ID before releasing its lease, and caches results locally. If a tab is accidentally left behind, close it from the browser; do not release its session before calling tab close.