Install verification: runtime verified (L5) · tested on dsh 0.2.1-rc.2 · last checked Install verification details →
What it doesAI
Installs free MiMo v2.6 Flash and similar models in dsh with no login, signup, or API key required.
- Free, unlimited access to models like mimo-v2.6-flash-free
- No login, registration, or API key needed
- Drop-in dsh plugin: install and start using models
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
dsh plugin --profile web add github:zhangmaorongXL/dsh-xl-free-model#v1.4.2Install method: GitHub · runtime verified (L5)
Verification & Compatibility
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
○ The author declares no dsh version requirement — install is not blocked by version.
| plugin \ dsh | dsh 0.2.1-rc.2 current | dsh 0.2.1-alpha.4 |
|---|---|---|
| v1.4.2 | ✓ | ✓ |
v1.4.2github✓ 2 runtime-verified2026-10-19
https://github.com/zhangmaorongXL/dsh-xl-free-model
✓dsh 0.2.1-rc.2current2026-10-19L5 · runtime verified
- • Node.js: v24.14.0
- • DSH: 0.2.1-rc.2
- • Plugin artifact: github · https://github.com/zhangmaorongXL/dsh-xl-free-model#v1.4.2
ID: dsh-xl-free-model@v1.4.2@dsh0.2.1-rc.2 · profile: l4-sandbox
Issued: 2026-10-19 · expires: 2026-10-26
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.
✓dsh 0.2.1-alpha.42026-10-18L5 · runtime verified
- • Node.js: v24.14.0
- • DSH: 0.2.1-alpha.4
- • Plugin artifact: github · https://github.com/zhangmaorongXL/dsh-xl-free-model#v1.4.2
ID: dsh-xl-free-model@v1.4.2@dsh0.2.1-alpha.4 · profile: l3-fullscan
Issued: 2026-10-18 · expires: 2026-10-25
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.
Only the latest 3 published versions are shown; source-snapshot (commit hash) groups, unstated groups and older versions are omitted — the full archive stays in the data layer (snapshot/unstated groups appear only when a plugin has no published version).
Author badges
Embed the official badges in your README to showcase security & install-test status:
`[](https://www.dsh.so/artifact/dsh-xl-free-model/)``[](https://www.dsh.so/artifact/dsh-xl-free-model/)`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 high — stricter wins → overall high.
v1.4.2dsh manifestv1.4.2git2026-10-211.5.0version moved onclean · gitVet is an AST static scan (npm artifact or git source).
show static findings (12)
- warningnetIp · network
adapter.js:142const res = await fetch(`http://127.0.0.1:${this.port}/v1/models`, { - warningnetIp · network
adapter.js:207const res = await fetch(`http://127.0.0.1:${this.port}/v1/chat/completions`, { - warningnetIp · network
client.js:23const PROXY = "http://127.0.0.1:8787"; - warningchildProcess · code-exec
index.js:93const npm = spawn(npmCmd, ["install"], { - warningchildProcess · code-exec
index.js:132const tar = spawn("tar", ["-xzf", tarball, "-C", extractDir], { - warningchildProcess · code-exec
index.js:222child = spawn(process.execPath, [proxyMain], { - warningnetIp · network
index.js:45const res = await fetch(`http://127.0.0.1:${port}/health`, { - warningfsWrite · files
index.js:67fs.writeFileSync( - warningfsWrite · files
index.js:127fs.writeFileSync(tarball, buf); - warningchildProcess · code-exec
proxy.cjs:62const r = spawnSync( - warningchildProcess · code-exec
proxy.cjs:76const tl = spawnSync("tasklist", ["/FI", "IMAGENAME eq OpenCode.exe", "/FO", "CSV", "/NH"], { - warningchildProcess · code-exec
proxy.cjs:90const ns = spawnSync("netstat", ["-ano", "-p", "tcp"], {
show 5 audit findings
- highDownloads and executes an unverified third-party binary at plugin load
index.js:124apply() unconditionally calls ensureCliBinary() at load; when cli/node_modules/.../opencode.exe is absent the plugin fetches the tarball from registry.npmjs.org, extracts it with `tar`, copies opencode.exe into the plugin directory and later runs it via `spawn(CLI_PATH, ["serve", ...])` in proxy.cjs. There is no hash/signature verification and no user consent, so a compromised registry, MITM (no pinning beyond TLS) or a tampered tarball yields silent arbitrary code execution inside the user's dsh process context.
- mediumnpm fallback installs opencode-ai with a caret range and runs lifecycle scripts
index.js:70When the direct download fails, `spawn(npmCmd, ["install"], { cwd: CLI_DIR, shell: true })` runs without --ignore-scripts, and the dependency uses the caret range ^1.19.0. Any newly published minor version — including its postinstall scripts — is installed and later executed automatically, with the plugin's privileges, at the next plugin load.
- mediumPowerShell -ExecutionPolicy Bypass script scrapes OPENCODE_SERVER_PASSWORD from another process
proxy.cjs:62The proxy authenticates to the user's OpenCode desktop backend by reading that process's environment block (PEB) through peb_env.ps1, invoked with execution policy bypassed. The script itself was not available for review (not harvested), so a hidden code-evaluation-and-exfiltration-capable PowerShell path runs with the user's privileges; its only visible use is to obtain a credential that is otherwise meant to be private to OpenCode.
- mediumLoopback proxy uses wildcard CORS and disables auth entirely when no key is set
proxy.cjs:618All /v1/* responses and OPTIONS replies carry `access-control-allow-origin: *` (proxy.cjs line 608) and checkAuth() returns true whenever proxy.config.json has no apiKey, so /v1/chat/completions can be driven by any local process — and, subject to browser private-network rules/DNS rebinding, by web pages — against the user's OpenCode backend in the user's workspace (the proxy always sends `directory=<dsh cwd>`), consuming quota and using the user's authenticated free-tier session. /health is also unauthenticated and discloses the backend URL and CLI path.
- lowProxy API key hardcoded in the shipped browser bundle and shown in the settings UI
client.js:24The bearer token guarding the loopback proxy is a literal in a client bundle that ships to the browser and is also rendered in the settings page (`h("dd", null, API_KEY)`), so it is not a secret. Combined with the proxy's wildcard CORS it means the only barrier against local drive-by use of the proxy is a publicly readable constant; the same value is what proxy.config.json installs on every machine.
Plugin auto-downloads and executes an unverified third-party OpenCode binary, runs npm install with a caret range, scrapes another process's env secret via PowerShell, and exposes a CORS-open local proxy with an optional-auth and a client-b…
show full summary
Plugin auto-downloads and executes an unverified third-party OpenCode binary, runs npm install with a caret range, scrapes another process's env secret via PowerShell, and exposes a CORS-open local proxy with an optional-auth and a client-bundled key.
Rule: the dynamic audit can only raise risk, never lower it (raise-only, never an exemption); a wrong raise is withdrawn by human review and the tier falls back to the static verdict. Overall verdict = the stricter of the two layers.
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-10-21 · activity: Active
• Repo created: 2026-10-15
• Stars: ★ 0 · Forks: 0
• Health: Active — committed within last 30 days
Source
Author README
View on GitHub ↗The author's original README from the repository — fetched live, unedited (the English page loads the default README).
