Bundle
dsh-cc-switch
Sync cc-switch provider profiles (Claude Code / Codex relays) into DeepSeek Harness as llm-pi-ai routes, credentials stored via the DSH credential seam.
- Source
- LKRCharon
- stars
- 2 stars
- License
- MIT
- Updated
- Updated 17 hours ago
Readme
# dsh-cc-switch
[cc-switch](https://github.com/farion1231/cc-switch) providers inside [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness).
把 cc-switch 里管理的 Claude Code / Codex 中转商配置一键同步成 DSH 模型路由。**不需要任何已配置的模型**——这正是它存在的理由:给一个还没有模型的 DSH 实例导入你已有的全部供应商。
Sync your cc-switch provider profiles into DSH model routes. **Works with zero models configured** — that is the whole point: bootstrap a fresh DSH install from providers you already manage.
## Install
```sh
dsh plugin --profile web add dsh-cc-switch
```
Restart DSH. By default the plugin syncs on start (`syncOnStart: true`), so your cc-switch providers appear in the model picker immediately.
Never booted DSH before? Bootstrap from the terminal without installing anything:
```sh
npx dsh-cc-switch # sync now
npx dsh-cc-switch --dry-run # preview only
```
## Usage
Three planes, pick any:
| plane | how | needs a working model? | needs DSH running? |
| --- | --- | --- | --- |
| Terminal CLI | `npx dsh-cc-switch` (`--dry-run` to preview) | no | no — works before first boot |
| Startup | automatic (`syncOnStart`, default on) | no | — |
| Human command | type `/ccswitch` in the composer (`/ccswitch dry` to preview) | no | yes |
| Agent tool | ask the agent to run `ccswitch_sync` | yes | yes |
## How it works
- Opens the local cc-switch SQLite database **read-only**; cc-switch is never modified.
- Maps providers onto `llm-pi-ai` routes through the DSH settings seam — changes take effect on the next request, no restart.
- API keys are stored through the DSH credential seam as references (`CCS_*_KEY`); key values never appear in settings, tool output, or model context.
| cc-switch | DSH route |
| --- | --- |
| `codex` provider (API-key relays) | `openai-responses` / `openai-completions` route, model from config TOML |
| `claude` provider (`ANTHROPIC_BASE_URL` relays) | `anthropic-messages` route, models from `ANTHROPIC_DEFAULT_*_MODEL_NAME` |
| Official OAuth providers | skipped (pi-ai cannot OAuth) |
| `gemini` / `claude-desktop` | skipped (roadmap) |
## Config
Override per row in your profile `cordis.patch.yml`:
```yaml
- id: cc-switch
config:
syncOnStart: false
```
| key | default | |
| --- | --- | --- |
| `dbPath` | `~/.cc-switch/cc-switch.db` | cc-switch database location |
| `prefix` | `ccs-` | route id prefix |
| `apps` | `['codex', 'claude']` | app_types to sync |
| `syncOnStart` | `true` | run a sync when the plugin loads |
## Limitations / roadmap
- Removed cc-switch providers are not auto-removed from DSH settings yet; delete stale `ccs-*` routes in Settings → Models.
- A "import from cc-switch" button on the Models settings page (Web UI plugin tree), gemini mapping, DB change watching: planned.
## Compatibility
Tested against cc-switch DB schema as of 2026-08 and DSH v0.1 developer preview. Both sides move fast; pin versions.
Unofficial community plugin — not affiliated with cc-switch or DeepSeek.
MIT
Install
dsh plugin --profile web add github:LKRCharon/dsh-cc-switch
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-cc-switch from the hub
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.