Bundle
@openllmsh/dsh
DeepSeek Harness (dsh) bundle that routes the harness through the OpenLLM gateway — an `openllm` provider on the in-box pi-ai adapter (via the local daemon gateway) plus the OpenLLM MCP server. Pure config; install OpenLLM first (see README).
- Source
- openllmsh
- stars
- 1 stars
- License
- MIT
- Updated
- Updated yesterday
Readme
<p align="center">
<picture>
<source media="(prefers-color-scheme: light)" srcset="./assets/openllm-light.svg">
<img alt="OpenLLM" src="./assets/openllm.svg" width="300">
</picture>
</p>
<p align="center"><b>@openllmsh/dsh</b> — route DeepSeek Harness through OpenLLM.</p>
<p align="center">
<a href="./LICENSE"><img alt="License: MIT" src="https://img.shields.io/badge/license-MIT-blue.svg"></a>
<img alt="dsh-plugin" src="https://img.shields.io/badge/dsh-plugin-informational.svg">
<img alt="platforms" src="https://img.shields.io/badge/platforms-darwin%20%C2%B7%20linux-lightgrey.svg">
</p>
---
A [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (`dsh`)
bundle that points the harness at the [OpenLLM](https://openllm.sh) 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):
```sh
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):
```sh
dsh plugin --profile web add github:openllmsh/dsh
```
Headless / CLI (`headless` profile):
```sh
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
```sh
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](./LICENSE).
Install
dsh plugin --profile web add github:openllmsh/dsh#7d20e9d7c7213a5beb69ffe770c007de55ffb93c
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install openllmsh-dsh from the hub
- This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.