One command, zero downtime, multiple accounts
Switch between multiple Claude accounts, GLM, and Kimi instantly.
Stop hitting rate limits. Keep working continuously.
Languages: English | TiαΊΏng Viα»t | ζ₯ζ¬θͺ
Before installing CCS, make sure you're logged into Claude CLI with your subscription account:
claude /loginmacOS / Linux / Windows
npm install -g @kaitranntt/ccsAll 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/ccsmacOS / Linux
curl -fsSL ccs.kaitran.ca/install | bashWindows 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.
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"
}
}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" # WindowsSee Troubleshooting Guide for detailed setup instructions.
Windows users: Enable Developer Mode for true symlinks (better performance, instant sync):
- Open Settings β Privacy & Security β For developers
- Enable Developer Mode
- Reinstall CCS:
npm install -g @kaitranntt/ccs
Without Developer Mode: CCS automatically falls back to copying directories (works but no instant sync across profiles).
β οΈ Important: Before using GLM/GLMT or Kimi profiles, update API keys in settings files:
- GLM: Edit
~/.ccs/glm.settings.jsonand add your GLM API key- GLMT: Edit
~/.ccs/glmt.settings.jsonand add your Z.AI API key (requires coding plan)- Kimi: Edit
~/.ccs/kimi.settings.jsonand 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"Developers face multiple subscription scenarios daily:
- Account Separation: Company Claude account vs personal Claude β you must manually switch contexts to keep work and personal separate
- Rate Limits Hit: Claude stops mid-project β you manually edit
~/.claude/settings.json - 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
- Model Choice: Different tasks benefit from different model strengths β manual switching
Manual context switching breaks your workflow. CCS manages it seamlessly.
| 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 |
Settings-based: GLM, GLMT, Kimi, default
- Uses
--settingsflag pointing to config files - GLMT: Embedded proxy for thinking mode support
Account-based: work, personal, team
- Uses
CLAUDE_CONFIG_DIRfor isolated instances - Create with
ccs auth create <profile>
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)
[!] Important: GLMT requires npm installation (
npm install -g @kaitranntt/ccs). Not available in native shell versions (requires Node.js HTTP server).
| 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 |
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
GLMT now supports real-time streaming with incremental reasoning content delivery.
- Default: Streaming enabled (TTFB <500ms)
- Disable: Set
CCS_GLMT_STREAMING=disabledfor buffered mode - Force: Set
CCS_GLMT_STREAMING=forceto override client preferences - Thinking parameter: Claude CLI
thinkingparameter support- Respects
thinking.typeandbudget_tokens - Precedence: CLI parameter > message tags > default
- Respects
Confirmed working: Z.AI (1498 reasoning chunks tested, tool calls verified)
- CCS spawns embedded HTTP proxy on localhost
- Proxy converts Anthropic format β OpenAI format (streaming or buffered)
- Transforms Anthropic tools β OpenAI function calling format
- Forwards to Z.AI with reasoning parameters and tools
- Converts
reasoning_contentβ thinking blocks (incremental or complete) - Converts OpenAI
tool_callsβ Anthropic tool_use blocks - Thinking and tool calls appear in Claude Code UI in real-time
<Thinking:On|Off>- Enable/disable reasoning blocks (default: On)<Effort:Low|Medium|High>- Control reasoning depth (deprecated - Z.AI only supports binary thinking)
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 modeCCS_GLMT_STREAMING=force- Force streaming (override client)
General:
CCS_DEBUG_LOG=1- Enable debug file loggingCCS_CLAUDE_PATH=/path/to/claude- Custom Claude CLI path
# 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"
}
}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)
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)
ccs # Claude subscription (default)
ccs glm # GLM (no thinking)
ccs glmt # GLM with thinking
ccs kimi # Kimi for Coding
ccs --version # Show version# Create accounts
ccs auth create work
ccs auth create personal
# Terminal 1
ccs work "implement feature"
# Terminal 2 (concurrent)
ccs personal "review code"Non-standard installation location:
export CCS_CLAUDE_PATH="/path/to/claude" # Unix
$env:CCS_CLAUDE_PATH = "D:\Tools\Claude\claude.exe" # WindowsAuto-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
Package Managers
npm uninstall -g @kaitranntt/ccs
yarn global remove @kaitranntt/ccs
pnpm remove -g @kaitranntt/ccs
bun remove -g @kaitranntt/ccsOfficial Uninstaller
# macOS / Linux
curl -fsSL ccs.kaitran.ca/uninstall | bash
# Windows
irm ccs.kaitran.ca/uninstall | iex- YAGNI: No features "just in case"
- KISS: Simple bash, no complexity
- DRY: One source of truth (config)
Complete documentation in docs/:
- Installation Guide
- Configuration
- Usage Examples
- System Architecture
- GLMT Control Mechanisms
- Troubleshooting
- Contributing
We welcome contributions! Please see our Contributing Guide for details.
CCS is licensed under the MIT License.
Made with β€οΈ for developers who hit rate limits too often