Configuring opencode2dsh
DeepSeek Harness reads the plugin configuration from the profile’s cordis.patch.yml. The defaults are:
| Key |
Default |
Function |
mode |
adapter |
Uses the native adapter. sidecar is a legacy mode that requires an agent built from legacy/agent. |
providerId |
opencode2dsh |
Provider name shown in DeepSeek Harness. |
refreshSeconds |
300 |
Live catalogue refresh interval. Pricing metadata refreshes every 24 hours. |
allowedModels |
[] |
Adapter-mode whitelist of exact model IDs. An empty list exposes eligible free-lane models. |
firstEventMs |
30000 |
Adapter stream watchdog for the first event. |
bodyIdleMs |
120000 |
Adapter watchdog for mid-response body silence. |
responsesBodyIdleMs |
300000 |
Body-idle limit for muse-spark-* Responses models. |
The watchdog values accept integers from 1 to 600000. Changes require restarting DeepSeek Harness. Sidecar-only keys include agentPath, agentArgs, restartDelayMs, restartMaxDelayMs, and maxConsecutiveCrashes.
Requirements for opencode2dsh
DeepSeek Harness must be version 0.1.7 or newer and use a web profile. The runtime requires Node.js 20 or newer, with outbound HTTPS access to opencode.ai and models.dev.
How opencode2dsh behaves
The adapter registers a native LlmAdapter and streams harness events, including text deltas, usage, and finish events. Chat models use OpenAI-completions streaming; muse-spark-* models use OpenAI-responses streaming. The catalogue uses the live upstream list, an offline cache, and a verified static list in fallback order. The plugin periodically refreshes it and writes a health snapshot.
Delegation and limits
Delegation is disabled by default. With delegation.enabled: true, the plugin may seed only the opencode credential into an isolated XDG root and start a managed local opencode serve after anonymous requests and a sibling retry receive the persistent 403 FreeTierError credential gate. Read docs/delegation.md before enabling this option.
Written from the project's own documentation and kept in sync with it. Where the two disagree, the source is authoritative — read the README on GitHub