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.
Prerequisites
- DeepSeek Harness installed on your machine.
npx @deepseek-ai/dsh webruns 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.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 Replace
~/.dsh/.credentials.yaml: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 What each field does:
~/.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: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:- Run
dsh weband open the printed URL. - Go to Settings, then Models.
- 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
- Provider id:
- Select Fetch available models to load the Requesty catalog, then pick the models you want.
- Select a Requesty model as the default model for new sessions.
Selecting a model
The model picker lists every model on therequesty 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 taggedDeepSeek Harness, so you can filter your dashboard by this integration.
You can also confirm that the harness reaches the router at all:
Troubleshooting
MISSING_CREDENTIAL: no API key for provider route
MISSING_CREDENTIAL: no API key for provider route
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.Credentials file rejected
Credentials file rejected
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.404 page not found
404 page not found
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.Model not found
Model not found
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.Changes to the profile config do not apply
Changes to the profile config do not apply
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.