Foreword¶
DeepSeek Harness (DSH) adopts an “everything is a plugin” architecture. If you use gpt-load to manage a model pool and want to connect it to DSH, dsh-plugin-gpt-load provides a direct solution. This plugin addresses the limitation of DSH’s native llm-pi-ai component, which handles protocols only at the provider-routing level, and allows OpenAI and Anthropic protocols to be used together within a single group without creating a separate provider for each protocol in the configuration file.
Core Features¶
- Single group: Only one “GPT-Load” group is shown in the model selector, without splitting by protocol.
- Protocol selection per model: By default, the protocol is determined by the
protocolsfield returned by gpt-load. You can also pin any model to OpenAI or Anthropic in the settings, or restore automatic detection. - Automatic sync: The model pool is fetched from
/api/modelsat startup and on a schedule, so the configuration list does not need manual maintenance. - Automatic capability detection: Context window size, maximum output, multimodal input capabilities, and Thinking tiers (low/medium/high) are read automatically.
- Key security: The AccessKey is stored by DSH’s credentials service and is not written to
settings.yaml. - Non-destructive writing: Sync operations only update their own
gpt-loadconfiguration section, without affecting other provider configurations or comments.
Installation and Activation¶
- Go to the target DSH profile directory (for example,
~/.dsh/profiles/web). - Run the installation command:
cd ~/.dsh/profiles/web && npm install wesleyel/dsh-plugin-gpt-load
- After installation is complete, restart the DSH process. The plugin will then take effect.
Typical Usage¶
After installing and restarting, you can configure it in the Web UI:
- Go to Settings → GPT-Load.
- Fill in the gateway address (for example,
http://127.0.0.1:3001) and the AccessKey. - Click “Sync Models Now”.
You can also preset the configuration in the profile YAML file:
plugins:
gpt-load-sync:
endpoint: http://127.0.0.1:3001
apiKey: gl-your-access-key
displayName: GPT-Load
defaultProtocol: auto
syncOnStart: true
syncIntervalMinutes: 60
Technical Notes¶
Implementation Principles¶
The llm-pi-ai component in Harness pins protocols to the provider-routing level, and any protocol specified on a model entry is ignored. As a result, settings.yaml cannot express “two protocols mixed in one group.” This plugin builds the provider accordingly and lets Harness’s built-in adapter handle request translation.
Protocol Determination Priority¶
- The model’s own
protocol(explicitly selected in settings and retained after restart). - Upstream
protocolspermits only one supported protocol → use that protocol directly. - Upstream permits two protocols → use the global
defaultProtocolif it is set; otherwise use the first entry in the upstream list (auto). - Upstream does not declare protocols → use
openai-completions.
Only openai-completions and anthropic-messages are supported. Other protocols declared upstream, such as openai-responses and gemini, are ignored.
Version Upgrade¶
Older versions that wrote gpt-load / gpt-load-anthropic entries into llm-pi-ai routing will be taken over automatically: the plugin first restores the endpoint and then removes these two routes. Other providers are not affected.
Applicable Scenarios¶
This plugin is suitable for developers who need to manage a model pool through gpt-load and want to flexibly use OpenAI or Anthropic protocols within a single DSH provider group. Before installing, make sure you have reviewed the source code and license.