DeepSeek Harness
Route DeepSeek Harness (dsh) through the OpenLLM daemon on your machine by adding the OpenLLM bundle to a dsh profile with the dsh plugin command.
| Command | dsh plugin --profile web add github:openllmsh/dsh |
| Mode | Persistent, per dsh profile. Added from the dsh side. |
| Talks to | Your local daemon at http://127.0.0.1:8787/v1 (Chat Completions) |
| Default model | ultra |
| Needs | A running OpenLLM daemon on the same machine |
| Remove | Remove the bundle from the profile in dsh |
There is no openllm command for DeepSeek Harness. The bundle is a configuration patch you add with dsh's own plugin command. Its source is at github.com/openllmsh/dsh.
Before you begin
-
Install OpenLLM with your key, so the installer starts the daemon. See Install.
-
Check that the daemon is running:
openllm status -
Install DeepSeek Harness (
dsh).
The bundle holds no key and no account details. dsh talks only to the daemon on this machine, and the daemon uses the key saved in ~/.openllm/.env.
Set up with dsh plugin
dsh profiles are separate. A bundle added to one profile is invisible to the others, so add it to the profile you run.
dsh plugin --profile web add github:openllmsh/dshdsh plugin --profile headless add github:openllmsh/dshThen restart that profile. The browser UI exists only in the web profile; the bare default profile has no web surface.
To pin a release of the bundle, add a tag: github:openllmsh/dsh#<tag>.
In that profile only, the bundle:
- adds an
openllmprovider to dsh's built-inllm-pi-aiadapter, usingopenai-completionsathttp://127.0.0.1:8787/v1; - makes
openllm/ultrathe default conversation model; - registers the
openllmMCP server, which runsopenllm mcpover stdio. See MCP server.
OpenLLM itself changes nothing on disk for dsh.
If you changed the daemon port with OPENLLM_DAEMON_PORT, edit baseURL in the bundle's cordis.patch.yml to match. The bundle does not read the port.
Choose models
The bundle declares three models:
| Model | Context window | Max output |
|---|---|---|
ultra (default) | 262,144 | 16,384 |
plus | 262,144 | 16,384 |
lite | 131,072 | 8,192 |
Switch between them in dsh. To use a specific model, change what an alias resolves to in Configuration. See Routing and fallback.
Who pays for a request
Every request goes to the daemon on this machine, which runs the chain for the alias. A subscription or local-model hop runs on this device. An API-key hop is sent on to the hosted gateway and bills your provider account. Included openllm/ models count against your plan's allowance. See Providers and Plans and limits.
The bundle sends a placeholder Authorization: Bearer local header. When a chain has no subscription or local model, the daemon passes the whole request to the hosted gateway with that header, and the gateway rejects it with 401. To use the bundle, include at least one subscription or local model in the chains you call.
Check that it works
- Restart the profile and send a message.
- Open Overview in the app. The request appears with the model that served it.
To inspect the composed configuration, run dsh --profile web --dump-config and look for the openllm provider.
Common problems
| Symptom | Cause | Fix |
|---|---|---|
Connection refused on 127.0.0.1:8787 | The daemon is not running | Run openllm start. See Devices |
| No OpenLLM model in the browser UI | The bundle was added to a profile other than web | Add it to web and restart that profile |
| Connection refused after changing the daemon port | The bundle still points at port 8787 | Edit baseURL in cordis.patch.yml |
401 from every request | The chain has no subscription or local model, so the daemon forwards the bundle's placeholder header to the hosted gateway | Add a subscription or local model to the chain in Configuration |
| OpenLLM tools are missing | openllm is not on the PATH dsh uses | Run ~/.openllm/bin/openllm setup, then restart the profile |
For anything else, see Troubleshooting.
Remove it
Remove the bundle from the same profile with dsh's plugin command, then restart the profile. OpenLLM keeps no state for dsh, so there is nothing to undo on the OpenLLM side.
Last updated on
ChatGPT for Mac
Run the ChatGPT Mac app on your OpenLLM models with the OpenLLM ChatGPT launcher that openllm chatgpt installs, with or without your ChatGPT sign-in.
Any OpenAI or Anthropic client
Connect any OpenAI- or Anthropic-compatible tool or SDK to OpenLLM with the right base URL, your sk-llm key in either header, and a model id or alias.