Back to home@lyuwen

dsh-as-service

Running DSH as a service on the background

Stars
0
Language
Shell
Created
Aug 26, 2026
Updated
Aug 26, 2026

Introduction

dsh-web systemd user service

Run the DeepSeek Harness Web UI (dsh web) as a systemd user service, so it starts on login, restarts on failure, and logs to the journal.

Requirements

  • dsh on your PATH (e.g. npm install -g @deepseek-ai/dsh)
  • systemd with user services (standard on most Linux distros)

Install

./install.sh

The script:

  1. Resolves your real dsh path with command -v dsh (with fallbacks to common install locations such as ~/.npm-global/bin/dsh when it is not on the current PATH, e.g. in non-login shells).
  2. Renders dsh-web.service with that path and writes it to ~/.config/systemd/user/dsh-web.service.
  3. Runs systemctl --user daemon-reload and systemctl --user enable --now dsh-web.

You can then manage it like any user service:

systemctl --user status dsh-web
systemctl --user restart dsh-web
journalctl --user -u dsh-web -f

Keeping it running after logout

User services normally stop when you log out. To keep dsh-web running in the background:

loginctl enable-linger "$USER"

Manual install (no script)

Copy dsh-web.service to ~/.config/systemd/user/, then replace the ExecStart=/path/to/dsh web line with the output of command -v dsh, e.g.:

ExecStart=/home/you/.npm-global/bin/dsh web

Then:

systemctl --user daemon-reload
systemctl --user enable --now dsh-web

Environment variables

If the web profile needs env vars (API keys, etc.), create a file and uncomment the EnvironmentFile= line in the unit:

mkdir -p ~/.config/dsh
cat > ~/.config/dsh/env <<'EOF'
SOME_API_KEY=...
EOF
systemctl --user daemon-reload
systemctl --user restart dsh-web

Uninstall

./install.sh --uninstall