Back to home@bobowsh

dsh-llm-opencode

OpenCode Zen free model adapter for DeepSeek Harness (DSH) — DeepSeek V4 Flash Free, Nemotron 3 Ultra Free, MiMo V2.5 Free, Big Pickle

Stars
0
Language
JavaScript
Created
Aug 20, 2026
Updated
Aug 20, 2026
GitHub repo

Introduction

dsh-llm-opencode

OpenCode Zen free model provider adapter for DeepSeek Harness (DSH).

Registers the opencode-zen provider route in DSH's LLM seam, giving your coding agent access to OpenCode Zen's free-tier models — no API key required for free models, no credit card, no setup friction.

Free Models

ModelIDContextMax OutputNotes
DeepSeek V4 Flash Freedeepseek-v4-flash-free200K128KDeepSeek's V4 Flash, SWE-bench ~79%
Nemotron 3 Ultra Freenemotron-3-ultra-free1M128KNVIDIA's flagship, huge context
MiMo V2.5 Freemimo-v2.5-free200K32KXiaomi's coding model
Big Picklebig-pickle200K128KStealth general-purpose model

Free models are served through OpenCode Zen's public gateway. Availability may change; the adapter auto-discovers models tagged free from the /models endpoint.

Install

# Into a DSH web profile
dsh plugin --profile web add dsh-llm-opencode

# Or from GitHub directly
dsh plugin --profile web add "github:bobowsh/dsh-llm-opencode#main"

How It Works

This plugin implements the LlmAdapter interface from @deepseek-ai/dsh-llm and registers a single provider route opencode-zen. When DSH routes a request to this provider:

  1. Serialization — harness messages are translated to OpenAI-compatible chat completions (text-only; images are rejected with UNSUPPORTED_CONTENT).
  2. Streaming — SSE responses are parsed via eventsource-parser and translated into harness StreamChunk events (block-start, text-delta, reasoning-delta, tool-call-delta, usage, finish).
  3. Identity — requests carry User-Agent: opencode/1.0.0 and related headers to satisfy OpenCode Zen's client identity check (the default deepseek-harness/... user-agent is rejected by the gateway).
  4. Credentials — resolves the API key from DSH's credential store (env var OPENCODE_API_KEY) or the ambient environment. Free models work without a key; paid models require one.
  5. Model discovery — registers a discovery handler that fetches /models from the gateway and filters for free-tagged entries.

Configuration

The adapter is configurable through DSH's settings system (llm-opencode section in settings.yaml). Changes take effect immediately without restart.

SettingDefaultDescription
baseURLhttps://opencode.ai/zen/v1Gateway endpoint
apiKeyEnvOPENCODE_API_KEYCredential store key for the API token
maxTokens128000Default max output tokens per request
defaultContextWindow1000000Fallback context window for unknown models
streamIdleTimeoutMs300000Max idle time (ms) before stream is considered dead
models(built-in catalog)Override the model catalog
retryPolicy(built-in)Retry behavior for transient errors

Example settings.yaml snippet

llm-opencode:
  baseURL: "https://opencode.ai/zen/v1"
  maxTokens: 64000
  models:
    - id: deepseek-v4-flash-free
      name: DeepSeek V4 Flash Free
      contextWindow: 200000
      maxTokens: 128000

Bundle Patch

The included cordis.patch.yml registers the llm-opencode plugin row into the DSH bundle loader, so the plugin is auto-loaded when installed into a profile.

Requirements

  • DeepSeek Harness >= 0.1.0-rc.7
  • @deepseek-ai/cordis ^4.0.1 (peer dependency)

License

MIT