Skip to content
/ ccs Public

Switch between multiple Claude accounts and AI models (GLM, Kimi) instantly. Multi-account support with concurrent sessions + settings-based model switching.

License

Notifications You must be signed in to change notification settings

kaitranntt/ccs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

95 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

CCS - Claude Code Switch

CCS Logo

One command, zero downtime, multiple accounts

Switch between multiple Claude accounts, GLM, and Kimi instantly.
Stop hitting rate limits. Keep working continuously.

License Platform npm PoweredBy

Languages: English | TiαΊΏng Việt | ζ—₯本θͺž


πŸš€ Quick Start

πŸ”‘ Prerequisites

Before installing CCS, make sure you're logged into Claude CLI with your subscription account:

claude /login

Installation

Option 1: npm Package (Recommended)

macOS / Linux / Windows

npm install -g @kaitranntt/ccs

All major package managers are supported:

# yarn
yarn global add @kaitranntt/ccs

# pnpm (70% less disk space)
pnpm add -g @kaitranntt/ccs

# bun (30x faster)
bun add -g @kaitranntt/ccs

Option 2: Direct Install (Traditional)

macOS / Linux

curl -fsSL ccs.kaitran.ca/install | bash

Windows PowerShell

irm ccs.kaitran.ca/install | iex

πŸ’‘ Performance Tip: Traditional installs bypass Node.js routing for faster startup, but I prioritize npm updates due to easier deployment automation.

Configuration (Auto-created)

CCS automatically creates configuration during installation (via npm postinstall script).

~/.ccs/config.json:

{
  "profiles": {
    "glm": "~/.ccs/glm.settings.json",
    "glmt": "~/.ccs/glmt.settings.json",
    "kimi": "~/.ccs/kimi.settings.json",
    "default": "~/.claude/settings.json"
  }
}

Custom Claude CLI Path

If Claude CLI is installed in a non-standard location (D drive, custom directory), set CCS_CLAUDE_PATH:

export CCS_CLAUDE_PATH="/path/to/claude"              # Unix
$env:CCS_CLAUDE_PATH = "D:\Tools\Claude\claude.exe"   # Windows

See Troubleshooting Guide for detailed setup instructions.

Windows Symlink Support (Developer Mode)

Windows users: Enable Developer Mode for true symlinks (better performance, instant sync):

  1. Open Settings β†’ Privacy & Security β†’ For developers
  2. Enable Developer Mode
  3. Reinstall CCS: npm install -g @kaitranntt/ccs

Without Developer Mode: CCS automatically falls back to copying directories (works but no instant sync across profiles).


Your First Switch

⚠️ Important: Before using GLM/GLMT or Kimi profiles, update API keys in settings files:

  • GLM: Edit ~/.ccs/glm.settings.json and add your GLM API key
  • GLMT: Edit ~/.ccs/glmt.settings.json and add your Z.AI API key (requires coding plan)
  • Kimi: Edit ~/.ccs/kimi.settings.json and add your Kimi API key
# Default Claude subscription
ccs "Plan microservices architecture"

# Switch to GLM (cost-optimized)
ccs glm "Create REST API"

# GLM with thinking mode
ccs glmt "Solve algorithmic problem"

# Kimi for coding
ccs kimi "Write integration tests"

The Daily Developer Pain Point

Developers face multiple subscription scenarios daily:

  1. Account Separation: Company Claude account vs personal Claude β†’ you must manually switch contexts to keep work and personal separate
  2. Rate Limits Hit: Claude stops mid-project β†’ you manually edit ~/.claude/settings.json
  3. Cost Management: 2-3 Pro subscriptions ($20/month each) vs Claude Max at 5x cost ($100/month) β†’ Pro tier is the practical ceiling for most developers
  4. Model Choice: Different tasks benefit from different model strengths β†’ manual switching

Manual context switching breaks your workflow. CCS manages it seamlessly.

Why CCS Instead of Manual Switching?

Feature Benefit
Account Isolation Keep work separate from personal
Cost Optimization 2-3 Pro accounts vs Max at 5x cost
Instant Switching One command, no file editing
Zero Downtime Never interrupt workflow
Rate Limit Management Switch accounts when limits hit
Cross-Platform macOS, Linux, Windows

Architecture

Profile Types

Settings-based: GLM, GLMT, Kimi, default

  • Uses --settings flag pointing to config files
  • GLMT: Embedded proxy for thinking mode support

Account-based: work, personal, team

  • Uses CLAUDE_CONFIG_DIR for isolated instances
  • Create with ccs auth create <profile>

Shared Data (v3.1)

Commands and skills symlinked from ~/.ccs/shared/ - no duplication across profiles.

~/.ccs/
β”œβ”€β”€ shared/                  # Shared across all profiles
β”‚   β”œβ”€β”€ agents/
β”‚   β”œβ”€β”€ commands/
β”‚   └── skills/
β”œβ”€β”€ instances/               # Profile-specific data
β”‚   └── work/
β”‚       β”œβ”€β”€ agents@ β†’ shared/agents/
β”‚       β”œβ”€β”€ commands@ β†’ shared/commands/
β”‚       β”œβ”€β”€ skills@ β†’ shared/skills/
β”‚       β”œβ”€β”€ settings.json    # API keys, credentials
β”‚       └── sessions/        # Conversation history
β”‚       └── ...

Shared: commands/, skills/, agents/ Profile-specific: settings.json, sessions/, todolists/, logs/

[i] Windows: Copies dirs if symlinks unavailable (enable Developer Mode for true symlinks)


GLM with Thinking (GLMT)

[!] Important: GLMT requires npm installation (npm install -g @kaitranntt/ccs). Not available in native shell versions (requires Node.js HTTP server).

GLM vs GLMT

Feature GLM (ccs glm) GLMT (ccs glmt)
Endpoint Anthropic-compatible OpenAI-compatible
Thinking No Yes (reasoning_content)
Tool Support Basic Full (v3.5+)
MCP Tools Limited Working (v3.5+)
Streaming Yes Yes (v3.4+)
TTFB <500ms <500ms (streaming), 2-10s (buffered)
Use Case Fast responses Complex reasoning + tools

Tool Support (v3.5)

GLMT now fully supports MCP tools and function calling:

  • Bidirectional Transformation: Anthropic tools ↔ OpenAI function calling
  • MCP Integration: MCP tools execute correctly (no XML tag output)
  • Streaming Tool Calls: Real-time tool calls with input_json deltas
  • Backward Compatible: Works seamlessly with existing thinking support
  • No Configuration: Tool support works automatically

Streaming Support (v3.4)

GLMT now supports real-time streaming with incremental reasoning content delivery.

  • Default: Streaming enabled (TTFB <500ms)
  • Disable: Set CCS_GLMT_STREAMING=disabled for buffered mode
  • Force: Set CCS_GLMT_STREAMING=force to override client preferences
  • Thinking parameter: Claude CLI thinking parameter support
    • Respects thinking.type and budget_tokens
    • Precedence: CLI parameter > message tags > default

Confirmed working: Z.AI (1498 reasoning chunks tested, tool calls verified)

How It Works

  1. CCS spawns embedded HTTP proxy on localhost
  2. Proxy converts Anthropic format β†’ OpenAI format (streaming or buffered)
  3. Transforms Anthropic tools β†’ OpenAI function calling format
  4. Forwards to Z.AI with reasoning parameters and tools
  5. Converts reasoning_content β†’ thinking blocks (incremental or complete)
  6. Converts OpenAI tool_calls β†’ Anthropic tool_use blocks
  7. Thinking and tool calls appear in Claude Code UI in real-time

Control Tags

  • <Thinking:On|Off> - Enable/disable reasoning blocks (default: On)
  • <Effort:Low|Medium|High> - Control reasoning depth (deprecated - Z.AI only supports binary thinking)

Environment Variables

GLMT-specific:

  • CCS_GLMT_FORCE_ENGLISH=true - Force English output (default: true)
  • CCS_GLMT_THINKING_BUDGET=8192 - Control thinking on/off based on task type
    • 0 or "unlimited": Always enable thinking
    • 1-2048: Disable thinking (fast execution)
    • 2049-8192: Enable for reasoning tasks only (default)
    • 8192: Always enable thinking

  • CCS_GLMT_STREAMING=disabled - Force buffered mode
  • CCS_GLMT_STREAMING=force - Force streaming (override client)

General:

  • CCS_DEBUG_LOG=1 - Enable debug file logging
  • CCS_CLAUDE_PATH=/path/to/claude - Custom Claude CLI path

API Key Setup

# Edit GLMT settings
nano ~/.ccs/glmt.settings.json

# Set Z.AI API key (requires coding plan)
{
  "env": {
    "ANTHROPIC_AUTH_TOKEN": "your-z-ai-api-key"
  }
}

Security Limits

DoS protection (v3.4):

  • SSE buffer: 1MB max per event
  • Content buffer: 10MB max per block (thinking/text)
  • Content blocks: 100 max per message
  • Request timeout: 120s (both streaming and buffered)

Debugging

Enable verbose logging:

ccs glmt --verbose "your prompt"

Enable debug file logging:

export CCS_DEBUG_LOG=1
ccs glmt --verbose "your prompt"
# Logs: ~/.ccs/logs/

Check streaming mode:

# Disable streaming for debugging
CCS_GLMT_STREAMING=disabled ccs glmt "test"

Check reasoning content:

cat ~/.ccs/logs/*response-openai.json | jq '.choices[0].message.reasoning_content'

If absent: Z.AI API issue (verify key, account status) If present: Transformation issue (check response-anthropic.json)


Usage Examples

Basic Switching

ccs              # Claude subscription (default)
ccs glm          # GLM (no thinking)
ccs glmt         # GLM with thinking
ccs kimi         # Kimi for Coding
ccs --version    # Show version

Multi-Account Setup

# Create accounts
ccs auth create work
ccs auth create personal

# Terminal 1
ccs work "implement feature"

# Terminal 2 (concurrent)
ccs personal "review code"

Custom Claude CLI Path

Non-standard installation location:

export CCS_CLAUDE_PATH="/path/to/claude"              # Unix
$env:CCS_CLAUDE_PATH = "D:\Tools\Claude\claude.exe"   # Windows

See Troubleshooting Guide


Configuration

Auto-created during installation via npm postinstall script.

~/.ccs/config.json:

{
  "profiles": {
    "glm": "~/.ccs/glm.settings.json",
    "glmt": "~/.ccs/glmt.settings.json",
    "kimi": "~/.ccs/kimi.settings.json",
    "default": "~/.claude/settings.json"
  }
}

Complete guide: docs/en/configuration.md


Uninstall

Package Managers

npm uninstall -g @kaitranntt/ccs
yarn global remove @kaitranntt/ccs
pnpm remove -g @kaitranntt/ccs
bun remove -g @kaitranntt/ccs

Official Uninstaller

# macOS / Linux
curl -fsSL ccs.kaitran.ca/uninstall | bash

# Windows
irm ccs.kaitran.ca/uninstall | iex

🎯 Philosophy

  • YAGNI: No features "just in case"
  • KISS: Simple bash, no complexity
  • DRY: One source of truth (config)

πŸ“– Documentation

Complete documentation in docs/:


🀝 Contributing

We welcome contributions! Please see our Contributing Guide for details.


πŸ“„ License

CCS is licensed under the MIT License.


Made with ❀️ for developers who hit rate limits too often

⭐ Star this repo | πŸ› Report issues | πŸ“– Read docs