More Agents

DeepSeek Harness

Quick answer
DeepSeek Harness is the only agent Prism configures in two places: provider routes go into the llm-pi-ai row of each profile's cordis.patch.yml, and MCP goes into the home-level cordis.patch.yml. One setup therefore covers every profile at once.

Last updated Reviewed against Prism v0.3.26

Where the files live

FilePathHolds
Home patch$DSH_HOME/cordis.patch.yml (default ~/.dsh)The MCP gateway row, applying to every profile.
Profile patches$DSH_HOME/profiles/<profile>/cordis.patch.ymlThe Prism provider routes, one file per profile.
Legacy settings$DSH_HOME/settings.yamlRead only, to strip Prism's old region from it.

DSH's own settings service migrates provider configuration out of settings.yaml on startup, which is exactly why Prism writes where DSH keeps providers rather than where it used to.

One-click setup

1

Open the Agents tab

In the Admin UI, select Agents, then DeepSeek Harness.
2

Run DSH once first

Prism needs at least one profile directory to exist. If none does, setup reports that you should run the harness once to create one.
3

Click Setup

Prism merges its routes into every profile's patch file, beside any provider you added yourself, and writes the MCP row to the home-level patch.

What Prism writes

# In each profile's cordis.patch.yml, inside the llm-pi-ai row:
      # >>> prism providers managed >>>
      prism:
        displayName: Prism
        api: openai-completions
        baseURL: http://127.0.0.1:11434/v1
        headers:
          Authorization: Bearer prism
        compat:
          supportsDeveloperRole: false
          maxTokensField: max_tokens
        models:
        - id: "glm-5.1:cloud"
          contextWindow: 128000
          maxTokens: 16384
      # <<< prism providers managed <<<

Two routes, one protocol each

Route idapi valueHolds
prismopenai-completionsEvery chat_completions model.
prism-responsesopenai-responsesModels marked api: responses, and Codex OAuth models.

Prism expresses itself as routes inside the existing llm-pi-ai row rather than mounting a second plugin instance, because that plugin declares the entire provider catalog into a shared service when it mounts. A second instance fails the whole plugin tree and DSH refuses to start.

Why the compat block exists

KeyReason
supportsDeveloperRole: falseWritten for both protocols. Prism rewrites system prompts itself, and the upstream plugin only sends the developer role to reasoning models.
maxTokensField: max_tokensWritten for the Chat Completions route only. A route-level compat switch its protocol cannot take makes DSH skip every model on that route.

Migrating from settings.yaml

The first version of this integration wrote to $DSH_HOME/settings.yaml. Current Prism versions strip that old region and write to the profile patches instead. DSH also renames the file to settings.yaml.imported once it migrates, so nothing is lost.

Prism routes appear beside yours
The row's other providers are preserved. Prism strips any unmarked duplicate of its own keys before inserting, so YAML never ends up with two prism: keys where the later one silently wins.

Add MCP servers

The home-level cordis.patch.ymlcarries one MCP insert row, so a single write gives every profile access to Prism's gateway. DSH's Web UI never rewrites that file. See MCP Gateway.