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
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:
- Lưu nhiều tài khoản Claude Code — credential được bảo mật trong OS keychain
- Chuyển đổi 1 click — không cần
claude auth loginlại - Mở VSCode isolated sessions — mỗi account một cửa sổ VSCode riêng biệt, chạy song song
- Theo dõi usage real-time — biết account nào còn quota, account nào gần limit
- 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:
| Platform | File |
|---|---|
| macOS (Apple Silicon) | CMAS_x.x.x_aarch64.dmg |
| macOS (Intel) | CMAS_x.x.x_x64.dmg |
| Windows | CMAS_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:
- Mở terminal, chạy
claude auth loginvới tài khoản mới - Quay lại CMAS, nhấn ”+ Add Account”
- 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:
| Layer | Stack |
|---|---|
| Frontend | Vue 3 + TypeScript + Tailwind CSS 4 |
| State management | Pinia |
| i18n | vue-i18n (English, Vietnamese) |
| Backend / Runtime | Rust + Tauri 2 |
| Credential storage | OS Keychain (native) |
| Data persistence | JSON 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ông | CMAS | |
|---|---|---|
| Switch account | claude auth login → OAuth → 30-60s | 1 click → < 1s |
| Chạy song song | Không thể | VSCode isolated sessions |
| Biết quota | Bị rate limit mới biết | Dashboard real-time |
| Token hết hạn | Login lại thủ công | Tự refresh mỗi 5 phút |
| Bảo mật | Tuỳ cách bạn lưu | OS 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!
cat comments.log