katsos/dsh-claude-cli
dsh-claude-cli
DeepSeek Harness LLM provider that runs your installed Claude Code CLI as the model backend — no API key.
Install
npx @deepseek-ai/dsh plugin --profile web add ../dsh-claude-cliRestart `dsh web` after install. Bundle APIs can change during the developer preview.
README badge
[](https://dshhub.dev/plugins/dsh-claude-cli)Paste this into your README. The star count updates with every catalog sync.
From the README
Excerpt from katsos/dsh-claude-cli, cleaned of badges and images.
dsh-claude-cli
Use the Claude Code CLI you already have installed as a DeepSeek Harness LLM provider.
No API key. The plugin runs claude as a subprocess and streams its output back through the harness's LLM seam, so requests authenticate as whatever claude is already logged in as — a login you should check your plan's usage terms against before automating.
The harness stays the agent. The CLI's own agent loop, tools, settings, memory files, and MCP servers are all switched off; what is left is the model call, driven by the harness's system prompt, history, and tools.
Install
Requires a working claude on PATH (Claude Code), Node ^22.19 || >=24, and a harness with @deepseek-ai/dsh-llm.
Install it into the profile you actually run, pointing at your checkout of this repository. The package declares dsh.bundle, so it joins that profile's layer stack and the anthropic-claude-cli route is composed on every start:
dsh plugin --profile web add ../dsh-claude-cli
A path relative to where you run the command is fine here. This plugin is not on npm, so the directory is the only way to install it today.
Restart the harness afterwards — a profile's layer stack is read at startup, so a running server keeps the composition it booted with. The models then appear under Claude Code CLI in the model picker.
Invoking dsh
The commands here assume dsh resolves. How you reach it depends on how the harness is installed:
| Harness install | Command |
|---|---|
| Global | dsh … |
| Source checkout | pnpm dsh … |
| Neither | npx @deepseek-ai/dsh … |
Use the scoped name with npx. Unscoped dsh on npm is an unrelated JavaScript shell, last published in 2022.
That said, the third row is the odd one: this is a plugin for a harness, so a profile to install it into has to exist already. If you have never run dsh, install the harness first rather than reaching for npx.
<b>Without installing</b> — run it once from a <code>--patch</code> overlay
<br>cordis.yml is a standalone --patch overlay for trying the plugin in one run, or for a profile you would rather not modify. Replace the placeholder path in it with this directory's absolute path — plugin paths in a patch must be absolute, because a patch contributes configuration without changing the directory the loader resolves module paths from.
dsh --profile headless --patch /absolute/path/to/dsh-claude-cli/cordis.yml "your task"
Unlike the bundle layer, that overlay also repoints agent-default-model at anthropic-claude-cli, so the one-shot run uses it without a model picker.
How tool calls work
The CLI has no "here are some tools, hand their calls back to me" mode, so the plugin declares the harness's tools to it as an MCP server (bridge.mjs). The model then emits real tool_use blocks with provider-validated arguments, which the plugin translates into harness tool-call chunks.
The bridge never executes anything. The harness owns tool execution. The plugin ends the request the moment the model's message ends, so the CLI process is gone before it could dispatch a call of its own.
harness request ──▶ claude --print ──▶ model
│ │
bridge.mjs ◀──────────┘ (tool schemas only)
│
harness chunks ◀─────────┘ tool_use → tool-call → the harness runs the tool
Configuration
…
