claude-swap — Переключатель аккаунтов Claude Code
📂 Исходный код на GitHubMulti-account switcher for Claude Code с автоматическим переключением перед лимитами, дашбордом использования и параллельными сессиями
При работе с Claude Code возникает проблема: лимиты на один аккаунт быстро заканчиваются, а ручное переключение между аккаунтами утомляет. claude-swap решает эту задачу — он автоматически переключает аккаунты перед достижением лимита, показывает дашборд использования и позволяет запускать несколько аккаунтов параллельно в разных терминалах.
Инструмент написан на Python, работает через CLI, а также предоставляет TUI-дашборд и опциональное меню для macOS. Установка — одна команда через uv или pipx.
Установка и начало работы
# Рекомендуемый способ
uv tool install claude-swap
# Или через pipx
pipx install claude-swap
После установки залогиньтесь в Claude Code с первым аккаунтом и выполните:
cswap add
Затем повторите для каждого дополнительного аккаунта — залогиньтесь в Claude Code другим аккаунтом и снова cswap add. Важно: не делайте /logout перед переключением — текущий Claude Code может отозвать refresh token.
Основные команды
| Команда | Описание |
|---|---|
cswap add |
Добавить текущий аккаунт |
cswap switch |
Переключиться на следующий аккаунт |
cswap switch 2 |
Переключиться на конкретный аккаунт |
cswap list |
Дашборд со всеми аккаунтами и статусом |
cswap status |
Текущий активный аккаунт |
cswap run 2 |
Запустить Claude Code как аккаунт 2 в текущем терминале |
cswap auto |
Автоматическое переключение при приближении к лимиту |
Переключение работает по номеру, email или алиасу:
cswap switch 2
cswap switch user@example.com
cswap alias 2 dev
cswap switch dev
Автоматическое переключение
claude-swap может следить за использованием и переключать аккаунт автоматически, когда использование достигает порога (по умолчанию 90% от лимита):
cswap auto # фоновый цикл, проверка каждые 60 секунд
cswap auto --threshold 80 # переключаться раньше
cswap auto --once # однократная проверка (для cron)
cswap auto --strategy best # выбрать аккаунт с максимальным остатком
cswap auto --strategy consume-first # сначала расходовать аккаунт с ранним сбросом
Стратегия best ждёт, пока текущий аккаунт почти исчерпается, и переключает на тот, где больше всего остатка. Стратегия consume-first проактивно использует аккаунт, чей недельный лимит сбрасывается раньше — чтобы полезная квота не пропадала.
Инструмент безопасно работает рядом с Claude Code: переключение использует те же блокировки credential, что и сам Claude Code, поэтому swap никогда не пересекается с обновлением токена. Cooldown (по умолчанию 5 минут) и гистерезис предотвращают ping-pong между аккаунтами на границе порога.
Для cron-расписаний доступен --once с JSON-выводом:
*/5 * * * * cswap auto --once --json >> ~/.cswap-auto.log 2>&1
Параллельные сессии
Режим cswap run запускает Claude Code с конкретным аккаунтом только в текущем терминале — остальные терминалы и VS Code extension продолжают работать с аккаунтом по умолчанию:
cswap run 2 # запустить как аккаунт 2, только здесь
cswap run user@example.com # по email
cswap run 2 -- --resume # передать аргументы в claude
cswap run 2 --share-history # делиться историей чатов
Сессия использует настройки из ~/.claude (settings, CLAUDE.md, skills, MCP servers), но каждый аккаунт хранит свою историю чатов. С --share-history сессии разных аккаунтов видят общую историю.
Привязка аккаунтов к директориям
Можно привязать директорию к аккаунту — тогда cswap run в этой директории автоматически запустит нужный аккаунт:
cswap map 2 ~/work/client-app
cd ~/work/client-app
cswap run # → аккаунт 2
Поддиректории наследуют ближайшую привязанную родительскую директорию.
TUI-дашборд
Запуск cswap (или cswap tui) открывает полноэкранный интерактивный дашборд с живым отображением использования по каждому аккаунту. cswap watch сразу открывает страницу мониторинга. Работает на macOS, Linux и Windows.
Меню для macOS
Опциональное меню в menu bar показывает использование всех аккаунтов и позволяет переключаться кликом:
uv tool install 'claude-swap[menubar]'
cswap menubar
Для запуска в фоне без терминала:
cswap menubar --install-service # запустить сейчас и при каждом входе
cswap menubar --service-status # статус сервиса
cswap menubar --uninstall-service # остановить и удалить
Резервное копирование и миграция
Экспорт и импорт данных аккаунтов между машинами:
cswap export backup.cswap # Все аккаунты
cswap export backup.cswap --account 2 # Один аккаунт
cswap export backup.cswap --full # Полный бэкап (включая ~/.claude.json)
cswap import backup.cswap # Импорт (пропускает существующие)
cswap import backup.cswap --force # Перезаписать существующие
Файл экспорта — обычный JSON, по умолчанию содержит только login каждого аккаунта. Для шифрования можно пропустить через gpg: cswap export - | gpg -c > backup.gpg.
Добавление по токену
Если есть setup-token или API-ключ, можно добавить аккаунт без браузерного логина:
cswap add-token sk-ant-oat01-... # OAuth setup-token
cswap add-token sk-ant-api03-... # managed API key
cswap add-token - --slot 3 # из stdin
Тип токена определяется автоматически. API-ключи не имеют квоты подписки, поэтому usage-стратегии их не пропускают.
Как это работает
- При добавлении аккаунта бэкапит OAuth token и конфиг
- При переключении меняет только account-specific Claude login, сохраняя общее OAuth-состояние (например, MCP server logins)
- Credential хранятся платформо-специфично: macOS Keychain, Linux/Windows — файлы
- Переключение (ручное и автоматическое) использует блокировки credential Claude Code
- Auto-switch обновляет токен целевого аккаунта перед активацией
- Usage обновляется каждые несколько минут; для неактивных аккаунтов — реже
Требования
- Python 3.12+
- Claude Code установлен и залогинен
Лицензия
MIT
Источник: https://github.com/realiti4/claude-swap