Skip to content
MyDSHMy DSH Field Notes
中文
Independently maintained; not affiliated with DeepSeek. No association with mydsh.dev or other MyDSH sites.

Home/Getting started/Install & launch

Get dsh web running on Windows 11 and record the tokenised URL

First time opening the Web UI locally. Two things to settle: whether a 403 or 401 means the service died, and what that tokenised address in the terminal is for.

VerifiedVersion and environmentChecked 2026-11-14
Host version
0.1.2-alpha.5 (source checkout)
Node
22.22.2 (engines: ^22.19.0 || >=24.0.0)
OS
Windows 11
Checked
2026-11-14

Copyable command

dsh web

When dsh web starts it prints one line to the terminal that looks like this:

dsh web: http://127.0.0.1:3080/?token=cp0HyI6s8-uj9B-Meq2Kvmsq1BveDyX5FgAgAD09mP0
dsh web: opening the default browser; pass --no-open to disable

The part after ?token= is not decoration. Opening plain http://127.0.0.1:3080/ returns HTTP 401 with a body saying authentication required / reopen the URL printed by dsh web. That is not a dead port and not a crashed service — it is the browser-trust fence.

How to tell: run curl -sI http://127.0.0.1:3080/. A 401 means the process is alive and simply missing the token. Connection refused means the process really is gone.

Steps

  1. Check the node version against engines first. The source checkout wants ^22.19.0 || >=24.0.0; the 0.2.2 line on npm wants >=24.9.0. Different thresholds.
  2. Start it. A source checkout runs the TS entry and needs tsx preloaded; a global install is just dsh web.
  3. Copy the whole printed address, token included, into the browser. Do not retype it — the token mixes case and hyphens.
  4. It counts as working only when the UI opens, you send a message, and a reply comes back.
  5. Store the token in your own password manager. Never paste it into a public page or a chat log.

Start command for a source checkout (measured on this machine):

node --max-old-space-size=8192 --import tsx/esm apps/cli/src/bin.ts web

Start command after a global install:

dsh web

The token changes

Restart the process and you get a new token; the old URL dies immediately. So 'it opened yesterday and 401s today' is expected, not a broken config. Autostart scripts often pass --no-open, which means no browser window and the URL only lands in the log — look at the last line there.

tail -1 ~/.dsh/logs/dsh-web-autostart.log

The default port is 3080. If something else holds it, startup fails; either free it (netstat -ano | findstr :3080) or pass --port.

What counts as working

Check every line. All of them pass or the job is not done.

  • The UI opens — not a 401, not a 403
  • One message sent and a reply received
  • After a restart the old URL 401s and the new one works
  • A port conflict produces a readable error, not a silent failure

Where it fails

Symptom, cause, what to do — written in the order it actually happens.

SymptomCauseWhat to do
Plain 3080 returns 401 authentication requiredThe browser-trust fence wants the token; the service is fineCopy the full URL with ?token= from the terminal or log. Do not restart — a restart only rotates the token
Startup fails with EBADENGINENode is below what engines demands. The 0.2.2 line wants >=24.9.0Upgrade to node 24.9+, or install 0.2.1-rc.5 or older (that line declares no engines)
Port 3080 already in useA previous dsh web never exited, or another program holds the portnetstat -ano | findstr :3080 for the PID; only kill it if it is your own leftover, otherwise use --port

Sources

Verified means measured here. Compiled means every line carries a source.