Introduction¶
DeepSeek Harness (dsh) uses a plugin-based architecture designed to modularize various capabilities. dsh-llm-aimux is an LLM adapter that integrates the Rust engine aimux with DSH. This plugin exposes 325+ AI providers as dsh model routes. It allows developers to access a wide range of model providers through DSH’s unified interface without configuring each provider separately.
Core Features¶
This plugin provides the following capabilities:
* Streaming chat and tool calls
* Reasoning blocks (inbound and outbound)
* Separated token usage accounting (cache reads/writes separated)
* Attribution headers on outgoing provider requests
* Settings integration
* Model metadata merging
* Per-route endpoint overrides
* Streaming chunk idle watchdog
Installation and Enablement¶
Install the plugin with the following command:
dsh plugin --profile web add @arcships/dsh-llm-aimux
After installation, credentials can be stored via environment variables (for example, DEEPSEEK_API_KEY) or configured in settings. Start dsh:
dsh --profile web
Then navigate to the “Models” page to configure providers.
Configuration Methods¶
Routes are keyed by dsh provider id, each mapping to one aimux provider.
In the base layer of settings.yaml, the structure is as follows:
- insert:
- id: llm-aimux
name: '@arcships/dsh-llm-aimux'
config:
providers:
deepseek: # dsh route id
provider: deepseek # aimux provider name
apiKeyEnv: DEEPSEEK_API_KEY
kimi:
provider: moonshot
groq:
displayName: Groq
In the user settings layer, parameters and endpoint overrides can be configured:
llm-aimux:
streamIdleTimeoutMs: 300000
providers:
groq: {}
relay: # endpoint override
provider: deepseek
baseUrl: https://relay.example/v1
headers:
X-Org: acme
The provider field specifies the aimux provider name. aimux has 325+ providers built in. Credentials are resolved through the harness ctx.credentials seam; otherwise, they fall back to environment variables.
Limitations and Notes¶
- Developer preview: It is currently in developer preview, and breaking changes are expected.
- Not supported: image inputs, subscription/OAuth channels, and endpoint probing for draft routes.
- Conflicts: Routes must not overlap with the built-in
llm-pi-airoutes.