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-ai routes.

References