Back to home@openllmsh

dsh

DeepSeek Harness (dsh) bundle: route the harness through OpenLLM (OpenAI-compatible) + register the OpenLLM MCP, with CLI/daemon onboarding.

Stars
1
Language
TypeScript
Created
Aug 24, 2026
Updated
Aug 26, 2026
GitHub repo

Introduction

OpenLLM

@openllmsh/dsh — route DeepSeek Harness through OpenLLM.

License: MIT dsh-plugin platforms


A DeepSeek Harness (dsh) bundle that points the harness at the OpenLLM gateway and hands it OpenLLM's MCP tools. It is a pure-config Cordis patch layer — installed from the dsh side, no runtime code — and it does two things:

  • LLM router — adds an openllm provider to dsh's in-box llm-pi-ai adapter (openai-completions) pointed at the daemon's local-first gateway (http://127.0.0.1:8787/v1) and makes it the default model. No adapter code, and no API key: that loopback surface has no auth gate; the daemon fetches signed plans with its own ~/.openllm/.env credentials and forwards upstream.
  • MCP — registers the openllm mcp stdio server (openllm, claude-context, supermemory tool groups). The openllm binary resolves ~/.openllm/.env itself, so it too needs nothing from dsh.

dsh holds no key and no origin — it just talks to 127.0.0.1:8787, so the only thing it requires is that openllmd is running. Installing OpenLLM is a prerequisite (below) — the installer starts the daemon for you; this bundle does not install, prompt for, or onboard it. Runs on the host DeepSeek Harness — the services it patches (@deepseek-ai/dsh-llm-pi-ai, @deepseek-ai/dsh-mcp-client) ship in @deepseek-ai/dsh-base.

Prerequisite — install OpenLLM

Do this once — dsh routes to the local OpenLLM daemon, and the installer sets it up and starts it for you (macOS / Linux):

curl -fsSL https://www.openllm.sh/install | bash

This is OpenLLM's own official installer (canonical source: https://openllm.sh/install); it digest-verifies the binaries it downloads. If your policy requires it, fetch and read the script before piping it to a shell. This bundle only documents the prerequisite — it never runs it.

There is nothing else to run, paste, or export — the installer starts the daemon and persists your key to ~/.openllm/.env, and the daemon serves dsh from there.

Install the bundle

Install into the profile whose surface you actually run. dsh profiles are separate bundle stacks, so a bundle added to one profile is invisible to the others — the browser UI lives only in the web profile (web mounts dsh-base + dsh-web-app; headless mounts dsh-base + dsh-headless). The bare default profile is dsh-base only — no web surface — so adding the bundle there never reaches the web UI.

Browser UI (web profile):

dsh plugin --profile web add github:openllmsh/dsh

Headless / CLI (headless profile):

dsh plugin --profile headless add github:openllmsh/dsh

Then restart the profile. Distributed from GitHub — no npm package. The built lib/ is committed, so the git install loads with no build step (and no pnpm allowBuilds prompt). Pin a release with github:openllmsh/dsh#<tag>.

Self-hosted / custom port

The router base (http://127.0.0.1:8787/v1) is fixed in cordis.patch.yml. To route through a self-hosted OpenLLM, point the daemon at your origin when you install it — dsh still just talks to 127.0.0.1:8787. A custom daemon port (OPENLLM_DAEMON_PORT) means editing the baseURL in cordis.patch.yml to match.

Develop

pnpm install
pnpm build            # tsdown → lib/index.mjs (+ .d.mts) — commit the result
pnpm typecheck        # tsc --noEmit

dsh plugin --profile demo add .          # link this bundle into a scratch profile
dsh --profile demo --dump-config         # inspect the composed plugin tree

The bundle's substance is cordis.patch.yml (resolved via the dsh.bundle.patch manifest field); src/index.ts is an export {} placeholder with no runtime API, matching @deepseek-ai/dsh-base.

lib/ is committed (GitHub is the only distribution channel), so rebuild and commit it whenever src/ changes — a stale lib/ is what git installs.

Developer preview — dsh is pre-1.0; pin and re-test against each dsh bump.

License

MIT © OpenLLM, INC — see LICENSE.