Why use multiple accounts
- Higher combined quota: Premium model limits are per-account. With two accounts, you effectively double available premium requests before throttling kicks in.
- Automatic failover: If one account runs out of premium quota mid-session, the proxy switches to the next account automatically without interrupting your workflow.
- Load distribution: Free-model requests can be spread across accounts using round-robin or affinity routing.
Adding accounts
Add the first account
Run the For a business or enterprise plan, pass the
auth command (or auth add) and follow the GitHub device code flow in your browser:--account-type flag:Add additional accounts
Run Repeat as many times as needed. All accounts are stored in the data directory.
auth add again for each additional account. Each run opens a new device code flow so you can log in with a different GitHub account:Adding accounts in Docker
The Docker image runs thestart command by default. To run auth subcommands inside the container, prefix them with --auth:
Removing accounts
Useauth rm with either the account ID (GitHub username) or its 1-based index as shown by auth ls:
How request routing works
Premium models
Requests to premium models are tried against accounts in the order they were added. When an account’s quota is exhausted, the proxy automatically switches to the next account in the list. This continues until either a request succeeds or all accounts are exhausted.Free models
By default (accountAffinity: true), free-model requests from the same session are routed to the last account that handled them successfully. This keeps session context consistent.
When accountAffinity is set to false in config.json, free-model requests are distributed round-robin across all accounts.
Session affinity
WithaccountAffinity: true (the default), the proxy binds a session-and-model pair to the account that last responded successfully. Subsequent requests from the same session for the same model go to that account unless it fails, at which point the proxy picks the next available account and updates the binding.
You can control how long affinity bindings are retained with sessionAffinityRetentionDays (default: 7):
Viewing per-account usage
The/usage endpoint returns a snapshot of all loaded accounts. The /usage/:accountIndex endpoint returns detailed quota information for a specific account (index is 0-based):
If you start the server with
--github-token, a temporary account is included as index 0 in /usage (displayed as "(temporary)"). In that case, your registered accounts start at index 1. The auth rm command, by contrast, uses 1-based indexing as shown by auth ls.