DeepSeek Harness Bluebook
Getting Started

Configure Models

Configure DeepSeek, catalog providers, and custom OpenAI-compatible endpoints in the Web UI, including correct image-input setup

Configure models under Settings → Models. A saved change applies to the next model request without restarting the Web server; a session that has already sent a request keeps the model recorded in its own log.

Configure DeepSeek

Open Settings → Models, enter the API key in the DeepSeek card, and save.

Keys are never shown again

After saving, the Models page receives only a redacted credential descriptor and never the literal secret. Credentials live in $DSH_HOME/.credentials.yaml; settings keep only their references. Do not commit either file or secrets held in environment variables.

Add another catalog provider

Choose Add provider, select a provider such as Anthropic or OpenAI from the catalog, enter its credential, and save. A catalog provider supplies its endpoint, protocol, and model list.

Some providers do not use an ordinary API key: Bedrock needs AWS credentials and a region, Vertex needs an ADC project, Azure needs an api-version, and Codex uses OAuth. Filling only the API-key field does not configure those authentication methods.

Add a custom OpenAI-compatible endpoint

For a company gateway, self-hosted service, or provider absent from the catalog, choose Add a custom provider. Supply:

  1. a lowercase Provider ID;
  2. its display name, Base URL, and API protocol;
  3. a credential and at least one model.

The Provider ID is permanent because requests, saved sessions, default models, and credential references use it. To rename one, add a new provider and delete the old one. Its display name, Base URL, protocol, credential, and models remain editable.

If an endpoint supports the OpenAI-style GET /models, use Fetch available models in the form before selecting candidates. That changes only the draft until you save. Enter models manually for endpoints without model discovery.

Images and vision models

Recent upstream releases expanded multimodal support: v0.1.1-rc.1 adds DeepSeek-V4-Flash-Vision-Exp, while v0.1.1-rc.2 makes the DeepSeek adapter prefer image uploads through the Files API, reuse uploaded files, and automatically resize or convert formats for the selected model. See Recent Updates for the release context.

A model entered by hand is treated as text-only by default because Harness cannot ask an arbitrary endpoint which modalities it accepts. Enable image input for a custom vision model by declaring it in that model's $DSH_HOME/settings.yaml entry:

llm-pi-ai:
  providers:
    my-gateway:
      apiKeyEnv: GATEWAY_API_KEY
      api: openai-completions
      baseURL: https://gateway.example/v1
      models:
        - id: vision-preview
          input: [text, image]

When every hand-entered model on the same route accepts images, set defaultInput: [text, image] on the provider instead. This is a claim about endpoint capability, not a capability probe; a wrong declaration is still rejected by the provider.

Images remain in the session log

If a model rejects an attached image, correct its input declaration or choose an image-capable model, then start a new session. The attachment remains in the old session log, so continuing that session can send it again.

Environment variables for CLI, headless, and automation

Command-line and automation use can read DeepSeek configuration from environment variables:

VariablePurpose
DEEPSEEK_API_KEYDeepSeek API key
DEEPSEEK_BASE_URLOptional Base URL when using an OpenAI-compatible proxy

For example, in headless mode:

DEEPSEEK_API_KEY=sk-your-key dsh --profile headless "Summarize this repository and identify its main packages"

Troubleshooting

  • The model does not respond: check the credential, network access, and model selection; a custom gateway also needs the right protocol and request compatibility.
  • Fetching the model list returns 401: check the key. Enter models manually when the endpoint does not offer GET /models.
  • An image is refused before sending: the selected model does not declare image input. Add input: [text, image] for a custom model, or choose a model that already declares vision support.
  • Every custom-gateway request fails: it may not match OpenAI's request shape exactly. The upstream guide documents compatibility switches such as compat.supportsDeveloperRole and compat.maxTokensField; defer to the official provider guide.

Next steps

  • For the complete first-run flow, see Web UI Quickstart.
  • For reproducible deployment or an upgrade, start with the version-pinning and validation guidance in Recent Updates.

On this page