---
title: "claude-rotate: Claude Max Account Proxy Guide"
canonical: https://wavect.io/blog/claude-rotate-multi-account-proxy/
language: en
description: "Set up claude-rotate for multiple Claude Max accounts: quota-aware failover, Tailscale security, analytics, limits, costs and safer alternatives."
image: "https://wavect.io/img/blog/headers/header_claude-rotate-multi-account-proxy.png"
---

[**Back**](/blog/overview/)

[![Kevin Riedl](/img/team/kevin.webp)](/team/kevin-riedl/)

[Kevin Riedl](/team/kevin-riedl/) https://linkedin.com/in/wsdt

9 min read · 4 Sep 2026 Last reviewed September 4, 2026

[**Next**](/blog/feynman-open-source-ai-research-agent/)

# claude-rotate: One Proxy for Multiple Claude Max Accounts

TL;DR

claude-rotate is an MIT-licensed, self-hosted proxy for one person who owns multiple paid Claude subscriptions and uses Claude Code on several devices. Clients send requests to one private endpoint; the proxy authenticates each device, injects the active account token, reads Anthropic's five-hour and weekly quota telemetry, and switches accounts when a quota window is exhausted. Its consume-first strategy prefers the usable weekly allowance that resets soonest. The repository reports 101 offline checks and a mocked stress test where 100 concurrent requests caused one switch, not 100. The design is intentionally one process with JSON files, not a database. It also centralizes long-lived bearer credentials, adds an unofficial layer to Claude Code, loses prompt-cache reuse when accounts change, and sits in a terms gray area acknowledged by its maintainer. Use only accounts you own, keep the endpoint private, and choose Anthropic usage credits, API billing, Team or Enterprise for shared or commercial workloads.

**claude-rotate puts one private endpoint in front of several Claude Max or Pro accounts you already own, then moves Claude Code traffic when the active account runs out of usable quota.** It removes the logout, browser login and terminal restart loop across laptops, workstations and personal agent pods. The [open-source claude-rotate repository](https://github.com/doxaras/claude-rotate) is MIT-licensed and deliberately small: one Python proxy process, one configuration file, JSON state and audit logs, with no database.

This is not an unlimited-Claude trick. Every account keeps its Anthropic-enforced limits. The tool only decides which paid account serves the next request. It also concentrates long-lived credentials in one place and automates behavior that Anthropic has not explicitly approved for pooled consumer subscriptions. The repository itself calls that a terms gray area. Read the risk section before copying the setup.

This guide targets the underserved query behind the error message: how to use multiple Claude Max accounts on several Claude Code machines without manual account switching. For product procurement, use our separate [Claude Code vs OpenCode team-cost comparison](/blog/claude-code-vs-opencode-team-cost-2026/). For a gateway that serves a company rather than one owner, start with the [production LLM gateway comparison](/blog/llm-gateway-router-comparison-2026/).

## Quick verdict: when should you use claude-rotate?

| Your situation | Best fit | Why |
| --- | --- | --- |
| One person owns multiple paid Claude accounts and works across several private devices | Consider claude-rotate | One private endpoint removes manual login changes and shows quota across the fleet. |
| One paid account occasionally reaches its limit | Wait, change model, or enable usage credits | A proxy adds security and operational work without adding quota. |
| Several employees or customers need shared capacity | Use Team, Enterprise or metered API access | Consumer credentials are the wrong identity, governance and billing boundary. |
| You need per-user budgets, SSO, audit export or contractual support | Use a production gateway and commercial provider plan | claude-rotate has device analytics, not an enterprise control plane. |

## Why three Claude Max subscriptions can still stop one session

Separate subscriptions do not become one quota pool. Each login has its own allowance and reset clocks. Anthropic's [current Max plan documentation](https://support.claude.com/en/articles/11049741-what-is-the-max-plan) says session usage resets every five hours, while a weekly limit resets at a fixed time assigned to the account. It also says other weekly, monthly, model or feature limits may apply. A busy [AI-agent](/glossary/ai-agents/) fleet can therefore exhaust the account currently logged into every machine while paid allowance remains unused on another account.

Manual rotation works, but it is operationally awkward. You interrupt the task, log out, complete browser OAuth for another account, verify the identity, and repeat on each machine. With remote Macs, CI-like personal jobs and long-running loops, the interruption often costs more attention than the login itself.

## How claude-rotate works

1. Each Claude Code client points `ANTHROPIC_BASE_URL` at the proxy and authenticates with its own internal device key.
2. The proxy replaces that device key with the setup token for the active paid account and forwards the request to Anthropic.
3. It reads the `anthropic-ratelimit-unified-*` headers returned with responses and stores the observed five-hour and weekly utilization.
4. When the active quota is exhausted, one synchronized decision selects the next usable account. A short burst limit waits and retries on the same account instead of wasting a warm cache.
5. The panel rolls audit records up by device, model and account, including an API-price equivalent. That dollar figure is an estimate of comparable API usage, not Anthropic's hidden subscription accounting.

Anthropic officially documents both pieces that make the connection possible. Its [Claude Code authentication guide](https://code.claude.com/docs/en/team) documents `ANTHROPIC_BASE_URL` for a custom endpoint and `claude setup-token` for a long-lived subscription OAuth token used by scripts or CI. It does not document or endorse multi-account pooling. That distinction matters.

## Consume-first rotation protects expiring paid capacity

Round robin looks fair but ignores reset time. Imagine account A has 15% left and resets tonight, while account B has 70% left and resets six days from now. Sending the next request to B can leave A's remaining allowance to expire unused. claude-rotate's default consume-first strategy prefers the usable weekly window that resets soonest. In plain terms, it spends the most perishable capacity first.

The proxy also separates quota exhaustion from a short burst limit. A quota rejection can justify changing accounts. A per-minute 429 with `retry-after` should normally pause and retry on the same account, because rotating would move the burst and discard prompt-cache locality. Thresholds, cooldown and hysteresis reduce account ping-pong before a hard rejection.

## What the 101 checks prove, and what they do not

The repository's test runner currently lists 101 offline checks across rotation logic, analytics, HTTP proxy behavior and stress scenarios. Its published mocked-upstream results include 300 concurrent requests served, 50 parallel SSE streams relayed byte-for-byte, and a quota failure with 100 requests in flight that caused exactly one account switch. A lock serializes the failover decision so the herd does not advance through every account at once.

Those are useful engineering claims because the code and test command are public. They are not a production availability benchmark. The upstream is mocked, the test measures proxy overhead rather than Anthropic latency, and the design supports one process only. Run `python3 tests/run_all.py` on the commit you plan to deploy and review the code that handles authentication, streaming, headers and logs.

## Minimal private setup

```
git clone https://github.com/doxaras/claude-rotate.git
cd claude-rotate
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
./setup.sh
./setup.sh add-account max-1
./setup.sh add-account max-2
./setup.sh add-device macbook
python3 rotator.py
```

Run `claude setup-token` separately for each paid account when the setup script asks for it. Check the repository instructions at the exact commit you install. On each device, use the endpoint and device credential printed by `add-device`:

```
export ANTHROPIC_BASE_URL=http://your-private-host:8484
export CLAUDE_CODE_OAUTH_TOKEN=the-device-key
claude
```

Verify `/rotate/status` before starting valuable work. Then make a small request through each device and confirm that the expected device and account gauges move. Do not expose port 8484 to the public internet.

## Tailscale and credential security checklist

- Bind the proxy to its Tailscale address or to `127.0.0.1` behind Tailscale Serve. Plain HTTP over public or shared networks exposes device keys and prompts.
- Create one device key per machine or pod. That makes a single compromised client revocable without changing every device.
- Treat every setup token as a long-lived bearer credential for its Claude account. Keep token files at mode `0600`, out of backups you do not control and out of Git.
- Restrict access to the live panel. It reveals device names, models, consumption and account state.
- Keep logs only as long as needed. Audit JSON can contain operational metadata even when prompt bodies are not logged.
- Pin a reviewed commit, run the offline suite, monitor upstream changes, and define how you will roll back to direct Claude Code access.

A self-hosted proxy changes the trust path. Your prompts still reach Anthropic, but your proxy host now sees credentials and traffic too. If this layer becomes part of a customer-facing AI product, our [AI product engineering service](/services/artificial-intelligence/) can help design the supported gateway, identity, observability and failure boundaries around it.

## The terms boundary is a product decision, not a footnote

claude-rotate's maintainer states that automated rotation across consumer subscriptions is a gray area and warns against using consumer plans for a shared or commercial service. Anthropic's [Claude Code legal and compliance page](https://code.claude.com/docs/en/legal-and-compliance) points users to the applicable Consumer or Commercial Terms and says third-party integrations are governed separately. Documentation for a custom base URL or setup token is not permission for every routing pattern.

Use only subscriptions you personally own, do not share credentials with other people, and re-read the current terms before deployment. For employees, customer workloads, autonomous round-the-clock production jobs or any system that sells access downstream, use an account type and billing route designed for that purpose. If the interpretation matters to your business, get written confirmation from Anthropic or legal advice rather than relying on this article.

## Safer alternatives when the limit is the real problem

Anthropic's [usage-credit documentation](https://support.claude.com/en/articles/12429409-manage-usage-credits-for-paid-claude-plans) says paid Pro and Max users can continue after included limits at standard API rates when credits are enabled. That is the simplest official overflow path for one user. You can also reduce context, split work into bounded sessions, select a less expensive model where it is sufficient, or wait for the visible reset.

| Option | Operational effort | Best for | Main tradeoff |
| --- | --- | --- | --- |
| Wait or reduce usage | Low | Occasional limits | Work pauses or model quality changes. |
| Usage credits | Low | Unpredictable personal overflow | Variable API-priced spend. |
| claude-rotate | Medium | One owner, several paid accounts and private devices | Terms uncertainty, secrets and proxy operations. |
| Direct API plus production gateway | High | Teams, products and governed automation | Metered cost and platform engineering. |
| Team or Enterprise | Medium | Managed users and organizational controls | Contract, seat and usage economics must be checked. |

## Bottom line

claude-rotate solves a specific personal infrastructure problem well: several accounts you already pay for, several devices you control, and one owner who wants quota-aware failover plus visibility. Consume-first scheduling and serialized failover are more thoughtful than blind round robin, and the public stress suite gives reviewers something concrete to reproduce.

Its sharp edges are equally concrete. The proxy becomes a credential vault, prompt cache does not travel between accounts, one process is a single operational dependency, subscription-cost estimates are not quota truth, and automated consumer-account pooling lacks explicit provider approval. Keep the deployment private and personal. For a business system, buy the supported commercial boundary and engineer the gateway as production infrastructure.

## Frequently Asked Questions

### What is claude-rotate?

claude-rotate is an MIT-licensed self-hosted proxy for one owner with multiple paid Claude subscriptions. Claude Code clients connect to one private endpoint, which selects an account from observed quota telemetry and records per-device usage.

### Does claude-rotate give unlimited Claude Max usage?

No. Every account keeps its Anthropic-enforced session, weekly, model and other applicable limits. The proxy only uses another eligible paid account when one account is no longer usable.

### Can I use claude-rotate for my team or SaaS?

The repository warns not to use consumer subscriptions for a shared or commercial service. Use Team, Enterprise or metered API access with an appropriate production gateway, and verify current provider terms.

### Why use consume-first instead of round robin?

Consume-first prefers usable weekly quota that resets soonest. This reduces the chance that paid allowance expires unused, while cooldown and hysteresis avoid unnecessary switching.

### Is the API-price equivalent the same as Claude Max quota?

No. It estimates what recorded tokens might cost at configured API list prices. Anthropic's subscription quota calculation is a separate provider-side system, so use the returned quota telemetry for routing decisions.

Agent engineering

## Continue through this cluster

Coding agents, MCP, context systems, evaluation and the controls required for dependable automation.

[Start with the cornerstone**Graph Engineering for AI Agents: When Does a Knowledge Graph Pay Off?**](/blog/graph-engineering-ai-agents/)

- [Feynman Review: Is This Open-Source AI Research Agent Ready for Teams?](/blog/feynman-open-source-ai-research-agent/)
- [Obscura Browser Review: Claims, Limits and Production Fit](/blog/obscura-rust-browser-ai-agents/)
- [Claude Code Design System: 4 Parts for On-Brand UI](/blog/claude-code-design-system-files/)
- [ChatGPT Can Now Log In Without Seeing Your Password](/blog/chatgpt-cloud-browser-secure-login/)
- [AI Agent Harness, Explained: The Reliability Layer Around an LLM](/blog/agent-harness-engineering/)

[**Back**](/blog/overview/)

[![Kevin Riedl](/img/team/kevin.webp)](/team/kevin-riedl/)

[Kevin Riedl](/team/kevin-riedl/) https://linkedin.com/in/wsdt

9 min read · 4 Sep 2026 Last reviewed September 4, 2026

[**Next**](/blog/feynman-open-source-ai-research-agent/)

## Structured Data

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ],
      "employee": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "founder": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "legalRepresentative": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "name": "Wavect GmbH",
      "subjectOf": {
        "@id": "https://wavect.io/verified-claims.json#dataset",
        "@type": "Dataset",
        "creator": {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        },
        "description": "A machine-readable registry of quantitative and qualitative claims published by Wavect, with review dates, localized page appearances and public third-party citations where available.",
        "inLanguage": "en",
        "isAccessibleForFree": true,
        "license": "https://creativecommons.org/licenses/by/4.0/",
        "name": "Wavect verified publication claims",
        "url": "https://wavect.io/verified-claims.json"
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/team/kevin-riedl/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Kevin Riedl",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796365",
        "https://www.linkedin.com/in/wsdt",
        "https://github.com/wsdt"
      ],
      "url": "https://wavect.io/team/kevin-riedl/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/team/christof-jori/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Christof Jori",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796367",
        "https://www.linkedin.com/in/jocr77/",
        "https://github.com/jo-chris"
      ],
      "url": "https://wavect.io/team/christof-jori/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/#website",
      "@type": "WebSite",
      "inLanguage": [
        "en",
        "de",
        "es",
        "zh"
      ],
      "name": "Wavect",
      "potentialAction": {
        "@type": "SearchAction",
        "query-input": "required name=search_term_string",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://wavect.io/search/?q={search_term_string}"
        }
      },
      "publisher": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/blog/claude-rotate-multi-account-proxy/#webpage",
      "@type": "WebPage",
      "dateModified": "2026-09-04",
      "inLanguage": "en",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "lastReviewed": "2026-09-04",
      "url": "https://wavect.io/blog/claude-rotate-multi-account-proxy/"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "abstract": "claude-rotate is an MIT-licensed, self-hosted proxy for one person who owns multiple paid Claude subscriptions and uses Claude Code on several devices. Clients send requests to one private endpoint; the proxy authenticates each device, injects the active account token, reads Anthropic's five-hour and weekly quota telemetry, and switches accounts when a quota window is exhausted. Its consume-first strategy prefers the usable weekly allowance that resets soonest. The repository reports 101 offline checks and a mocked stress test where 100 concurrent requests caused one switch, not 100. The design is intentionally one process with JSON files, not a database. It also centralizes long-lived bearer credentials, adds an unofficial layer to Claude Code, loses prompt-cache reuse when accounts change, and sits in a terms gray area acknowledged by its maintainer. Use only accounts you own, keep the endpoint private, and choose Anthropic usage credits, API billing, Team or Enterprise for shared or commercial workloads.",
  "articleBody": " Blog overview/AI and agents/Agent engineering claude-rotate: One Proxy for Multiple Claude Max Accounts TL;DR claude-rotate is an MIT-licensed, self-hosted proxy for one person who owns multiple paid Claude subscriptions and uses Claude Code on several devices. Clients send requests to one private endpoint; the proxy authenticates each device, injects the active account token, reads Anthropic's five-hour and weekly quota telemetry, and switches accounts when a quota window is exhausted. Its consume-first strategy prefers the usable weekly allowance that resets soonest. The repository reports 101 offline checks and a mocked stress test where 100 concurrent requests caused one switch, not 100. The design is intentionally one process with JSON files, not a database. It also centralizes long-lived bearer credentials, adds an unofficial layer to Claude Code, loses prompt-cache reuse when accounts change, and sits in a terms gray area acknowledged by its maintainer. Use only accounts you own, keep the endpoint private, and choose Anthropic usage credits, API billing, Team or Enterprise for shared or commercial workloads. claude-rotate puts one private endpoint in front of several Claude Max or Pro accounts you already own, then moves Claude Code traffic when the active account runs out of usable quota. It removes the logout, browser login and terminal restart loop across laptops, workstations and personal agent pods. The open-source claude-rotate repository is MIT-licensed and deliberately small: one Python proxy process, one configuration file, JSON state and audit logs, with no database. This is not an unlimited-Claude trick. Every account keeps its Anthropic-enforced limits. The tool only decides which paid account serves the next request. It also concentrates long-lived credentials in one place and automates behavior that Anthropic has not explicitly approved for pooled consumer subscriptions. The repository itself calls that a terms gray area. Read the risk section before copying the setup. This guide targets the underserved query behind the error message: how to use multiple Claude Max accounts on several Claude Code machines without manual account switching. For product procurement, use our separate Claude Code vs OpenCode team-cost comparison. For a gateway that serves a company rather than one owner, start with the production LLM gateway comparison. Quick verdict: when should you use claude-rotate? Your situationBest fitWhy One person owns multiple paid Claude accounts and works across several private devicesConsider claude-rotateOne private endpoint removes manual login changes and shows quota across the fleet. One paid account occasionally reaches its limitWait, change model, or enable usage creditsA proxy adds security and operational work without adding quota. Several employees or customers need shared capacityUse Team, Enterprise or metered API accessConsumer credentials are the wrong identity, governance and billing boundary. You need per-user budgets, SSO, audit export or contractual supportUse a production gateway and commercial provider planclaude-rotate has device analytics, not an enterprise control plane. Why three Claude Max subscriptions can still stop one session Separate subscriptions do not become one quota pool. Each login has its own allowance and reset clocks. Anthropic's current Max plan documentation says session usage resets every five hours, while a weekly limit resets at a fixed time assigned to the account. It also says other weekly, monthly, model or feature limits may apply. A busy AI-agent fleet can therefore exhaust the account currently logged into every machine while paid allowance remains unused on another account. Manual rotation works, but it is operationally awkward. You interrupt the task, log out, complete browser OAuth for another account, verify the identity, and repeat on each machine. With remote Macs, CI-like personal jobs and long-running loops, the interruption often costs more attention than the login itself. How claude-rotate works Each Claude Code client points ANTHROPIC_BASE_URL at the proxy and authenticates with its own internal device key. The proxy replaces that device key with the setup token for the active paid account and forwards the request to Anthropic. It reads the anthropic-ratelimit-unified-* headers returned with responses and stores the observed five-hour and weekly utilization. When the active quota is exhausted, one synchronized decision selects the next usable account. A short burst limit waits and retries on the same account instead of wasting a warm cache. The panel rolls audit records up by device, model and account, including an API-price equivalent. That dollar figure is an estimate of comparable API usage, not Anthropic's hidden subscription accounting. Anthropic officially documents both pieces that make the connection possible. Its Claude Code authentication guide documents ANTHROPIC_BASE_URL for a custom endpoint and claude",
  "articleSection": "Engineering",
  "author": {
    "@id": "https://wavect.io/team/kevin-riedl/#person",
    "@type": "Person",
    "name": "Kevin Riedl",
    "sameAs": [
      "https://www.wikidata.org/wiki/Q139796365",
      "https://www.linkedin.com/in/wsdt",
      "https://github.com/wsdt"
    ],
    "url": "https://wavect.io/team/kevin-riedl/"
  },
  "citation": [
    {
      "@type": "WebPage",
      "name": "open-source claude-rotate repository",
      "url": "https://github.com/doxaras/claude-rotate"
    },
    {
      "@type": "WebPage",
      "name": "current Max plan documentation",
      "url": "https://support.claude.com/en/articles/11049741-what-is-the-max-plan"
    },
    {
      "@type": "WebPage",
      "name": "Claude Code authentication guide",
      "url": "https://code.claude.com/docs/en/team"
    },
    {
      "@type": "WebPage",
      "name": "Claude Code legal and compliance page",
      "url": "https://code.claude.com/docs/en/legal-and-compliance"
    },
    {
      "@type": "WebPage",
      "name": "usage-credit documentation",
      "url": "https://support.claude.com/en/articles/12429409-manage-usage-credits-for-paid-claude-plans"
    }
  ],
  "dateModified": "2026-09-04",
  "datePublished": "2026-09-04",
  "description": "claude-rotate is an MIT-licensed, self-hosted proxy for one person who owns multiple paid Claude subscriptions and uses Claude Code on several devices. Clients send requests to one private endpoint; the proxy authenticates each device, injects the active account token, reads Anthropic's five-hour and weekly quota telemetry, and switches accounts when a quota window is exhausted. Its consume-first strategy prefers the usable weekly allowance that resets soonest. The repository reports 101 offline checks and a mocked stress test where 100 concurrent requests caused one switch, not 100. The design is intentionally one process with JSON files, not a database. It also centralizes long-lived bearer credentials, adds an unofficial layer to Claude Code, loses prompt-cache reuse when accounts change, and sits in a terms gray area acknowledged by its maintainer. Use only accounts you own, keep the endpoint private, and choose Anthropic usage credits, API billing, Team or Enterprise for shared or commercial workloads.",
  "headline": "claude-rotate: One Proxy for Multiple Claude Max Accounts",
  "image": "https://wavect.io/img/blog/headers/header_claude-rotate-multi-account-proxy.svg",
  "inLanguage": "en",
  "keywords": "Claude Code, AI Agents",
  "mainEntityOfPage": {
    "@id": "https://wavect.io/blog/claude-rotate-multi-account-proxy/",
    "@type": "WebPage"
  },
  "publisher": {
    "@id": "https://wavect.io/#organization",
    "@type": [
      "Organization",
      "ProfessionalService",
      "LocalBusiness"
    ]
  },
  "url": "https://wavect.io/blog/claude-rotate-multi-account-proxy/",
  "wordCount": 2109
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "item": "https://wavect.io/",
      "name": "Home",
      "position": 1
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/blog/overview/",
      "name": "Blog overview",
      "position": 2
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/blog/topics/ai-agents/",
      "name": "AI and agents",
      "position": 3
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/blog/clusters/agent-engineering/",
      "name": "Agent engineering",
      "position": 4
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/blog/claude-rotate-multi-account-proxy/",
      "name": "claude-rotate: Claude Max Account Proxy Guide",
      "position": 5
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "claude-rotate is an MIT-licensed self-hosted proxy for one owner with multiple paid Claude subscriptions. Claude Code clients connect to one private endpoint, which selects an account from observed quota telemetry and records per-device usage."
      },
      "name": "What is claude-rotate?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "No. Every account keeps its Anthropic-enforced session, weekly, model and other applicable limits. The proxy only uses another eligible paid account when one account is no longer usable."
      },
      "name": "Does claude-rotate give unlimited Claude Max usage?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "The repository warns not to use consumer subscriptions for a shared or commercial service. Use Team, Enterprise or metered API access with an appropriate production gateway, and verify current provider terms."
      },
      "name": "Can I use claude-rotate for my team or SaaS?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Consume-first prefers usable weekly quota that resets soonest. This reduces the chance that paid allowance expires unused, while cooldown and hysteresis avoid unnecessary switching."
      },
      "name": "Why use consume-first instead of round robin?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "No. It estimates what recorded tokens might cost at configured API list prices. Anthropic's subscription quota calculation is a separate provider-side system, so use the returned quota telemetry for routing decisions."
      },
      "name": "Is the API-price equivalent the same as Claude Max quota?"
    }
  ]
}
```
