Yomi APIYomi APIDocs Open console

中文

Yomi API / Documentation / DeepSeek Harness

Connect an agent

DeepSeek Harness

DeepSeek Harness (command: dsh) is an AI coding agent released by DeepSeek on August 13, 2026, with a web interface, session management and tool calling. It supports OpenAI-compatible providers. Point its configuration to Yomi API to use models such as deepseek-v4-pro.

Prerequisites

  • Node.js: 24 (required by dsh; npm is bundled with Node). Reopen the terminal after installation and check with node --version. The output must start with v24.
  • API key: Create and save a key from API Keys in the console. It is visible only at creation and starts with sk-.

Installation

Install globally with npm. The command is the same on macOS, Linux and Windows:

npm install -g @deepseek-ai/dsh

Configure and start in one step

No manual configuration edits are needed. Replace sk-YOUR_KEY in the command below with your real key, then copy and run the entire block. The script installs dsh, backs up and merges your existing ~/.dsh/settings.yaml (preserving personal settings such as themes), writes the key to ~/.dsh/.env (mode 0600), then starts dsh web.

macOS / Linux

bash <<'YOMI_SETUP'
set -e

npm install -g @deepseek-ai/dsh
YOMI_API_KEY="sk-YOUR_KEY"
export YOMI_API_KEY

NODE_PATH="$(npm root -g)/@deepseek-ai/dsh/node_modules" node <<'NODE'
const fs = require('fs');
const os = require('os');
const path = require('path');
const yaml = require('js-yaml');

const home = process.env.DSH_HOME || path.join(os.homedir(), '.dsh');
const settingsPath = path.join(home, 'settings.yaml');
fs.mkdirSync(home, { recursive: true });

const current = fs.existsSync(settingsPath)
  ? (yaml.load(fs.readFileSync(settingsPath, 'utf8')) || {})
  : {};

if (fs.existsSync(settingsPath)) {
  fs.copyFileSync(settingsPath, settingsPath + '.bak.' + Date.now());
}

current['llm-pi-ai'] ??= {};
current['llm-pi-ai'].providers ??= {};
current['llm-pi-ai'].providers.yomiapi = {
  displayName: 'Yomi API',
  apiKeyEnv: 'YOMI_API_KEY',
  api: 'openai-completions',
  baseURL: 'https://api.yomiapi.com/v1',
  models: [
    { id: 'deepseek-v4-pro', name: 'DeepSeek V4 Pro' },
    { id: 'deepseek-v4-flash', name: 'DeepSeek V4 Flash' },
    { id: 'gpt-5.6-sol', name: 'GPT 5.6 Sol' },
    { id: 'gpt-5.6-luna', name: 'GPT 5.6 Luna' },
    { id: 'gpt-5.6-terra', name: 'GPT 5.6 Terra' },
    { id: 'gpt-5.5', name: 'GPT 5.5' },
    { id: 'gpt-5.4', name: 'GPT 5.4' },
    { id: 'kimi-k3', name: 'Kimi K3' },
    { id: 'glm-5.2', name: 'GLM 5.2' },
  ],
};
current['agent-default-model'] = {
  provider: 'yomiapi',
  model: 'deepseek-v4-pro',
};

fs.writeFileSync(
  settingsPath,
  yaml.dump(current, { lineWidth: -1, noRefs: true }),
  { mode: 0o600 },
);

const envPath = path.join(home, '.env');
const oldLines = fs.existsSync(envPath)
  ? fs.readFileSync(envPath, 'utf8').split(/\r?\n/)
  : [];
const lines = oldLines.filter(
  (line) => line && !line.startsWith('YOMI_API_KEY='),
);
lines.push('YOMI_API_KEY=' + process.env.YOMI_API_KEY);
fs.writeFileSync(envPath, lines.join('\n') + '\n', { mode: 0o600 });

console.log('Yomi API configured. Default model: deepseek-v4-pro');
NODE

dsh web
YOMI_SETUP

Windows PowerShell

Run the equivalent script in PowerShell:

npm install -g @deepseek-ai/dsh

$env:YOMI_API_KEY = 'sk-YOUR_KEY'
$env:NODE_PATH = "$(npm root -g)\@deepseek-ai\dsh\node_modules"

@'
const fs = require('fs');
const os = require('os');
const path = require('path');
const yaml = require('js-yaml');

const home = process.env.DSH_HOME || path.join(os.homedir(), '.dsh');
const settingsPath = path.join(home, 'settings.yaml');
fs.mkdirSync(home, { recursive: true });

const current = fs.existsSync(settingsPath)
  ? (yaml.load(fs.readFileSync(settingsPath, 'utf8')) || {})
  : {};

if (fs.existsSync(settingsPath)) {
  fs.copyFileSync(settingsPath, settingsPath + '.bak.' + Date.now());
}

current['llm-pi-ai'] ??= {};
current['llm-pi-ai'].providers ??= {};
current['llm-pi-ai'].providers.yomiapi = {
  displayName: 'Yomi API',
  apiKeyEnv: 'YOMI_API_KEY',
  api: 'openai-completions',
  baseURL: 'https://api.yomiapi.com/v1',
  models: [
    { id: 'deepseek-v4-pro', name: 'DeepSeek V4 Pro' },
    { id: 'deepseek-v4-flash', name: 'DeepSeek V4 Flash' },
    { id: 'gpt-5.6-sol', name: 'GPT 5.6 Sol' },
    { id: 'gpt-5.6-luna', name: 'GPT 5.6 Luna' },
    { id: 'gpt-5.6-terra', name: 'GPT 5.6 Terra' },
    { id: 'gpt-5.5', name: 'GPT 5.5' },
    { id: 'gpt-5.4', name: 'GPT 5.4' },
    { id: 'kimi-k3', name: 'Kimi K3' },
    { id: 'glm-5.2', name: 'GLM 5.2' },
  ],
};
current['agent-default-model'] = {
  provider: 'yomiapi',
  model: 'deepseek-v4-pro',
};

fs.writeFileSync(
  settingsPath,
  yaml.dump(current, { lineWidth: -1, noRefs: true }),
  { mode: 0o600 },
);

const envPath = path.join(home, '.env');
const oldLines = fs.existsSync(envPath)
  ? fs.readFileSync(envPath, 'utf8').split(/\r?\n/)
  : [];
const lines = oldLines.filter(
  (line) => line && !line.startsWith('YOMI_API_KEY='),
);
lines.push('YOMI_API_KEY=' + process.env.YOMI_API_KEY);
fs.writeFileSync(envPath, lines.join('\n') + '\n', { mode: 0o600 });

console.log('Yomi API configured. Default model: deepseek-v4-pro');
'@ | node

if ($LASTEXITCODE -eq 0) {
  dsh web
}

When the script finishes, the terminal displays a local address (usually http://127.0.0.1:3080). Open it in your browser and create a session. For later use, change to your project directory and run dsh web.

Verify the connection

export YOMI_API_KEY="sk-YOUR_KEY"
dsh --profile headless "Reply with OK only"

An OK response confirms that dsh has successfully called the model through Yomi API.

Manual configuration and switching models

You can also edit ~/.dsh/settings.yaml manually. Complete example:

llm-pi-ai:
  providers:
    yomiapi:
      displayName: Yomi API
      apiKeyEnv: YOMI_API_KEY
      api: openai-completions
      baseURL: https://api.yomiapi.com/v1
      models:
        - id: deepseek-v4-pro
          name: DeepSeek V4 Pro
        - id: deepseek-v4-flash
          name: DeepSeek V4 Flash
        - id: gpt-5.6-sol
          name: GPT 5.6 Sol
        - id: gpt-5.6-luna
          name: GPT 5.6 Luna
        - id: gpt-5.6-terra
          name: GPT 5.6 Terra
        - id: gpt-5.5
          name: GPT 5.5
        - id: gpt-5.4
          name: GPT 5.4
        - id: kimi-k3
          name: Kimi K3
        - id: glm-5.2
          name: GLM 5.2

agent-default-model:
  provider: yomiapi
  model: deepseek-v4-pro

Change agent-default-model.model to switch the default model. Existing sessions may keep their original model; refresh the page and start a new session after editing. You can also switch manually using the session's model selector. The catalog is continually updated; use Models (the Model Catalog) in the console or the following command as your reference:

curl https://api.yomiapi.com/v1/models -H "Authorization: Bearer sk-YOUR_KEY"
The recommended default model is deepseek-v4-pro (the new official flagship released on August 13). For faster, cheaper calls, use deepseek-v4-flash. The gpt-5.6 series, Kimi K3 and GLM 5.2 work with the same configuration.

Troubleshooting

401 / invalid_bearer_token

Check that the key is complete, contains no extra spaces, starts with sk- and has not been deleted in the console. If the error persists, create a new key.

dsh command not found

Reopen the terminal. If that does not help, check that npm's global bin directory is on PATH (npm bin -g).

node --version does not start with v24

dsh requires Node.js 24. Install it and try again.