DeepSeek Harness plugin

dsh-plugin-store-anjaymi

In-harness plugin store for the dsh web GUI: a curated catalog (awesome-dsh-plugin) plus GitHub `topic:dsh-plugin` discovery, rendered as a compact settings tab. Only bundles whose root manifest

Jump to install

Source facts

Repository
anjaymi/dsh-plugin-store
Latest update
Aug 15, 2026
Category
Plugin Markets & Managers
GitHub stars
0
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/anjaymi/dsh-plugin-store
Plugin: dsh-plugin-store-anjaymi
Author: anjaymi

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer3 files
README.mdSource · read only

dsh-plugin-store

An in-harness plugin store for the DeepSeek Harness (dsh) Web GUI (dsh web), surfaced as a compact 插件市场 / Plugin Store tab under Settings → Plugins.

It delivers a curated catalog plus live GitHub discovery, and lets you structurally verify and install a community plugin into the web profile without leaving the GUI.

---

What it does

  • Curated catalog from the awesome-dsh-plugin ecosystem (bundled snapshot, offline-first) plus

live GitHub topic:dsh-plugin discovery (top 30, no forks).

  • Structural verification: a repo is only installable when its **current root

package.json declares name, version and dsh.bundle.patch. Catalog/snapshot inclusion is not** verification — every entry loads verified: null and must pass live re-verification. On refresh, only the bounded topic:dsh-plugin batch is verified; curated entries are verified at install time.

  • Real GitHub star counts: stars shown are the real GitHub counts. Topic entries source

stargazers_count; for curated entries that ship null, the Host backs them up from the Shields badge (GET /api/dsh-plugin-store?method=stars&repos=...) and the client merges the real count into the first 120 visible cards in batches of 40. There is no local star ledger, no fabricated zero, and no client-side "star" toggle.

  • Install with a background FIFO op: installs queue single-file (one live child at a time),

and re-fetches the repo's root manifest at the queue head to re-verify dsh.bundle immediately before the real profile is touched. If it fails, the profile is left untouched.

  • Restart hint after a successful install: the plugin layer loads on the next dsh web restart.
  • Same-origin + per-process token gate: all mutating POSTs must be same-origin and carry a

per-process random token issued once via GET ?method=bootstrap. Body size is capped at 8 KB.

Install

From a terminal, point DSH at this package and add it to the web profile:

# from a git checkout of this repo
dsh plugin --profile web add github:anjaymi/dsh-plugin-store

or directly by the GitHub spec after pushing this repository:

dsh plugin --profile web add github:anjaymi/dsh-plugin-store

Then restart the Web GUI:

dsh web

The 插件市场 / Plugin Store tab appears under Settings → Plugins.

> dsh forwards add to pnpm in the profile directory and mounts the bundle automatically when the > package declares dsh.bundle.patch. If pnpm asks to build a git source, add the printed key under > allowBuilds in profiles/web/pnpm-workspace.yaml and re-run.

Using the store

ControlEffect
Searchfilters by repo or description
全部 / 精选 / 新发现 / 结构已验证 / 已安装filter tabs (All / Curated / Newly discovered / Structurally verified / Installed)
分类 (category)filter by category
☆ (star count)real GitHub star count — curated entries with null are back-filled from the Shields badge in batches of 40 (never a fabricated 0)
GitHubopen the repository
校验并安装 / 安装verify-and-install (unverified) or install (verified); the Host performs the final gate
task panellive status/output of the running/pending install op; kill or dismiss
  • A card labelled 校验并安装 means the entry is not yet structurally verified — install is

still allowed, and the Host will refuse it at the queue head if the live root manifest lacks dsh.bundle. The button is not disabled: the Host is the authority.

  • Uninstalling is out of scope for v0.1.

Configuration

  • GITHUB_TOKEN (optional, recommended): set in the environment before launching dsh web to

raise the GitHub search rate limit and avoid 403s during 刷新目录 (Refresh).

  • Profile: installs always target the web profile ($DSH_HOME/profiles/web).
  • Cache: refreshed catalogs are cached for 2 hours (catalog.json under your DSH home); a failed

refresh keeps the previous catalog rather than dropping it.

Security model

  • The HTTP route binds over the existing loopback web server (127.0.0.1); --host 0.0.0.0 is

blocked by DSH unless DSH_PKG_ALLOW_LAN=1 is explicitly set.

  • Same-origin: POSTs require Origin host to equal the request Host.
  • Per-process token: GET ?method=bootstrap issues a random token; every mutating POST must send

it in the x-dsh-plugin-store-token header. Reads (list/stars) are safe without it.

  • Strict install spec: only owner/repo (optionally owner/repo#subpath) git specs are

accepted — never a binary or local path. The store refuses its own package.

  • Registry authority: a repo must already be present in the current catalog to be installable.
  • Head re-verification: install re-fetches the root manifest and requires name/version/

dsh.bundle before touching the profile. Nothing is ever written to the profile unless that gate passes.

  • Atomic writes for store-owned files: the store owns the on-disk catalog cache and the

pre-install profile backup; those go through @deepseek-ai/dsh-atomic-write (writeFileAtomic / withFileLock). The real profile package.json is not written by the store — it is reconciled by the official dsh plugin CLI which forwards to pnpm in the profile directory. The store never rewrites your cordis.yml or profile manifest directly.

  • No hardcoded install paths: $DSH_HOME is resolved via @deepseek-ai/dsh-home-paths

(resolveDshHome); the CLI is located from the launcher entry (process.argv[1] + process.execArgv) or the deployment's own bin, never from the client.

Development

npm install
npm test            # node:test — see tests/*.test.mjs
npm run pack:check  # npm pack --dry-run

Layout

lib/host.js                 # ESM Host: /api/dsh-plugin-store route, catalog, verify, install queue
lib/client.js               # browser bundle: window.__ModuleLoader__.load({id, factory(require)})
data/registry.snapshot.json # bundled curated + discovery snapshot (offline-first)
tests/*.test.mjs            # node:test suite
cordis.patch.yml            # bundle patch mounting the store
PRODUCT.md                  # product register, users, personality, anti-goals, WCAG AA
DESIGN.md                   # actual DSH tokens + the 18/14/12/11 type scale, 36/32, 8px, 138, no shadow

The client is a hand-written window.__ModuleLoader__.load CommonJS factory (no bundler is required); the Host composes it at /plugins/dsh-plugin-store/client.js. Its styling uses only DSH CSS tokens and inline SVG icons — see DESIGN.md.

License

MIT