One-click restart button for the DSH Web UI: a sidebar footer button that restarts the dsh web process with a single click and persists across the restart it triggers.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:1123762794/dsh-web-restart
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
One-click restart button for the DeepSeek Harness Web UI.
Adds a small circular restart button (↻) to the sidebar footer, next to Settings. A single click immediately restarts the dsh web process — the page disconnects for ~15–20 seconds, then you refresh and everything is back (sessions are persisted on disk and recover automatically). The button is persistent: it survives the restart it triggers.
Windows-specific: the restart launches
dsh webthrough an independent hidden PowerShell process, so the script keeps running after the harness process is killed.
Features
- Single-click restart — no confirmation step, no double-click dance.
- Persistent: survives the DSH restart it triggers (installed as a bundle-layer plugin, not a dynamic session plugin).
- Small footprint: sits beside the Settings trigger in the sidebar footer; icon-only in the 56px rail, icon + label in the wide sidebar.
- In-flight feedback: the button turns red and shows "重启中…" → "已触发" while the request is being processed.
- Re-entry guard: a second click while a restart is already in flight is rejected.
- Online status dot: the button also shows DSH liveness — a green dot polls
GET /dsh-healthevery 5s (red when the harness is unreachable/restarting).
Install
From GitHub (this repo)
dsh plugin --profile web add github:YOUR_OWNER/dsh-web-restart
Then restart dsh web once so the bundle layer loads.
Manual (edit profile files)
- Add the dependency:
// ~/.dsh/profiles/web/package.json
{
"dependencies": {
"dsh-web-restart": "github:YOUR_OWNER/dsh-web-restart"
}
}
- Add the plugin row (this repo ships its own
cordis.patch.yml— either merge its row into your profile'scordis.patch.yml, or install via thedsh plugincommand above which does it for you):
# ~/.dsh/profiles/web/cordis.patch.yml
- insert:
- id: dsh-web-restart
name: dsh-web-restart
pnpm installin the profile directory, then restartdsh web.
How it works
| Layer | File | What it does |
|---|---|---|
| Host | lib/index.js |
Registers an exact POST /restart-dsh route on the webServer; launches the restart script as an independent hidden PowerShell under danger-full-access sandbox policy |
| Client | lib/client.js |
Registers the sidebar footer button (slot sidebar.footer.action); single click fetches POST /restart-dsh; polls GET /dsh-health every 5s for the status dot |
| Bundle | cordis.patch.yml |
The loader row that mounts both halves |
The host routes return before the restart happens (~1s host timer + 3s inner sleep), giving the browser time to render the "restarting" state before the page drops.
Why not ctx.timeout in the route handler
ctx.timeout is a Cordis mixin backed by ctx.effect(), which is scoped to the Cordis fiber lifecycle. A webServer route handler runs as a plain Node HTTP callback — outside any fiber — so ctx.effect-registered timers are silently dropped and the restart never fires. This plugin uses Node's native setTimeout in the handler instead.
Compatibility
- DeepSeek Harness
0.1.0-rc.6(web profile). - The restart script path (
D:\1\dsh-web-host.ps1) is hard-coded for this author's machine — fork and adjust it (or replace the command inlib/index.js) for your own environment. Contributions to make this configurable are welcome.
Development
The client bundle is hand-written in the exact wire format (window.__ModuleLoader__.load({ id, factory })), so no build step is required:
node --check lib/index.js
node --check lib/client.js
License
MIT
Links
More in this category
yjh051108/dsh-routing-suite★ 7003
One repository, three parts: a runtime injector for DSH plugin packages (inject, hot-reload, unload, promote a dev staging tool to the front, route self-heal, plus a settings-page plugin manager that lists, unloads and drags folders in to internalize), a task-aware reasoning-mode router agent preset (router-standard / router-spec / router-react), and a graded two-level task protocol whose six tools (commit_star, lock_stage, revise_do, edit_plan, mark_task, redteam_verdict) pin task state to disk. The injector implementation ships in-tree, so the install carries its own behaviour rather than a dependency list.
strukto-ai/mirage#dsh★ 3666
Swaps the filesystem and bash providers for a mirage virtual workspace: file tools and shell commands run over mounted resources (RAM, S3, Redis, Slack, Gmail, Notion, Postgres) instead of the host disk, with per-mount read/write/exec modes, per-command sandbox routing (monty, pyodide, quickjs in process; docker, e2b, daytona remote), and installed CLIs (git, gh, slack, linear, ntn, gws, or one you register) as head words in the virtual terminal.
hust-open-atom-club/oh-dsh★ 325
Community distribution: TUI, desktop, and Web UI as one bundle with layered installation.
weijiafu14/pi2dsh★ 206
Pi Host ABI compatibility engine: after one install, unmodified Pi extensions from npm mount as native DSH plugins with `dsh plugin add <pi-package>`. Verified end to end on stock DSH with pi-mcp-adapter (full MCP manager: OAuth, resources, prompts, MCP Apps, elicitation, sampling), @tintinweb/pi-subagents, pi-code, pi-hermes-memory and pi-background-tasks; `pi2dsh inspect` reports a package's compatibility before installing.
lire1131/dsh-undo-savepoint★ 166
Undo/redo & rollback system for DSH: every config change is auto-snapshotted; undo/redo/restore to any version from the WebUI or the offline CLI/GUI tools (works even when DSH fails to boot).
Fishquito7/dsh-skill-mcp-panel★ 155
Manages DSH skills and MCP servers from the web settings: skill cards with hot enable/disable, workspace scopes, groups, batch migration and drag-and-drop import, plus stdio/HTTP MCP CRUD with connection tests, secret redaction and the unified dsh-panel CLI.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.