{"id":48459140,"url":"https://github.com/vaskoyudha/CodexCLI-Rotate","last_synced_at":"2026-04-07T01:01:34.531Z","repository":{"id":349190005,"uuid":"1201400647","full_name":"vaskoyudha/CodexCLI-Rotate","owner":"vaskoyudha","description":"Multi-account manager for Codex CLI with automatic rotation on rate limits","archived":false,"fork":false,"pushed_at":"2026-04-04T20:53:50.000Z","size":115,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-05T03:25:34.120Z","etag":null,"topics":["account-manager","bash","cli","codex","codex-cli","multi-account","openai","rate-limit"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vaskoyudha.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["vaskoyudha"]}},"created_at":"2026-04-04T16:19:19.000Z","updated_at":"2026-04-05T02:32:14.000Z","dependencies_parsed_at":"2026-04-04T21:02:06.311Z","dependency_job_id":null,"html_url":"https://github.com/vaskoyudha/CodexCLI-Rotate","commit_stats":null,"previous_names":["vaskoyudha/multipleaccountcodex"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/vaskoyudha/CodexCLI-Rotate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vaskoyudha%2FCodexCLI-Rotate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vaskoyudha%2FCodexCLI-Rotate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vaskoyudha%2FCodexCLI-Rotate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vaskoyudha%2FCodexCLI-Rotate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vaskoyudha","download_url":"https://codeload.github.com/vaskoyudha/CodexCLI-Rotate/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vaskoyudha%2FCodexCLI-Rotate/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31495466,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-06T17:22:55.647Z","status":"ssl_error","status_checked_at":"2026-04-06T17:22:54.741Z","response_time":112,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["account-manager","bash","cli","codex","codex-cli","multi-account","openai","rate-limit"],"created_at":"2026-04-07T01:01:04.411Z","updated_at":"2026-04-07T01:01:34.471Z","avatar_url":"https://github.com/vaskoyudha.png","language":"Shell","funding_links":["https://github.com/sponsors/vaskoyudha"],"categories":[],"sub_categories":[],"readme":"```\n  ___  ___  ___  _____ __  __     ___  ___ _____ _ _____ ___\n / __|/ _ \\|   \\| __\\ \\/ / ___  | _ \\/ _ \\_   _/_\\_   _| __|\n| (__| (_) | |) | _| \u003e  \u003c |___| |   / (_) || |/ _ \\| | | _|\n \\___|\\___/|___/|___/_/\\_\\       |_|_\\\\___/ |_/_/ \\_\\_| |___|\n```\n\n**Multi-account manager for Codex CLI with automatic rotation on rate limits.**\n\n![License](https://img.shields.io/github/license/vaskoyudha/MultipleAccountCodex)\n![NPM Version](https://img.shields.io/npm/v/codex-rotate)\n![GitHub Stars](https://img.shields.io/github/stars/vaskoyudha/MultipleAccountCodex)\n![GitHub Issues](https://img.shields.io/github/issues/vaskoyudha/MultipleAccountCodex)\n![ShellCheck](https://img.shields.io/github/actions/workflow/status/vaskoyudha/MultipleAccountCodex/ci.yml?label=shellcheck)\n\n---\n\n## Table of Contents\n\n- [Demo](#demo)\n- [Why codex-rotate?](#why-codex-rotate)\n- [Features](#features)\n- [Quick Start](#quick-start)\n- [Installation](#installation)\n- [Usage](#usage)\n- [How It Works](#how-it-works)\n- [Configuration](#configuration)\n- [What It Does / Does NOT Do](#what-it-does--does-not-do)\n- [Requirements](#requirements)\n- [Uninstall](#uninstall)\n- [FAQ](#faq)\n- [Contributing](#contributing)\n- [License](#license)\n\n---\n\n## Demo\n\n```bash\n$ codex-rotate add personal\n[INFO] Launching Codex CLI login for 'personal'...\n[OK] Account 'personal' added and credentials stored.\n\n$ codex-rotate add work\n[INFO] Launching Codex CLI login for 'work'...\n[OK] Account 'work' added and credentials stored.\n\n$ codex-rotate list\n  ALIAS        EMAIL                  STATUS   USES  PLAN   LAST USED    COOLDOWN\n  personal *   user@gmail.com         ready    14    plus   2 min ago    —\n  work         work@company.com       ready    3     team   just now     —\n\n$ codex-rotate run exec \"Refactor the auth module to use JWT\"\n[INFO] Running with account 'personal'...\n# ... codex runs normally ...\n# Rate limit detected on stderr!\n[WARN] Rate limit hit on 'personal' — switching to 'work'\n[INFO] Swapped to 'work' (symlink updated atomically)\n[INFO] Retrying command with 'work'...\n# ... codex continues seamlessly ...\n\n$ codex-rotate status\n╔═══════════════════════════════════════════════════════════════════════════════════╗\n║              Codex Account Rotation Manager v1.2.0                               ║\n╠═══════════════════════════════════════════════════════════════════════════════════╣\n║  ACCOUNT     EMAIL                STATUS     USES   PLAN   COOLDOWN   LAST USED  ║\n║  personal    user@gmail.com       cooldown   14     plus   47m left   3 min ago   ║\n║  work *      work@company.com     ready      3      team   —          just now    ║\n╚═══════════════════════════════════════════════════════════════════════════════════╝\n\n$ codex-rotate quota\n━━━ personal ━━━\n  Email:  user@gmail.com\n  Plan:   plus\n  5-Hour Usage:  [████░░░░░░] 40% (resets in 2h 15m)\n  Weekly Usage:  [██░░░░░░░░] 20% (resets in 5d 3h)\n  Credits:  ∞ Unlimited\n\n━━━ work ━━━\n  Email:  work@company.com\n  Plan:   team\n  5-Hour Usage:  [█░░░░░░░░░] 10% (resets in 4h 30m)\n  Weekly Usage:  [░░░░░░░░░░]  0% (resets in 6d 22h)\n  Credits:  ∞ Unlimited\n\n$ codex-rotate email\nALIAS                EMAIL                               PLAN\npersonal             user@gmail.com                      plus\nwork                 work@company.com                    team\n```\n\n---\n\n## Why codex-rotate?\n\n- Hit the rate limit mid-session? **codex-rotate** auto-switches to your next account in milliseconds.\n- Managing multiple Codex accounts? One command to add, switch, and track them all.\n- Exhausted your daily or hourly limits? Automated cooldown management ensures you always use a fresh account.\n- Need high-throughput CLI usage? Transparent wrapper handles retries and rotation without manual intervention.\n\n## Features\n\n- 🔄 **Auto-rotation** — Detects `429`, `usageLimitExceeded`, and other rate-limit signals to instantly swap accounts.\n- 👹 **Background daemon** — `daemon start` monitors Codex logs and quota API in the background. Auto-swaps `auth.json` when rate limits are hit — works with any launcher (omx, codex, codex-rotate run).\n- ⏰ **Time-based rotation** — Optionally rotate accounts every N hours to balance usage across your fleet.\n- 📊 **Real-time quota checking** — Query OpenAI's usage API to see 5-hour and weekly usage with colored progress bars.\n- 📧 **Email \u0026 plan display** — Extract and show email addresses and plan types from account JWT tokens.\n- 🔃 **Token refresh** — Refresh expired access tokens using stored refresh tokens.\n- 🧠 **Quota-aware rotation** — Smart rotation in `auto` mode prefers accounts with the lowest usage percentage.\n- 🔒 **Secure storage** — Credentials stored in `~/.codex-accounts/` with strict `700`/`600` permissions.\n- ⚡ **Atomic switching** — Uses symlink swapping for `~/.codex/auth.json` to ensure zero-downtime transitions.\n- 📈 **Per-account tracking** — Built-in dashboard for usage counts, cooldown timers, and last-used timestamps.\n- 🛡️ **Concurrent-safe** — Robust `flock`-based file locking prevents state corruption during parallel execution.\n- 🩺 **System diagnostics** — `doctor` command checks Bash version, dependencies, permissions, and token health.\n- 🖥️ **Interactive TUI** — Menu-driven interface via `whiptail` or `dialog` — no commands to memorize.\n- 📦 **JSON output** — `--json` flag on `list`, `status`, `quota`, `email` for scripting and automation.\n- 🏷️ **Account groups** — Tag accounts with groups and rotate only within a group (`--group=work`).\n- 🔔 **Notifications** — Desktop notifications and webhooks (Slack, Discord, Telegram) on rotation events.\n- ⬆️ **Self-upgrade** — `upgrade` command checks npm for the latest version and upgrades in-place.\n- 🐚 **Shell completions** — Tab completion for bash, zsh, and fish with dynamic account alias support.\n- 🍺 **Homebrew support** — Install via `brew install codex-rotate` (tap available).\n\n## Quick Start\n\n1. **Install** via npm:\n   ```bash\n   npm install -g codex-rotate\n   ```\n\n2. **Add accounts** (opens browser login):\n   ```bash\n   codex-rotate add account1\n   codex-rotate add account2\n   ```\n\n3. **Run with auto-rotation**:\n   ```bash\n   codex-rotate run exec \"Write a snake game in Python\"\n   ```\n\nThat's it. When `account1` hits the rate limit, `codex-rotate` swaps to `account2` and retries — no manual intervention needed.\n\n## Installation\n\n### npm (Recommended)\n\n```bash\nnpm install -g codex-rotate\n```\n\n### curl one-liner\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/vaskoyudha/MultipleAccountCodex/main/install.sh | bash\n```\n\n### Manual\n\n```bash\ngit clone https://github.com/vaskoyudha/MultipleAccountCodex.git\ncd MultipleAccountCodex\nmake install\n```\n\n### Homebrew\n\n```bash\nbrew tap vaskoyudha/tap\nbrew install codex-rotate\n```\n\n\u003e **Note**: `npm install -g` installs to npm's global prefix (usually `/usr/local/bin`). The curl installer and `make install` install to `~/.local/bin` — make sure it's in your `$PATH`. The installer will detect your shell and tell you the exact line to add if needed. Shell completions are installed automatically with `npm install -g` and `make install`.\n\n## Usage\n\n| Command | Description | Example |\n|---------|-------------|---------|\n| `init` | Initialize structure in `~/.codex-accounts/` | `codex-rotate init` |\n| `add` | Add account via browser login | `codex-rotate add my-acc` |\n| `import` | Import an existing `auth.json` | `codex-rotate import old-acc ./auth.json` |\n| `remove` | Remove an account from rotation | `codex-rotate remove my-acc` |\n| `list` | List accounts with simplified status | `codex-rotate list` or `codex-rotate list --json` |\n| `switch` | Manually switch the active account | `codex-rotate switch my-acc` |\n| `status` | Show detailed dashboard | `codex-rotate status` or `codex-rotate status --json` |\n| `run` | Wrap command with rate-limit rotation | `codex-rotate run exec \"prompt\"` |\n| `auto` | Wrap with time + rate-limit rotation | `codex-rotate auto exec \"prompt\"` |\n| `quota` | Show real-time usage/quota from OpenAI | `codex-rotate quota` or `codex-rotate quota --json` |\n| `email` | Display email and plan from tokens | `codex-rotate email` or `codex-rotate email --json` |\n| `refresh` | Refresh access tokens | `codex-rotate refresh my-acc` or `codex-rotate refresh --all` |\n| `doctor` | Run system diagnostics | `codex-rotate doctor` |\n| `upgrade` | Check for updates and upgrade via npm | `codex-rotate upgrade` |\n| `tui` | Interactive terminal menu | `codex-rotate tui` |\n| `daemon` | Background rate-limit monitor | `codex-rotate daemon start` |\n| `group` | Manage account groups | `codex-rotate group set my-acc work` |\n| `cooldown` | Manually mark account as cooling down | `codex-rotate cooldown my-acc` |\n| `uncooldown` | Clear cooldown status for an account | `codex-rotate uncooldown my-acc` |\n| `help` | Display help information | `codex-rotate help` |\n\n## How It Works\n\n```\n┌─────────────┐     ┌──────────────┐     ┌─────────────┐\n│ codex-rotate │────▶│  codex CLI   │────▶│  OpenAI API │\n│     run      │     │  (wrapped)   │     │             │\n└──────┬───────┘     └──────┬───────┘     └──────┬──────┘\n       │                    │                     │\n       │              stderr monitor              │\n       │                    │                     │\n       │              ┌─────▼──────┐              │\n       │              │ Rate limit │              │\n       │              │ detected?  │              │\n       │              └─────┬──────┘              │\n       │                    │ yes                  │\n       │              ┌─────▼──────┐              │\n       │              │ Swap auth  │              │\n       │              │  symlink   │──────────────┘\n       │              │ (atomic)   │   retry with\n       │              └────────────┘   new account\n       │\n```\n\n1. **Transparent Wrapper** — `codex-rotate run` wraps the official Codex CLI, passing all arguments directly.\n2. **Signal Monitoring** — Monitors `stderr` for rate-limit signals (`429`, `usageLimitExceeded`, `usage limit`, `rate limit`).\n3. **Background Daemon** — `codex-rotate daemon start` watches the Codex TUI log (`~/.codex/log/codex-tui.log`) and polls the quota API every 30s. When rate limits are detected or quota exceeds the threshold, it auto-swaps `auth.json` — no wrapper needed.\n4. **Atomic Swap** — Swaps the `~/.codex/auth.json` symlink to the next available account.\n5. **Auto-Retry** — Retries the command with the new account (up to `MAX_RETRIES`).\n\n## Configuration\n\nSettings are stored in `~/.codex-accounts/config.sh`:\n\n```bash\nROTATION_INTERVAL=10800   # Time-based rotation interval (3 hours)\nHOURLY_COOLDOWN=3600      # Cooldown for hourly rate limit (1 hour)\nDAILY_COOLDOWN=86400      # Cooldown for daily rate limit (24 hours)\nWEEKLY_COOLDOWN=604800    # Cooldown for weekly rate limit (7 days)\nMAX_RETRIES=3             # Max retries after rate limit\nQUOTA_AWARE_ROTATION=0    # Set to 1 for usage-based rotation (auto mode enables this)\nCODEX_BIN=\"\"              # Path to codex binary (auto-detected if empty)\nDAEMON_CHECK_INTERVAL=30  # Seconds between daemon quota/log checks\nDAEMON_QUOTA_THRESHOLD=90 # Usage percent to trigger proactive rotation\nCODEX_LOG_PATH=\"\"         # Path to codex TUI log (auto-detected if empty)\nNOTIFY_DESKTOP=0          # Set to 1 to enable desktop notifications on rotation\nNOTIFY_WEBHOOK_URL=\"\"     # Webhook URL for Slack, Discord, or Telegram\nNOTIFY_WEBHOOK_TYPE=\"\"    # Type: slack, discord, telegram, or generic\n```\n\n## Account Groups\n\nTag accounts into groups and rotate only within a specific group:\n\n```bash\ncodex-rotate group set personal-1 personal\ncodex-rotate group set personal-2 personal\ncodex-rotate group set work-1 work\n\ncodex-rotate group list\n# GROUPS:\n#   personal       personal-1, personal-2\n#   work           work-1\n\ncodex-rotate run --group=work exec \"Refactor the API\"\ncodex-rotate auto --group=personal exec \"Write tests\"\n```\n\n## Background Daemon\n\nThe daemon monitors your Codex usage in the background and automatically rotates accounts when rate limits are hit — no wrapper needed. Works with any launcher: `omx`, `codex`, or `codex-rotate run`.\n\n```bash\n# Start the daemon\ncodex-rotate daemon start\n# [OK] Daemon started (PID: 12345)\n# [INFO] Monitoring codex log and quota API every 30s\n# [INFO] Quota rotation threshold: 90%\n\n# Check status\ncodex-rotate daemon status\n\n# View rotation history\ncodex-rotate daemon logs\n\n# Stop the daemon\ncodex-rotate daemon stop\n```\n\n**How it works:**\n1. **Log watcher** — Tails `~/.codex/log/codex-tui.log` for rate-limit error messages\n2. **Quota poller** — Calls the OpenAI usage API every `DAEMON_CHECK_INTERVAL` seconds\n3. When either detects a rate limit (or quota ≥ `DAEMON_QUOTA_THRESHOLD`%), it marks the current account on cooldown, swaps `auth.json` to the next available account, and sends a notification\n\n\u003e **Tip**: Add `codex-rotate daemon start` to your shell startup (`.bashrc`/`.zshrc`) for always-on rotation.\n\n## JSON Output\n\nAll display commands support `--json` for scripting and automation:\n\n```bash\ncodex-rotate list --json | jq '.[].alias'\ncodex-rotate quota --json | jq '.[] | select(.five_hour_usage_pct \u003e 80)'\ncodex-rotate status --json | jq '.config'\ncodex-rotate email --json | jq '.[].email'\n```\n\n## Notifications\n\nEnable desktop notifications and/or webhooks to get alerted when rotation happens:\n\n```bash\n# Desktop notifications (Linux: notify-send, macOS: osascript)\n# Set in ~/.codex-accounts/config.sh:\nNOTIFY_DESKTOP=1\n\n# Slack webhook\nNOTIFY_WEBHOOK_URL=\"https://hooks.slack.com/services/T.../B.../xxx\"\nNOTIFY_WEBHOOK_TYPE=\"slack\"\n\n# Discord webhook\nNOTIFY_WEBHOOK_URL=\"https://discord.com/api/webhooks/...\"\nNOTIFY_WEBHOOK_TYPE=\"discord\"\n```\n\n## Interactive TUI\n\nLaunch a menu-driven interface (requires `whiptail` or `dialog`):\n\n```bash\ncodex-rotate tui\n```\n\nNavigate with arrow keys — list accounts, check quota, switch accounts, run diagnostics, all from a single menu.\n\n## Shell Completions\n\nTab completion is installed automatically with `npm install -g` and `make install`. To install manually:\n\n**Bash** — add to `~/.bashrc`:\n```bash\nsource /path/to/codex-rotate/completions/codex-rotate.bash\n```\n\n**Zsh** — add to `~/.zshrc`:\n```bash\nfpath=(/path/to/codex-rotate/completions $fpath)\nautoload -U compinit \u0026\u0026 compinit\n```\n\n**Fish** — copy to completions dir:\n```bash\ncp completions/codex-rotate.fish ~/.config/fish/completions/\n```\n\n## System Diagnostics\n\nRun `doctor` to verify your setup:\n\n```bash\n$ codex-rotate doctor\ncodex-rotate v1.2.0 — System Diagnostics\n──────────────────────────────────────────────────\n\n  Bash version (≥ 4 required)            [✓] v5.1.16\n  jq (JSON processor)                    [✓] jq-1.6\n  curl (HTTP client)                     [✓] curl 7.81.0\n  flock (file locking)                   [✓] available\n  Codex CLI                              [✓] /usr/local/bin/codex\n  Accounts directory                     [✓] ~/.codex-accounts (700)\n  Credentials directory                  [✓] ~/.codex-accounts/credentials (700)\n  Auth symlink                           [✓] → ~/.codex-accounts/credentials/main.json\n  Accounts configured                    [✓] 3 account(s)\n  Active token health                    [✓] valid (expires in 2h 15m)\n\n✓ All systems operational.\n```\n\n## What It Does / Does NOT Do\n\n| ✅ Does | ❌ Does NOT |\n|---------|------------|\n| Manage multiple Codex CLI accounts | Create Codex accounts for you |\n| Auto-rotate on rate limits (429, etc.) | Bypass or circumvent rate limits |\n| Time-based rotation to balance usage | Send your credentials anywhere |\n| Secure credential storage (700/600 perms) | Require internet for local switching |\n| Atomic symlink switching (zero downtime) | Modify Codex CLI internals |\n| Track per-account usage and cooldowns | Work on Windows (Linux/macOS only) |\n\n\u003e **Disclaimer**: This tool manages multiple legitimately-owned Codex CLI accounts. It does not bypass, circumvent, or evade rate limits — it switches between your own accounts when one hits its limit. Please ensure your usage complies with OpenAI's [Terms of Use](https://openai.com/policies/terms-of-use).\n\n## Requirements\n\n- **Bash 4+** — Required for associative arrays. macOS users: `brew install bash`.\n- **jq** — JSON processor for auth files. The installer will auto-install if missing on Linux.\n- **curl** — Required for `quota` and `refresh` commands (usually pre-installed).\n- **flock** — Concurrent-safe file locking (part of `util-linux`). macOS users: `brew install util-linux`.\n- **Codex CLI** — The official OpenAI Codex CLI must be installed.\n\n## Uninstall\n\n### npm\n\n```bash\nnpm uninstall -g codex-rotate\n```\n\n### make\n\n```bash\nmake uninstall\n```\n\n### Manual\n\n```bash\nrm -f ~/.local/bin/codex-rotate\nrm -rf ~/.codex-accounts          # removes all saved accounts and config\n```\n\n\u003e **Warning**: Removing `~/.codex-accounts` deletes all stored credentials and configuration. Back up first if needed.\n\n## FAQ\n\n**Does this work with Codex Teams/Pro/Free?**\nYes. It works with any account type that the Codex CLI supports.\n\n**Is this safe?**\nYes. Credentials are stored in a dedicated directory with `700` permissions, and individual files use `600`. File locking prevents race conditions.\n\n**What happens when all accounts are rate-limited?**\nThe script displays a warning that all accounts are on cooldown and exits with an error. Accounts automatically become available again after their cooldown period expires.\n\n**Does it work on macOS?**\nYes, but macOS requires additional setup. macOS ships with Bash 3.x and does not include `flock`. Install both via Homebrew: `brew install bash util-linux`, then ensure the Homebrew `bash` and `flock` are in your `$PATH`.\n\n**Can I use this with other AI CLI tools?**\nIt's designed for Codex CLI, but the auth.json symlink pattern could be adapted for other tools that use file-based authentication.\n\n**How many accounts can I add?**\nNo hard limit. The tool uses flat files, so performance stays consistent regardless of account count.\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for development setup, testing instructions, and pull request guidelines.\n\n## License\n\n[MIT](LICENSE) © 2025 [vaskoyudha](https://github.com/vaskoyudha)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvaskoyudha%2FCodexCLI-Rotate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvaskoyudha%2FCodexCLI-Rotate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvaskoyudha%2FCodexCLI-Rotate/lists"}