EBADENGINE
EBADENGINE means the Node running npm is outside the range the package declares; for DSH that floor is Node.js 24.9.0.
npm often continues after this warning, which is why the failure shows up later as a syntax error.
The error, verbatim
npm prints EBADENGINE Unsupported engine with the required range and your current version.
Why it happens, most likely first
Node was installed long enough ago that the project floor moved past it.
A per-project .nvmrc or a shell default pins an older version than the global one, so npm install -g runs under the wrong Node.
A container image tagged node:lts from before the floor moved.
The fix
Check what you are on, then install the current LTS and re-install DSH.
node --version
npm install -g @deepseek-ai/dsh@latestIf that does not settle it
If node --version already shows 24.9.0 or newer, the shell is resolving a different npm: compare which npm with which node.
Inside a container, rebuild the image with node:24-slim or newer rather than mutating the running one.
Common questions
Does EBADENGINE block the install?
Not by default. npm warns and proceeds; the failure surfaces at boot, which is why the two look unrelated.
Is Node 22 close enough?
No. The floor is 24.9.0; 22 fails at start-up with a syntax error rather than a version message.