Skip to main content
DeepSeek Harness is a plugin based coding agent from DeepSeek. It runs in your terminal as dsh and in a local web UI. Using the Requesty integration, you can:
  • Access 600+ models from DeepSeek, OpenAI, Anthropic, Google, Mistral and many other providers through one API key.
  • Keep every request, its cost and its latency in one dashboard.
  • Apply fallback policies, load balancing and latency routing to your agent runs.
  • Switch models without reinstalling or reconfiguring the harness.
The Requesty CLI writes this configuration for you: run requesty, select DeepSeek Harness, pick a model, and it backs up your existing files before writing.

Prerequisites

  • DeepSeek Harness installed on your machine. npx @deepseek-ai/dsh web runs it without a global install, and Node 22.19 or later is required.
  • A Requesty API key from the API Keys page.

How the configuration works

DeepSeek Harness keeps user configuration in its harness home, which is ~/.dsh unless you set DSH_HOME:
Older harness versions used a single ~/.dsh/settings.yaml. Current versions import that file once, into whichever profile starts first, and rename it to settings.yaml.imported. Other profiles never see it, so put the Requesty config in each profile you use.
Requesty is an OpenAI compatible endpoint, so it plugs into the harness as a custom provider on the llm-pi-ai plugin. No plugin needs to be installed for this.

Configuration

1

Install DeepSeek Harness

Run the web UI once to create the harness home:
You can also install from source. See the DeepSeek Harness README for that path.
2

Store your Requesty API key

Add your key to ~/.dsh/.credentials.yaml:
Replace rqsty-sk-.... with your key from the API Keys page.The harness requires this file to be readable by you only. Set the permissions after creating it:
Exporting REQUESTY_API_KEY in your shell works as well, and a value from the environment wins over the stored one. Use the file when you want the key to survive across terminals.
3

Add Requesty as a provider

Edit the patch file of the profile you run, for example ~/.dsh/profiles/headless/cordis.patch.yml for terminal runs or ~/.dsh/profiles/web/cordis.patch.yml for the web UI. The harness creates the profile folder the first time that profile starts. The file is a YAML list of plugin entries:
What each field does:
The three disabled entries turn off the default web search plugins, which call DeepSeek directly and fail with MISSING_CREDENTIAL unless you also set DEEPSEEK_API_KEY. Remove them if you have a DeepSeek key and want web search.
Use a full Requesty model id such as deepseek/deepseek-v4-pro-0813 to pin a provider, or a bare Managed Policy name such as deepseek-v4.1-flash (or deepseek-v4.1-flash@eu) to let Requesty pick the provider.
A model that accepts images needs input: [text, image] on its entry. Text only is the default.
4

Start the harness

Run a task in your terminal:
Or open the web UI:
From source, prefix the commands with pnpm, for example pnpm dsh web.

Configuring from the web UI

The web UI writes the same files, so you can skip the YAML:
  1. Run dsh web and open the printed URL.
  2. Go to Settings, then Models.
  3. Choose Add a custom provider and fill in the form:
    • Provider id: requesty
    • Base URL: https://router.requesty.ai/v1
    • Protocol: OpenAI Chat Completions
    • API key: your Requesty key
  4. Select Fetch available models to load the Requesty catalog, then pick the models you want.
  5. Select a Requesty model as the default model for new sessions.

Selecting a model

The model picker lists every model on the requesty provider. Add or remove entries under models in the profile’s cordis.patch.yml to change that list, and set agent-default-model to the model new sessions should start with. Browse ids in the Requesty model library. Policies work here too: use the policy id as the model id, for example policy/coding-fallback.

Verifying the integration

Run one task, then open the Requesty analytics dashboard. The request appears within seconds with its model, token counts and cost. Requests configured with the headers above are tagged DeepSeek Harness, so you can filter your dashboard by this integration. You can also confirm that the harness reaches the router at all:
This is the same endpoint the Fetch available models button calls.

Troubleshooting

The harness found the provider but no key. Check that the name in apiKeyEnv matches a key in ~/.dsh/.credentials.yaml exactly, or export that variable in the shell you start dsh from. The harness reads the environment at launch, so exporting a key after startup has no effect.
The harness refuses to read ~/.dsh/.credentials.yaml if the file is readable by other users. Run chmod 600 ~/.dsh/.credentials.yaml. The file must be a plain mapping of credential name to key, with no wrapper level and no empty values.
The base URL does not match the protocol. Use https://router.requesty.ai/v1 with api: openai-completions. For api: anthropic-messages, use https://router.requesty.ai without the /v1 suffix, because the harness appends /v1/messages itself.
Add the provider prefix to the id, for example openai/gpt-5.4. Confirm the id in the model library, and check approved models if your organization restricts which models a key may use.
The harness watches its profile files, so most edits take effect immediately. If a run still uses the old provider, stop the process and start it again. Confirm you edited cordis.patch.yml for the profile you started, under the harness home in use, which is $DSH_HOME when that variable is set.

References

Last modified on October 12, 2026