Introduction

DeepSeek Harness (DSH) adopts a plugin-based architecture. When using OmniRoute (an OpenAI-compatible gateway), the gateway may expose a large number of models (for example, more than 1,000 local models). The built-in “Models” page in DSH lacks search, filtering, and modality discovery capabilities, and its discovery contract cannot return modality information. This plugin aims to address this pain point by providing a searchable, filterable multi-select UI that controls the OmniRoute models actually offered by DSH, and by integrating Web search functionality.

Plugin Overview

  • Name: publieople/dsh-omniroute-models
  • Positioning: A DSH host-side and client-side plugin for managing OmniRoute models and discovering their modalities.
  • Features: Maps the real input_modalities, context_length, and max_output_tokens of OmniRoute into the configuration, so checks take effect immediately without restarting.

Core Features

Filtering by Provider and Route Management

  • Filter by provider: Parses namespace prefixes from model IDs (for example, opencode-go/deepseek-… → opencode-go). The UI provides a “Provider” dropdown filter and a provider column, and supports filtering by opencode, oc, auto, github, or no namespace.
  • Switch routes: Automatically enumerates all configured routes under llm-pi-ai.providers (including route name, display name, API, Base URL, model count, and protocol type). Use the “Route” dropdown at the top to switch the endpoint currently being managed.

Model Retrieval and Saving

  • Fetch model list: Clicking the action requests the provider’s /v1/models endpoint (default http://localhost:20128/v1) to retrieve each model’s input types (text/image), context window, and maximum token count.
  • Save selected: Clicking “Save Selected” updates the llm-pi-ai.providers.<route>.models configuration in one operation. DSH will serve only the checked models. This operation writes to settings.yaml through the official settings interface and takes effect on the next request. When saving, sibling fields such as apiKeyEnv, api, and baseURL are preserved.
  • Persistence: Enabled models are pre-checked. When re-fetching, stored values take precedence over the modalities/capabilities written by the plugin (that is, manually edited configuration is not overwritten).

Web Search Integration

  • The plugin connects DSH’s built-in web_search capability to two sources:
    • OmniRoute aggregated search: Supports engines such as Tavily, Brave, Exa, Serper, and Ollama.
    • Native DeepSeek search: When the OmniRoute source is disabled or set to DeepSeek, it automatically falls back to the official search.
  • When configuring the Web Search card, you can choose either of the two sources. For the OmniRoute source, the API key is optional (the gateway uses its own stored upstream keys), but if the endpoint requires a key, the key resolution order is: literal searchApiKey → DSH credential reference searchApiKeyEnv → process environment variable.

Model Type Filtering

  • The plugin lists only chat models (text/image). The gateway’s /v1/models endpoint may contain entries for embeddings, video, audio, music, etc.; the plugin filters out these non-chat models using the type field.
  • For search-engine pseudo-models listed by OmniRoute >= 3.8.50 (such as brave-search/web), the plugin filters them out by their -search suffix.

Internationalization Support

  • Supports Chinese and English (i18n). It uses DSH’s official localization mechanism, so interface text automatically refreshes when switching the language in the DSH settings panel.

Installation and Dependencies

  • Prerequisites: Requires OmniRoute version >= 3.8.50.
  • API key requirements: For OmniRoute versions later than 3.8.50, even fetching the model catalog (GET /v1/models) requires a valid API key (anonymous access is no longer allowed).
  • Installation method: The installation command is not provided in the current data. The plugin is installed via a package manager or directory, and after installation, ensure that the OmniRoute gateway is configured and available.

Typical Usage

  1. Filter models: On the “OmniRoute Models Manager” page, use the “Provider” dropdown to select a specific namespace (for example, opencode) and quickly locate models under that provider.
  2. Manage routes: If multiple provider endpoints are configured, use the “Route” dropdown to switch to the endpoint you want to manage.
  3. Apply changes: Check the models you need and click “Save Selected”. DSH updates the configuration file, and the changes take effect without restarting the service.
  4. Configure search: In the “Web Search” card, choose to use OmniRoute aggregated search or Native DeepSeek search.

Notes

  • API key resolution: The plugin reads keys from DSH credential storage in the following order: llm-pi-ai namespace (the standard path used by the adapter) → process environment variables → query parameters.
  • Non-chat models: The plugin logic automatically excludes models such as embeddings, video, and audio to ensure that unsupported model types do not appear in the configuration.
  • Configuration conflicts: If you manually edit settings.yaml, the plugin does not overwrite manual changes when re-fetching, respecting user configuration priority.
  • Permissions and security: The plugin runs with DSH process permissions. Check the source code and license before installation.

Summary

This plugin connects OmniRoute’s model catalog to DSH’s configuration system, resolving issues of chaotic model management and missing modality information. It provides a visual interface for managing a model whitelist and offers flexible Web search backend selection. For users who need to manage a large number of models or rely on OmniRoute as a unified gateway, this is a practical tool.