🗑️ The original repository has been deleted or made private. This page is an archival snapshot from indexing time; the install command may no longer work.
Install verification: Ecosystem app: not installed via dsh plugin add, so the L1-L5 plugin install-verification ladder does not apply; the security scan still runs.Install verification details →
What it doesAI
Desktop client shell that brings DeepSeek Harness into a native window, auto-starting the local DSH service and opening its web UI.
- Native window shell around local DSH web UI
- Auto-starts the DSH service if not running
- One-click exe; no browser tabs or command-line window
Capability tags are AI-inferred or rule-extracted from the README (see badge) — vocabulary-limited, not install-verified. AI = inferred; README = literal keyword from the readme.
Installation
Ecosystem apps are not installable via dsh plugin add: desktop / web shells install or deploy through their own release channel (GitHub Releases or the project site).
The level reads L5 · Ecosystem plugin / L5 · Ecosystem app per the three-way classification (the L1-L5 ladder does not rate them); the security scan still runs.
Verification & Compatibility◼ Ecosystem app
Grouped by plugin version: each card lists the dsh versions actually tested against that artifact version and their install verdicts (L5 wins). Untested combinations are omitted — absence means untested, never assumed compatible. L1–L3 are a plugin-level static archive (independent of the dsh version — the same verdict on every dsh row): they sit in each row's level grid next to L4/L5, marked "static", while their evidence is stored once per plugin inside that row's "checks & evidence" instead of being duplicated per version.
External credentials (plugin-level): none detected
| plugin \ dsh | dsh 0.1.5-rc.2 | dsh 0.1.3-alpha.2 |
|---|---|---|
| V1.1.0 | ◼ | ◼ |
V1.1.0github◼ 2 ecosystem app2026-09-11
https://github.com/Ary66101/dsh-desktop
◼dsh 0.1.5-rc.22026-09-11Ecosystem app
- • Node.js: v24.14.0
- • DSH: 0.1.5-rc.2
- • Plugin artifact: github · https://github.com/Ary66101/dsh-desktop#V1.1.0
ID: dsh-desktop-111@V1.1.0@dsh0.1.5-rc.2 · profile: l4-sandbox
Issued: 2026-09-11 · expires: 2026-09-18
View checks & evidence
not present in web-profile loader inventory
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
◼dsh 0.1.3-alpha.22026-09-09Ecosystem app
- • Node.js: v24.14.0
- • DSH: 0.1.3-alpha.2
- • Plugin artifact: github · https://github.com/Ary66101/dsh-desktop#V1.1.0
ID: dsh-desktop-111@V1.1.0@dsh0.1.3-alpha.2 · profile: l4-sandbox
Issued: 2026-09-09 · expires: 2026-09-16
View checks & evidence
not present in web-profile loader inventory
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
Author badges
Embed the official badges in your README to showcase security & install-test status:
`[](https://www.dsh.so/artifact/dsh-desktop-111/)`Security Report
Two automated layers, neither a manual review: a static scan (per-plugin rule checks) and a model-driven dynamic security audit that covers only the subset static-flagged at warn or above and never executes plugin code.
Static low; dynamic medium (authoritative when present) → overall medium.
—V1.1.0git2026-10-07V1.1.0same versionclean · gitVet is an AST static scan (npm artifact or git source).
show static findings (6)
- criticalspawnShell · shell
dsh-desktop/main.js:79serverChild = spawn(spawnCmd, { shell: true, windowsHide: true, stdio: 'ignore' }); - warningshellExec · shell
dsh-desktop/main.js:93execFileSync('taskkill', ['/F', '/T', '/PID', String(serverChild.pid)], { stdio: 'ignore' }); - warningnetIp · network
dsh-desktop/main.js:25const SERVER_URL = process.env.DSH_URL || 'http://127.0.0.1:3080'; - warningfsWrite · files
dsh-desktop/main.js:15fs.appendFileSync( - warningfsWrite · files
dsh-desktop/main.js:171fs.writeFileSync(settingsFile(), JSON.stringify({ closeBehavior: v }, null, 2)); - warningfsWrite · files
dsh-desktop/main.js:223try { fs.appendFileSync(logFile(), '[did-start-loading] ' + new Date().toISOString() + '\n'); } catch (_) {}
show 3 audit findings
- mediumshell.openExternal called on unvalidated URLs from window.open and navigation, allowing protocol-handler abuse
dsh-desktop/main.js:228Any link/window.open issued by the rendered page (DSH UI content such as model output or a remote page when DSH_URL is overridden) is handed to ShellExecute with no scheme allowlist: the same pattern is also used in the will-navigate handler (line 239). URLs such as ms-msdt:, search-ms:, smb:// or other registered handlers can launch local programs/OS features on the user's machine; the page never needs Node access, only a click.
- mediumUndocumented DSH_SPAWN environment variable is executed verbatim through spawn(..., { shell: true })
dsh-desktop/main.js:74The whole command string is passed to cmd.exe via shell:true. Anyone able to influence the process environment (launcher script, shortcut, wrapper tooling or another component that sets env for children) can set DSH_SPAWN to an arbitrary command and get it executed with the user's privileges, silently and with stdio ignored. The resolved `dsh` path from PATH is also concatenated unquoted, so a PATH entry containing shell metacharacters/spaces alters the executed command line.
- lowDSH_URL override makes the navigation allowlist self-referential, loading any remote origin in the app window
dsh-desktop/main.js:25The only navigation guard (line 236) compares against an origin derived from the same attacker-influenceable value; setting DSH_URL to an external site makes that site the trusted origin, so it is rendered inside the trusted-looking desktop window. Node is not exposed (sandbox, no preload), so impact is limited to content/phishing and feeding the shell.openExternal path, not code execution.
Sandboxed Electron wrapper: remote content cannot reach Node, but shell.openExternal has no protocol allowlist and DSH_SPAWN/DSH_URL env overrides are risky.
Rule (2026-10-24): when a dynamic conclusion exists it is authoritative (it may raise or lower the level); without one, the static/vet fused tier applies. The audit never writes the exemption list (exemptions are manual only); a wrong conclusion is withdrawn by human review and the tier falls back to static/vet.
Disclaimer: the static scan and the dynamic security audit are both automated analysis, not a security guarantee. Always review what you install.
Activity
Last commit 2026-09-03 · activity: Stable
• Repo created: 2026-09-08
• Stars: ★ 1 · Forks: 0
• Health: Stable — committed within 90 days
Source
GitHub: github.com/Ary66101/dsh-desktop
Author README
View on GitHub ↗The author's original README from the repository — fetched live, unedited (the English page loads the default README).
