{"id":32784758,"url":"https://github.com/kaitranntt/ccs","last_synced_at":"2026-06-16T04:01:37.199Z","repository":{"id":321995955,"uuid":"1087885657","full_name":"kaitranntt/ccs","owner":"kaitranntt","description":"Switch between Claude accounts, Gemini, Copilot, OpenRouter (300+ models) via CLIProxyAPI OAuth proxy. Visual dashboard, remote proxy support, WebSearch fallback. Zero-config to production-ready.","archived":false,"fork":false,"pushed_at":"2026-06-15T13:25:08.000Z","size":42318,"stargazers_count":2522,"open_issues_count":34,"forks_count":215,"subscribers_count":11,"default_branch":"main","last_synced_at":"2026-06-15T15:15:45.073Z","etag":null,"topics":["ai-gateway","anthropic-api","claude","claude-code","cli-tool","cliproxyapi","developer-productivity","gemini","github-copilot","multi-account","nodejs","oauth","openrouter","profile-switching","react-dashboard","typescript","websearch"],"latest_commit_sha":null,"homepage":"https://ccs.kaitran.ca/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kaitranntt.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":"kaitranntt","custom":["https://ccs.kaitran.ca/sponsor"]}},"created_at":"2025-11-01T21:01:53.000Z","updated_at":"2026-06-15T11:21:23.000Z","dependencies_parsed_at":"2026-03-11T06:04:50.227Z","dependency_job_id":null,"html_url":"https://github.com/kaitranntt/ccs","commit_stats":null,"previous_names":["kaitranntt/ccs"],"tags_count":874,"template":false,"template_full_name":null,"purl":"pkg:github/kaitranntt/ccs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaitranntt%2Fccs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaitranntt%2Fccs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaitranntt%2Fccs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaitranntt%2Fccs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kaitranntt","download_url":"https://codeload.github.com/kaitranntt/ccs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaitranntt%2Fccs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34390052,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-16T02:00:06.860Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-gateway","anthropic-api","claude","claude-code","cli-tool","cliproxyapi","developer-productivity","gemini","github-copilot","multi-account","nodejs","oauth","openrouter","profile-switching","react-dashboard","typescript","websearch"],"created_at":"2025-11-05T02:01:01.134Z","updated_at":"2026-06-16T04:01:37.194Z","avatar_url":"https://github.com/kaitranntt.png","language":"TypeScript","funding_links":["https://github.com/sponsors/kaitranntt","https://ccs.kaitran.ca/sponsor"],"categories":["*Ops for AI","AI","Frameworks \u0026 Libraries","TypeScript","claude-code"],"sub_categories":["LLMOps","Copilot Extensions \u0026 Alternatives"],"readme":"\u003cdiv align=\"center\"\u003e\n\n# CCS - Claude Code Switch\n\n![CCS Logo](assets/ccs-logo-medium.png)\n\n### The multi-provider profile and runtime manager for Claude Code and compatible CLIs\n\nRun Claude, Codex, Droid-routed profiles, GLM, local models, and\nAnthropic-compatible APIs without config thrash.\n\n[![License](https://img.shields.io/badge/license-MIT-C15F3C?style=for-the-badge)](LICENSE)\n[![npm](https://img.shields.io/npm/v/@kaitranntt/ccs?style=for-the-badge\u0026logo=npm)](https://www.npmjs.com/package/@kaitranntt/ccs)\n[![PoweredBy](https://img.shields.io/badge/PoweredBy-ClaudeKit-C15F3C?style=for-the-badge)](https://claudekit.cc?ref=HMNKXOHN)\n\n**[Website](https://ccs.kaitran.ca)** |\n**[Documentation](https://docs.ccs.kaitran.ca)** |\n**[Product Tour](https://docs.ccs.kaitran.ca/getting-started/product-tour)** |\n**[CLI Reference](https://docs.ccs.kaitran.ca/reference/cli-commands)**\n\n\u003c/div\u003e\n\n\u003e **[Docker]** `ghcr.io/kaitranntt/ccs-dashboard:latest` is deprecated. Use `ghcr.io/kaitranntt/ccs:latest` instead. See [#1251](https://github.com/kaitranntt/ccs/issues/1251) and [docker/README.md](docker/README.md#choosing-an-image) for migration details. To wire a sibling container to CLIProxy, see [Connect your app to CLIProxy](docker/README.md#connect-your-app-to-cliproxy).\n\n\u003c!-- quickstart-snippet-start --\u003e\n## Quick Start (Docker)\n\nWith Docker installed:\n\n```bash\ncurl -fsSL https://ccs.kaitran.ca/docker-compose.yaml -o docker-compose.yaml\ndocker compose up -d\n```\n\nDashboard at http://localhost:3000 · CLIProxy at http://localhost:8317.\n\nNeed a corporate-proxy alternative? Download directly:\n`https://raw.githubusercontent.com/kaitranntt/ccs/main/docker/compose.yaml`\n\u003c!-- quickstart-snippet-end --\u003e\n\n## Install on Host (npm)\n\n```bash\nnpm install -g @kaitranntt/ccs\nccs config\n```\n\nThen launch whatever runtime fits the task:\n\n```bash\nccs\nccs codex\nccs --target droid glm\nccs glm\nccs ollama\n```\n\n## Why CCS\n\nCCS gives you one stable command surface while letting you switch between:\n\n- multiple runtimes such as Claude Code, Factory Droid, and Codex CLI\n- multiple Claude subscriptions and isolated account contexts\n- OAuth providers like Codex, Kiro, Claude, Qwen, Kimi, and more, with legacy\n  Copilot compatibility for existing setups\n- API and local-model profiles like GLM, Kimi, OpenRouter, Ollama, llama.cpp,\n  Novita, and Alibaba Coding Plan\n\nThe goal is simple: stop rewriting config files, stop breaking active sessions,\nand move between providers in seconds.\n\n## OpenAI-Compatible Routing\n\nCCS can now bridge Claude Code into OpenAI-compatible providers through a local\nAnthropic-compatible proxy instead of requiring a native Anthropic upstream.\n\n```bash\nccs api create --preset hf\nccs hf\n```\n\nNeed to manage the proxy manually?\n\n```bash\nccs proxy start hf\neval \"$(ccs proxy activate)\"\n```\n\nThe proxy also supports request-time `profile:model` selectors, scenario-based\nmodel routing through `proxy.routing`, and explicit activation helpers such as\n`ccs proxy activate --fish`.\n\nGuide: [OpenAI-Compatible Provider Routing](./docs/openai-compatible-providers.md)\n\n### Related Project: claude-code-router\n\n[claude-code-router](https://github.com/musistudio/claude-code-router) is an\nexcellent standalone tool for routing Claude Code requests to OpenAI-compatible\nproviders. CCS's local proxy and SSE transformation work was directly informed\nby CCR's transformer architecture.\n\nUse CCR when you want a standalone router without CCS profile management.\nUse CCS when you want the routing flow integrated with CCS profiles, runtime\nbridges, and the existing `ccs` command surface.\n\nNeed the full setup path instead of the short version?\n\n| Need | Start here |\n| --- | --- |\n| Install and verify CCS | [`/getting-started/installation`](https://docs.ccs.kaitran.ca/getting-started/installation) |\n| First successful session | [`/getting-started/first-session`](https://docs.ccs.kaitran.ca/getting-started/first-session) |\n| Visual walkthrough | [`/getting-started/product-tour`](https://docs.ccs.kaitran.ca/getting-started/product-tour) |\n| Provider selection | [`/providers/concepts/overview`](https://docs.ccs.kaitran.ca/providers/concepts/overview) |\n| Full command reference | [`/reference/cli-commands`](https://docs.ccs.kaitran.ca/reference/cli-commands) |\n| Troubleshooting | [`/reference/troubleshooting`](https://docs.ccs.kaitran.ca/reference/troubleshooting) |\n\n## See CCS In Action\n\n### CCS Bar For macOS\n\n![CCS Bar](assets/screenshots/ccs-bar-panel.webp)\n\nCCS Bar puts live subscription quota, daily spend, and account controls in the\nmacOS menu bar. Install it with `ccs bar install`, launch it with `ccs bar`, and\ntell us what would make it more useful: issues and ideas are welcome in\n[GitHub Issues](https://github.com/kaitranntt/ccs/issues).\n\nDeep dive: [CCS Bar](https://docs.ccs.kaitran.ca/features/dashboard/ccs-bar).\n\n### Usage Analytics\n\n![Analytics Dashboard](assets/screenshots/analytics.webp)\n\nTrack usage, costs, and session patterns across profiles. Deep dive:\n[Dashboard Analytics](https://docs.ccs.kaitran.ca/features/dashboard/analytics).\n\n### Live Auth And Health Monitoring\n\n![Live Auth Monitor](assets/screenshots/live-auth-monitor.webp)\n\nSee auth state, account health, and provider readiness without dropping into raw\nconfig. Deep dive:\n[Live Auth Monitor](https://docs.ccs.kaitran.ca/features/dashboard/live-auth-monitor).\n\n### OAuth Provider Control Center\n\n![CLIProxy API](assets/screenshots/cliproxyapi.webp)\n\nManage OAuth-backed providers, quota visibility, and proxy-wide routing from one place. CCS now\nsurfaces round-robin vs fill-first natively in both CLI and dashboard flows instead of hiding that\nchoice inside raw upstream controls. The original CLIProxyAPI backend remains the default; the\ncommunity-maintained CLIProxyAPIPlus fork is opt-in for plus-only providers. When Plus is selected,\nCCS points the embedded management panel at the maintained CPAMC dashboard fork by default.\nDeep dive:\n[CLIProxy API](https://docs.ccs.kaitran.ca/features/proxy/cliproxy-api).\n\n### Managed Tooling And Fallbacks\n\n![WebSearch Fallback](assets/screenshots/websearch.webp)\n\nCCS can provision first-class local tools like WebSearch and image analysis for\nthird-party launches instead of leaving you to wire them by hand. Browser\nautomation now has a first-class setup path as well. Deep dive:\n[WebSearch](https://docs.ccs.kaitran.ca/features/ai/websearch) |\n[Browser Automation](./docs/browser-automation.md).\n\n## Docs Matrix\n\nThe README stays short on purpose. The docs site owns the detailed guides and\nreference material.\n\n| If you want to... | Read this |\n| --- | --- |\n| Understand what CCS is and how the pieces fit together | [Introduction](https://docs.ccs.kaitran.ca/introduction) |\n| Install CCS cleanly on a new machine | [Installation](https://docs.ccs.kaitran.ca/getting-started/installation) |\n| Go from install to a successful first run | [Your First CCS Session](https://docs.ccs.kaitran.ca/getting-started/first-session) |\n| See the dashboard and workflow surfaces before setup | [Product Tour](https://docs.ccs.kaitran.ca/getting-started/product-tour) |\n| Install the native macOS menu-bar companion | [CCS Bar](https://docs.ccs.kaitran.ca/features/dashboard/ccs-bar) |\n| Compare OAuth providers, Claude accounts, and API profiles | [Provider Overview](https://docs.ccs.kaitran.ca/providers/concepts/overview) |\n| Learn the dashboard structure and feature pages | [Dashboard Overview](https://docs.ccs.kaitran.ca/features/dashboard/overview) |\n| Configure profiles, paths, and environment variables | [Configuration](https://docs.ccs.kaitran.ca/getting-started/configuration) |\n| Understand browser attach vs Codex browser tooling | [Browser Automation](./docs/browser-automation.md) |\n| Keep OpenCode aligned with your live CCS setup | [OpenCode Sync Plugin](https://docs.ccs.kaitran.ca/features/workflow/opencode-sync) |\n| Browse every command and flag | [CLI Commands](https://docs.ccs.kaitran.ca/reference/cli-commands) |\n| Recover from install, auth, or provider failures | [Troubleshooting](https://docs.ccs.kaitran.ca/reference/troubleshooting) |\n| Understand storage, config, and architecture details | [Reference](https://docs.ccs.kaitran.ca/reference/architecture) |\n\n## Example Workflow\n\n```bash\n# Design with default Claude\nccs \"design the auth flow\"\n\n# Implement with a different provider\nccs codex \"implement the user service\"\n\n# Use a cheaper API profile for routine work\nccs glm \"clean up tests and docs\"\n\n# Run a local model when you need privacy or offline access\nccs ollama \"summarize these logs\"\n```\n\n## Community Projects\n\n| Project | Author | Description |\n| --- | --- | --- |\n| [opencode-ccs-sync](https://github.com/JasonLandbridge/opencode-ccs-sync) | [@JasonLandbridge](https://github.com/JasonLandbridge) | Auto-sync CCS providers into OpenCode |\n\n## Contribute And Report Safely\n\n- Contributing guide: [CONTRIBUTING.md](./CONTRIBUTING.md)\n- Daily local gate: `bun run format \u0026\u0026 bun run lint:fix \u0026\u0026 bun run validate` (`validate` is the fast path only)\n- Before review or merge confidence: `bun run validate:ci-parity`\n- If PR checks stay queued for more than 10 minutes, assume the self-hosted runner is offline and notify a maintainer instead of retrying blindly\n- Starter work:\n  [good first issue](https://github.com/kaitranntt/ccs/labels/good%20first%20issue),\n  [help wanted](https://github.com/kaitranntt/ccs/labels/help%20wanted)\n- Questions: [open a question issue](https://github.com/kaitranntt/ccs/issues/new/choose)\n- Security reports: [SECURITY.md](./SECURITY.md) and the\n  [private advisory form](https://github.com/kaitranntt/ccs/security/advisories/new)\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=kaitranntt/ccs\u0026type=date\u0026legend=top-left)](https://www.star-history.com/#kaitranntt/ccs\u0026type=date\u0026legend=top-left)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaitranntt%2Fccs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkaitranntt%2Fccs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaitranntt%2Fccs/lists"}