Skip to content
dsh.fish
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

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source