Not documented officially, but community discussions (#1772/#49/#897) confirm that the node-pty native module has to be compiled locally on Linux: Debian needs build-essential, Arch needs base-devel, and g++ must support gnu++20 (GCC 10+)
status_warning
DeepSeek Harness is currently in _developer preview_ and is iterating rapidly. THERE WILL BE COMPATIBILITY-BREAKING CHANGES. (verbatim from the README)
Run directly with npx (the official README's first choice)
In the web UI, go to Settings -> Models, enter the API key (from https://platform.deepseek.com/ ) on the DeepSeek card and save; official wording: "The model route becomes usable immediately without restarting the server" (it takes effect on save, no restart needed)
api · key_storage
providers.md, verbatim: "Keys are write-only. The page receives a redacted descriptor after saving, never the literal secret. The key is stored in `$DSH_HOME/.credentials.yaml`"; model definitions are stored in $DSH_HOME/settings.yaml
api · catalog_providers
Anthropic
api · catalog_providers
OpenAI
api · catalog_providers
Bedrock
api · catalog_providers
Vertex
api · catalog_providers
Azure
api · catalog_providers
Codex
api · catalog_config
Add provider -> pick the vendor -> enter the API key -> save; Bedrock/Vertex/Azure/Codex use AWS credentials plus region, an ADC project, api-version, and OAuth respectively
api · env_var
Credentials can be injected through environment variables (the apiKeyEnv field in the configuration example, such as GATEWAY_API_KEY)
Add a custom provider: enter a Provider ID (lowercase, permanent), display name, base URL, API protocol, credentials, and at least one model; Fetch available models calls the OpenAI-compatible GET /models to pull the model list automatically, and for endpoints that do not support it you enter the model names by hand
local · ollama
ollama launch dsh runs everything locally in a single command, with the Ollama web search plugin preinstalled (Ollama's official wording)
(1) Settings -> Models, enter the DeepSeek API key -> (2) Choose workspace to pick a working directory (official wording: "The session composer remains unavailable until a workspace is selected") -> (3) open a session and send a task
dsh --profile headless "job" - official description: "Run one fresh persisted session, print the final answer, and exit"
terminal · profile
dsh --profile <name> - "Boot the named profile under $DSH_HOME/profiles/<name>"; the web and headless profiles are initialized from templates automatically on first use, while other profiles have to be created through dsh plugin
terminal · plugin_mgmt
dsh plugin --profile <name> <pnpm args> - forwards the pnpm arguments to the profile directory to manage plugins
A full-featured coding Agent with file editing, Shell, file and web search, Skills, plans, goals, subagents, and workflows.
modes · list · name_zh
PTC mode
modes · list · name_en
Code
modes · list · dir
code
modes · list · official_desc_zh
Everything standard mode can do, with tools surfaced through the Code Mode SDK so the model composes multi-step operations in a single TypeScript program.
modes · list · name_zh
Minimal mode
modes · list · name_en
Minimal
modes · list · dir
minimal
modes · list · official_desc_zh
A two-tool coding Agent offering only persistent bash and str_replace_editor.
modes · list · name_zh
Creation mode
modes · list · name_en
Creator
modes · list · dir
cordis
modes · list · official_desc_zh
For building custom Agent presets: everything standard mode can do, plus runtime inspection, plugin experimentation, and guidance on authoring presets.
modes · definition_location
Four directories under apps/cli/config/agent-presets/ (code/cordis/minimal/standard); the preset definition files are written in Chinese by the official team
Neither the README, apps/cli/README.md, nor the docs user guide provides an upgrade or uninstall command (checked one by one, ABSENT); community discussions mention clearing the npx cache (rm -rf ~/.npm/_npx, see #49/#897), but that is a troubleshooting step rather than an official upgrade procedure
Answered by the original poster (2026-08-16): build-essential was not installed on Debian, so the node-pty native module failed to compile; installing build-essential with apt made the install succeed
Top-voted fixes: (1) install the build tools with pacman -Syu base-devel; (2) switch to Bun: bun add --global @deepseek-ai/dsh (node-pty is on Bun's allowlist); (3) to stay on npm, clear the cache and let the build scripts through: rm -rf ~/.npm/_npx && npx --allow-scripts=node-pty @deepseek-ai/dsh@0.1.0-rc.6 web; another option: npm config set allow-scripts=@deepseek-ai/dsh-subprocess-local,koffi,node-pty,@google/genai,protobufjs --location=user
Community diagnosis: the system default g++ 9.4.0 does not support -std=gnu++20 (GCC 10+ required); the fix: clear the npx cache first, then run CC=gcc-11 CXX=g++-11 npm install -g @deepseek-ai/dsh followed by dsh web
Root cause: node-pty v1.1.0 has no prebuilt binary for Linux x64 (Node 24/ABI 137) and the npm install script fails silently; manual workaround: go into the node-pty directory and run npx node-gyp rebuild to produce the missing pty.node; no official response in the thread (0 replies)
No solution details captured (1 comment, not verified in depth); the symptom is related to pnpm's default security policy of ignoring dependency build scripts and can be cross-referenced with the allow-scripts approach in #49 - the fix for this entry is still to be filled in