dsh-harness-autostart
A DeepSeek Harness plugin that makes the desktop app start with Windows, and gives you two ways to
control that startup entry: a switch in Settings → General, and a dsh_autostart tool the model
can call.
Windows only. On other platforms the switch renders disabled and the tool reports
unsupported-platform.
What it writes
The default (method: run-key) writes one string value under the current user's Run key, so it never
needs administrator rights:
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
DeepSeekHarness REG_SZ "D:\ProgramData\dsh\DeepSeek Harness.exe"
The executable path is detected, not hard-coded: DSH_DESKTOP_EXE if set, otherwise the current
process executable when it is not node.exe, otherwise the default install path. Set executable in
the config to override it.
method: startup-folder writes a launcher instead, at
%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\<entryName>.cmd — that is the way to get a
delay before the app opens.
Removing the plugin removes the startup entry. Nothing is left behind.
Install
From npm, through the plugin manager in DSH:
plugin_manager action=install_bundle target=dsh-harness-autostart
Or from a local checkout:
plugin_manager action=install_bundle target=<absolute path to this directory>
After it installs, Settings → General grows a row titled "Autostart", directly below
"Performance usage". The plugin entry id is dsh-autostart.
The switch
- The control is a
role="switch"button carryingaria-checked; tab to it, press space to toggle. - Toggling writes or deletes the startup entry immediately — no page reload, no model round trip.
- The row shows the live state, the write method, the entry name and the resolved executable path.
- Reading and toggling go through a same-origin
fetchto a local HTTP route the host half registers:GET /dsh-autostart-8f3c/status,POST .../enable,POST .../disable. All three return JSON. - The browser half lives in
client.jsand is declared bydsh.clientinpackage.json. It renders only; every registry and filesystem write stays inindex.js, the host half.
The tool
The plugin also registers one tool, dsh_autostart, with a single action parameter:
| action | effect |
|---|---|
status |
Current state, write method, entry name, resolved executable, and the value or file path actually present |
enable |
Writes the startup entry |
disable |
Deletes the startup entry |
Both surfaces call the same host functions, so they cannot disagree.
Configuration
Edit the config block of the dsh-autostart entry in cordis.patch.yml, then restart DSH.
| key | default | meaning |
|---|---|---|
autoEnable |
true |
Write the startup entry when the plugin loads. false registers the tool and the switch but leaves the system alone. |
method |
run-key |
run-key writes HKCU\...\CurrentVersion\Run (no admin needed); startup-folder writes a .cmd into the Startup folder. |
entryName |
DeepSeekHarness |
Name of the Run value, or the file name in the Startup folder. Sanitised to [A-Za-z0-9_.-]. |
executable |
'' |
Empty means auto-detect. |
args |
[] |
Extra arguments passed to the app. |
delaySeconds |
0 |
Wait this long after login before launching. Non-zero wraps the command in cmd /c start (Run key) or adds timeout to the .cmd. |
Uninstall
plugin_manager action=remove_bundle target=dsh-harness-autostart
Uninstalling deletes the startup entry. If something goes wrong, remove it by hand:
reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v DeepSeekHarness /f
Development
No build step. index.js is the host half, client.js is the browser half, both plain ESM that ship
as-is.
License
MIT
No comments yet. Be the first to write one.