CMAS: quản lý nhiều tài khoản Claude Code trên một máy — không cần login lại — hoatq.dev

cat blog/.md

CMAS: quản lý nhiều tài khoản Claude Code trên một máy — không cần login lại

date: tags: ai, developer-tools, open-source, productivity

Nếu bạn đang dùng Claude Code hằng ngày, khả năng cao bạn đã từng gặp tình huống này: một tài khoản đang bị rate limit, muốn chuyển sang tài khoản khác nhưng phải claude auth login lại, chờ OAuth, mất flow đang làm dở. Hoặc bạn có tài khoản cá nhân và tài khoản công ty, mỗi lần switch phải logout/login thủ công.

Mình bị vấn đề này quá nhiều lần nên quyết định viết một tool để giải quyết triệt để. Kết quả là CMAS — Claude Multi Account Switcher.

Vấn đề thực tế

Claude Code lưu credential của một tài khoản duy nhất tại một thời điểm trên mỗi máy. Nghĩa là:

  • Chỉ có một account active — muốn đổi phải login lại
  • Không biết account nào đang gần hết quota cho đến khi bị rate limit
  • Không có cách nào chạy hai account song song trên cùng một máy
  • Token hết hạn thì phải login lại thủ công

Với một developer dùng Claude Code 8+ tiếng/ngày với nhiều account, friction này cộng dồn rất nhanh.

CMAS giải quyết gì?

CMAS là một ứng dụng desktop (macOS, Windows, Linux) cho phép:

  1. Lưu nhiều tài khoản Claude Code — credential được bảo mật trong OS keychain
  2. Chuyển đổi 1 click — không cần claude auth login lại
  3. Mở VSCode isolated sessions — mỗi account một cửa sổ VSCode riêng biệt, chạy song song
  4. Theo dõi usage real-time — biết account nào còn quota, account nào gần limit
  5. Tự động refresh token — không bao giờ phải login lại thủ công

Cài đặt

Yêu cầu: Claude CLI đã cài và login ít nhất một tài khoản.

# Cài Claude CLI nếu chưa có
npm install -g @anthropic-ai/claude-code

Tải CMAS từ GitHub Releases:

PlatformFile
macOS (Apple Silicon)CMAS_x.x.x_aarch64.dmg
macOS (Intel)CMAS_x.x.x_x64.dmg
WindowsCMAS_x.x.x_x64-setup.exe
Linux.deb hoặc .AppImage

Cài xong mở lên là dùng được ngay — CMAS tự detect tài khoản Claude Code đang active trên máy.

Workflow sử dụng

Bước 1: Thêm tài khoản

Tài khoản đầu tiên CMAS tự detect từ Claude CLI đang login. Để thêm account khác:

  1. Mở terminal, chạy claude auth login với tài khoản mới
  2. Quay lại CMAS, nhấn ”+ Add Account”
  3. CMAS capture credential và lưu vào keychain

Lặp lại cho mỗi tài khoản bạn muốn thêm. Sau bước này, bạn không cần claude auth login nữa.

Bước 2: Chuyển đổi tài khoản

Nhấn icon switch trên account muốn dùng — CMAS sẽ:

  • Lấy credential từ keychain
  • Set làm account active cho Claude CLI
  • Refresh token nếu sắp hết hạn

Toàn bộ quá trình mất chưa đến 1 giây.

Bước 3: Mở VSCode Isolated Sessions

Đây là tính năng mình thích nhất. Thay vì switch global rồi mở VSCode, bạn có thể:

  • Gán project folder cho mỗi account
  • Nhấn icon VSCode → mở một cửa sổ VSCode hoàn toàn tách biệt
  • Mỗi cửa sổ dùng credential riêng, không ảnh hưởng lẫn nhau

Nghĩa là bạn có thể chạy 2-3 account Claude Code đồng thời, mỗi cái trong một VSCode window riêng, làm việc trên các project khác nhau.

CMAS đạt được điều này bằng 3 lớp isolation:

  • User-data directory riêng cho mỗi VSCode instance
  • HOME environment override
  • Keychain entry tách biệt cho mỗi account

Bước 4: Theo dõi usage

Dashboard hiển thị cho mỗi account:

  • Session quota (cửa sổ 5 giờ) — phần trăm đã dùng + countdown reset
  • Weekly quota — phần trăm đã dùng trong tuần
  • Visual indicators khi account bị rate limit
  • “Best account” suggestion — account nào đang có usage thấp nhất

Tính năng này đặc biệt hữu ích khi bạn đang code tập trung và cần biết nhanh: “nên dùng account nào bây giờ để không bị gián đoạn?”

Bảo mật credential

Mình rất quan tâm đến việc credential không bị lộ. CMAS lưu trữ theo cách sau:

  • OS Keychain: macOS dùng Security framework, Windows dùng Credential Manager, Linux dùng Secret Service
  • Active credential: lưu tại service Claude Code-credentials (đúng format Claude CLI dùng)
  • Backup per-account: lưu tại CMAS-Account-{id} — mỗi account một entry riêng

Không có credential nào lưu dạng plaintext trên disk. Toàn bộ đều đi qua OS-level keychain.

Token lifecycle cũng được xử lý tự động:

  • Access token valid khoảng 8 giờ
  • CMAS check health mỗi 5 phút
  • Khi token sắp hết hạn → tự gọi OAuth refresh endpoint
  • Cập nhật cả backup keychain và active keychain
  • Account luôn ở trạng thái “OK” mà không cần bạn làm gì

Tech stack

Nếu bạn tò mò về cách CMAS được build:

LayerStack
FrontendVue 3 + TypeScript + Tailwind CSS 4
State managementPinia
i18nvue-i18n (English, Vietnamese)
Backend / RuntimeRust + Tauri 2
Credential storageOS Keychain (native)
Data persistenceJSON files tại ~/.claude-switcher/

Mình chọn Tauri thay vì Electron vì bundle size nhỏ hơn rất nhiều (dưới 10MB so với 100MB+ của Electron), performance tốt hơn, và Rust backend cho phép gọi OS APIs một cách an toàn. Vue 3 + Tailwind thì đơn giản là stack mình quen nhất.

Tự build từ source

Nếu bạn muốn contribute hoặc customize:

# Clone repo
git clone https://github.com/boykioyb/CMAS.git
cd CMAS
npm install

# Chạy development mode
npx tauri dev

# Build production
npx tauri build

Yêu cầu:

  • Node.js >= 18
  • Rust >= 1.77.2
  • Tauri CLI
  • Platform-specific dependencies (xem Tauri prerequisites)

Một vài use case thực tế

Developer solo với nhiều project

Bạn có account cá nhân (Pro) và account công ty (Max). Project cá nhân dùng account cá nhân, project công ty dùng account công ty. CMAS cho phép mở hai VSCode windows song song — mỗi cái dùng đúng account của nó.

Team nhỏ share account

Một số team nhỏ có vài account Pro share cho cả nhóm. CMAS giúp mỗi người biết account nào đang còn quota để không conflict nhau.

Tránh rate limit khi coding marathon

Đang debug một vấn đề phức tạp, account chính bị rate limit giữa chừng. Thay vì chờ 30 phút reset, switch sang account khác trong 1 click và tiếp tục ngay.

So sánh với cách thủ công

Thủ côngCMAS
Switch accountclaude auth login → OAuth → 30-60s1 click → < 1s
Chạy song songKhông thểVSCode isolated sessions
Biết quotaBị rate limit mới biếtDashboard real-time
Token hết hạnLogin lại thủ côngTự refresh mỗi 5 phút
Bảo mậtTuỳ cách bạn lưuOS Keychain

Roadmap

Một vài thứ mình đang plan cho các phiên bản tiếp theo:

  • Terminal integration — switch account trực tiếp từ terminal, không cần mở app
  • Team sharing — sync danh sách account trong team (encrypted)
  • Usage analytics — biểu đồ usage theo ngày/tuần, giúp optimize việc dùng quota
  • Cursor/Windsurf support — không chỉ VSCode, mà cả các editor khác dùng Claude

Tổng kết

CMAS sinh ra từ một nhu cầu rất cụ thể: mình cần chuyển đổi nhanh giữa nhiều tài khoản Claude Code mà không mất flow. Từ đó, nó phát triển thêm isolated sessions, usage monitoring, và auto token refresh.

Nếu bạn đang dùng Claude Code với nhiều hơn một tài khoản, hoặc đơn giản là muốn theo dõi quota để không bị rate limit bất ngờ, thử CMAS xem. Nó miễn phí và open-source.

GitHub: github.com/boykioyb/CMAS


Nếu bạn gặp bug hoặc có feature request, tạo issue trên GitHub nhé. Hoặc nếu muốn contribute, PR luôn được welcome!

// reactions


cat comments.log


hoatq@dev : ~/blog $