Preface

DeepSeek Harness (DSH) extends its capabilities through plugins. Connecting to non-OpenAI-compatible models usually requires adapters or direct API calls. dsh-cliproxy routes requests for Claude, OpenAI/Codex, and Gemini through a local CLIProxyAPI instance, uniformly sending them to DSH. It offloads the complexity of protocols and OAuth to the proxy, providing DSH with an OpenAI-compatible client.

Core Features

  • Unified routing: Routes Claude, OpenAI/Codex, and Gemini in DeepSeek Harness through a local CLIProxyAPI instance.
  • OpenAI-compatible interface: Appears to DSH as an OpenAI client.
  • Model transparency: Transparent to the underlying model; does not add tools, prompt sections, or context.
  • Input restrictions: Rejects image, audio, and video inputs before sending requests.

Installation & Enablement

Install the plugin using the official command:

dsh plugin --profile web add github:DevViking-Persike/dsh-cliproxy

Restart DSH after installation. Three routes (cliproxy-claude, cliproxy-openai, cliproxy-gemini) will appear in the model catalog.

Prerequisites & Configuration

You need a running CLIProxyAPI instance (default endpoint http://127.0.0.1:8317/v1). For Gemini routes, completing -antigravity-login is required.

The plugin is configured through cordis.yml, with no directory entries to set. All fields are optional.

Field Default Value Meaning
baseURL http://127.0.0.1:8317/v1 Endpoint, including /v1.
apiKeyEnv CLIPROXY_API_KEY Environment variable for the proxy access key.
proxyConfigPath /opt/homebrew/etc/cliproxyapi.conf Local CLIProxyAPI YAML used to read the proxy access key.
readLocalProxyKey true Allows local configuration discovery for loopback endpoints only.
claudeModels Six Claude entries Catalog for cliproxy-claude.
openaiModels Five GPT entries Catalog for cliproxy-openai.
geminiModels Eight Gemini entries Antigravity catalog cliproxy-gemini.
streamIdleTimeoutMs 300000 Time budget between stream reads.
defaultContextWindow 200000 Context size for models not listed in the catalog.
maxTokens 32000 Default output limit.
retryPolicy Normal, 3 retries Merged into DSH defaults.

Example cordis.yml configuration:

- id: dsh-cliproxy
  name: dsh-cliproxy
  config:
    baseURL: http://127.0.0.1:8317/v1
    geminiModels:
      - id: gemini-pro-agent
        name: Gemini 3.1 Pro High
        contextWindow: 1048576
        maxTokens: 65535

Authentication & Security

For Gemini, CLIProxyAPI handles Google Antigravity OAuth. Run the login command once to authorize a Google account:

cliproxyapi -config /opt/homebrew/etc/cliproxyapi.conf -antigravity-login

CLIProxyAPI writes antigravity-<email>.json to its auth-dir and refreshes tokens by itself. The plugin never reads Google tokens.

The proxy access key is read on every request and never appears in errors or logs. Local configuration discovery is limited to loopback URLs and is automatically disabled otherwise.

Behavior & Limitations

  • Model transparency: The plugin registers routes and streams responses, adding no tools or prompt sections.
  • Text only: Currently rejects image, audio, and video inputs, even if upstream models may support them.
  • Static catalog: The model catalog consists of static defaults copied from the CLIProxyAPI Antigravity registry. Providing geminiModels can override the defaults.
  • Stream handling: Truncated streams raise STREAM_CLOSED instead of being treated as complete.
  • Testing: 64 tests, with no network or credentials required.

License & Links

This plugin is maintained by DevViking-Persike under the MIT license. The source code is available on GitHub: https://github.com/DevViking-Persike/dsh-cliproxy.

Ecosystem context: The DSH philosophy is “everything is a plugin.” This plugin is published through the community catalog https://www.skillhub.cn/plugins/DevViking-Persike/dsh-cliproxy and is unrelated to DeepSeek or High-Flyer.