Use DeepSeek Harness with open models

Add Munito AI to DeepSeek Harness as a custom model provider, and run open models such as GLM-5.3-Flash in its Web UI or in one command.

DeepSeek Harness (dsh) runs open models on Munito AI through a custom model provider that calls the OpenAI-compatible Chat Completions API. Create an API key. Export the key as MUNITO_API_KEY:

export MUNITO_API_KEY=munitoai_...

Add this configuration to ~/.dsh/cordis.patch.yml:

- id: llm-pi-ai
  config:
    providers:
      munito:
        displayName: Munito AI
        apiKeyEnv: MUNITO_API_KEY
        api: openai-completions
        baseURL: https://api.munito.ai/inference/v1
        models:
          - id: zai-org/glm-5.3-flash
            name: GLM-5.3-Flash
            contextWindow: 1048576
            maxTokens: 131072
            reasoningEfforts:
              low: low
              high: high
              max: max
- id: agent-default-model
  config:
    provider: munito
    model: zai-org/glm-5.3-flash

Start the Web UI in your project folder:

npx @deepseek-ai/dsh web

The command npx @deepseek-ai/dsh headless "<task>" runs one task without the Web UI, and prints the answer. apiKeyEnv reads the key from the environment, so the file holds no key. agent-default-model makes GLM-5.3-Flash the model of each new session. contextWindow tells dsh the context window of GLM-5.3-Flash, 1,048,576 tokens.

The file applies to each dsh profile, so the Web UI and headless both use Munito AI. It replaces the providers that the Models page of the Web UI saves, so keep each provider in this file. Munito AI tested this configuration with DeepSeek Harness 0.2.1-rc.2. See the DeepSeek Harness docs to configure models.

Use a regional host to keep processing in the EU. Replace the baseURL with https://api.eu.munito.ai/inference/v1.

To add a model, add its ID and its contextWindow to models. The page of each chat model in the model catalog gives its model ID and its context.

Reasoning effort

GLM-5.3-Flash always reasons. reasoningEfforts gives dsh the effort levels of the model: low, high and max. The Effort menu of the model picker offers these levels, and dsh sends the level as reasoning_effort. Without a level, the model reasons at its default effort. See Reasoning models.

On this page