🗑️ 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
A DeepSeek Harness plugin that controls Proxmox VE with API token and password authentication.
- Control Proxmox VE through API
- Supports API token and password authentication
- Designed as a plugin for DeepSeek Harness
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.2.0-rc.1 | dsh 0.1.7-rc.2 | dsh 0.1.7-rc.1 | dsh 0.1.7-alpha.2 | dsh 0.1.6-alpha.2 |
|---|---|---|---|---|---|
| 94c835 | ◼ | ◼ | ◼ | ◼ | ◼ |
94c835github✓ 1 runtime-verified◼ 8 ecosystem app2026-10-05
https://github.com/easyv-ai/dsh-pve
◼dsh 0.2.0-rc.12026-09-29Ecosystem app
- • Node.js: v24.14.0
- • DSH: 0.2.0-rc.1
- • Plugin artifact: github · https://github.com/easyv-ai/dsh-pve (version unstated)
ID: dsh-pve@94c835@dsh0.2.0-rc.1 · profile: l4-sandbox
Issued: 2026-09-29 · expires: 2026-10-06
View checks & evidence
This level was not executed in this scan.
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
◼dsh 0.1.7-rc.22026-09-28Ecosystem app
- • Node.js: v24.14.0
- • DSH: 0.1.7-rc.2
- • Plugin artifact: github · https://github.com/easyv-ai/dsh-pve (version unstated)
ID: dsh-pve@94c835@dsh0.1.7-rc.2 · profile: l4-sandbox
Issued: 2026-09-28 · expires: 2026-10-05
View checks & evidence
This level was not executed in this scan.
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
◼dsh 0.1.7-rc.12026-09-23Ecosystem app
- • Node.js: v24.14.0
- • DSH: 0.1.7-rc.1
- • Plugin artifact: github · https://github.com/easyv-ai/dsh-pve (version unstated)
ID: dsh-pve@94c835@dsh0.1.7-rc.1 · profile: l4-sandbox
Issued: 2026-09-23 · expires: 2026-09-30
View checks & evidence
This level was not executed in this scan.
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
◼dsh 0.1.7-alpha.22026-09-23Ecosystem app
- • Node.js: v24.14.0
- • DSH: 0.1.7-alpha.2
- • Plugin artifact: github · https://github.com/easyv-ai/dsh-pve (version unstated)
ID: dsh-pve@94c835@dsh0.1.7-alpha.2 · profile: l4-sandbox
Issued: 2026-09-23 · expires: 2026-09-30
View checks & evidence
This level was not executed in this scan.
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
◼dsh 0.1.6-alpha.22026-09-22Ecosystem app
- • Node.js: v24.14.0
- • DSH: 0.1.6-alpha.2
- • Plugin artifact: github · https://github.com/easyv-ai/dsh-pve (version unstated)
ID: dsh-pve@94c835@dsh0.1.6-alpha.2 · profile: l4-sandbox
Issued: 2026-09-22 · expires: 2026-09-29
View checks & evidence
This level was not executed in this scan.
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
◼dsh 0.1.6-alpha.12026-09-17Ecosystem app
- • Node.js: v24.14.0
- • DSH: 0.1.6-alpha.1
- • Plugin artifact: github · https://github.com/easyv-ai/dsh-pve (version unstated)
ID: dsh-pve@94c835@dsh0.1.6-alpha.1 · profile: l4-sandbox
Issued: 2026-09-17 · expires: 2026-09-24
View checks & evidence
This level was not executed in this scan.
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
◼dsh 0.1.5-rc.22026-09-13Ecosystem app
- • Node.js: v24.14.0
- • DSH: 0.1.5-rc.2
- • Plugin artifact: github · https://github.com/easyv-ai/dsh-pve (version unstated)
ID: dsh-pve@94c835@dsh0.1.5-rc.2 · profile: l4-sandbox
Issued: 2026-09-13 · expires: 2026-09-20
View checks & evidence
This level was not executed in this scan.
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-09L5 · runtime verified
- • Node.js: v24.14.0
- • DSH: 0.1.3-alpha.2
- • Plugin artifact: github · https://github.com/easyv-ai/dsh-pve (version unstated)
ID: dsh-pve@94c835@dsh0.1.3-alpha.2 · profile: l4-sandbox
Issued: 2026-09-09 · expires: 2026-09-16
View checks & evidence
active in loader tree (150 entries)
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
◼prehistory2026-10-05Ecosystem app
- • Node.js: v24.14.0
- • DSH: unknown
- • Plugin artifact: github · https://github.com/easyv-ai/dsh-pve (version unstated)
ID: dsh-pve@94c835@dshunknown · profile: l4-sandbox
Issued: 2026-10-05 · expires: 2026-10-12
View checks & evidence
This level was not executed in this scan.
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-pve/)``[](https://www.dsh.so/artifact/dsh-pve/)`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.
v0.1.0dsh manifest0.1.0git2026-10-070.1.0same versionclean · gitVet is an AST static scan (npm artifact or git source).
show static findings (1)
- criticalshellExec · shell
index.js:46- pve_vm_monitor (raw QEMU monitor), pve_vm_sendkey, pve_vm_agent exec (runs inside the guest).
show 4 audit findings
- mediumpve_storage_upload reads any local file path and uploads its content to the PVE host
index.js:2939The local path comes from the model's tool argument with no allowlist, extension or size restriction; the file is then multipart-uploaded to a storage the model can afterwards enumerate. If the conversation is steered by untrusted PVE content, secrets on the DSH host (e.g. ~/.ssh/id_rsa, shell/DSH config files) can be exfiltrated to the configured PVE server. The mandatory approval prompt mitigates this because it prints the local path, but the path is rendered as one field among many.
- lowpve_node_execute executes arbitrary argv as root on the hypervisor (approval-gated, by design)
index.js:2888Arbitrary commands can be run as root on the Proxmox node, but this is the documented purpose of an admin plugin tied to an existing root-level API token, and every call is intercepted by the tools/pre-execute hook (SPECIAL_WRITE_NAMES) which forces a native approval prompt showing the full argv. No bypass was found; risk is limited to blind approval after prompt injection.
- lowPlain HTTP base URLs are accepted, so token/password auth can be sent in cleartext
index.js:99In token mode the PVEAPIToken header (which contains the secret) and in password mode the login password plus the resulting PVEAuthCookie are sent over an unencrypted channel if the user configures an http:// URL. The client card validates and stores such URLs without warning; there is no reason to need http because allowInsecureTls already covers self-signed HTTPS hosts.
- lowMultipart filename is interpolated into the Content-Disposition header without CR/LF filtering
index.js:2947basename() removes directory components but keeps quotes and newlines, so a crafted filename can inject additional lines/parts into the multipart body sent to the PVE upload endpoint. Impact is limited (the request still requires approval and can only reach the upload endpoint), but the body structure is model-controlled.
Static 'critical' is refuted: hypervisor exec and destructive writes are behind a mandatory approval gate; residual risk is the approval-gated local-file read/upload in pve_storage_upload.
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-08 · activity: Stable
• Repo created: 2026-09-08
• Stars: ★ 0 · Forks: 0
• Health: Stable — committed within 90 days
Source
GitHub: github.com/easyv-ai/dsh-pve
Author README
View on GitHub ↗The author's original README from the repository — fetched live, unedited (the English page loads the default README).
