Installing 3 plugins: one clean, one warning, one failure
We installed three community plugins into the web profile
(~/.dsh/profiles/web) using the official CLI via npx. Three plugins, three different
outcomes — which is exactly why install logs matter more than star counts in a two-day-old ecosystem.
№1 · titanwings/dsh-automation — clean install ✅
$ npx @deepseek-ai/dsh plugin --profile web add github:titanwings/dsh-automation#v0.1.5
dependencies:
+ @dsh-external/dsh-automation github:titanwings/dsh-automation#v0.1.5
Packages: +3
Progress: resolved 3, reused 0, downloaded 3, added 3, done
Done in 24.5s using pnpm v10.30.3
The best-behaved install of the day: pinned to a version tag, resolved in 24.5 seconds, registered
correctly. Afterwards, dsh plugin --profile web list showed it as a production
dependency of the profile. Desk-read of the README (not a run test): RRULE-normalized schedules,
fresh root Agent + Session per dispatch, durable run history with revision snapshots, Web UI tab.
External push notifications are explicitly out of scope.
№2 · dsh-web-ui — installed, but as a plain dependency ⚠️
$ npx @deepseek-ai/dsh plugin --profile web add github:dsh-external/dsh-web-ui
Packages: +1
Progress: resolved 4, reused 1, downloaded 1, added 1, done
Done in 3m 2.8s using pnpm v10.30.3
dsh: warning: dsh-web-ui declares no dsh.bundle — installed as a plain
dependency, not a profile layer (a later update that gains one activates
it automatically) dsh.bundle, the package installs but
never becomes a profile layer — i.e. it silently does nothing until upstream adds a bundle
manifest. If a plugin "installs fine" but has no effect, check for this warning before
anything else. Also note the 3-minute fetch on first download versus 24.5s for №1.
№3 · dsh-feishu-notify — failed twice ❌
Attempt 1 — pnpm blocked the git-hosted package's prepare script:
dsh: pnpm failed in profile directory /Users/mac/.dsh/profiles/web
dsh: git-hosted plugins build on install via their prepare script, which
pnpm blocks until allowed — add the exact key pnpm printed above under
allowBuilds in /Users/mac/.dsh/profiles/web/pnpm-workspace.yaml, then re-run Attempt 2 — after retrying, resolution went over SSH and died on auth:
ERROR Command failed with exit code 128: git ls-remote
git+ssh://git@github.com/dsh-external/dsh-feishu-notify.git HEAD HEAD^
git@github.com: Permission denied (publickey).
pnpm: Command failed with exit code 128
dsh: pnpm failed in profile directory /Users/mac/.dsh/profiles/web allowBuilds and rewriting SSH→HTTPS are both
fixable, but a two-day-old notify plugin that needs them isn't worth the attack surface on a
daily-driver machine). Additionally, the repo 404s via the GitHub API as of 2026-08-14 —
we keep it listed as a cautionary entry. Failed installs are data, not embarrassment.
Post-install state
$ npx @deepseek-ai/dsh plugin --profile web list
dsh-profile-web /Users/mac/.dsh/profiles/web (PRIVATE)
│
│ dependencies:
├── @dsh-external/dsh-automation@0.1.5
└── dsh-web-ui@0.1.1
2 packages
Two of three plugins registered. dsh-automation is ready to configure;
dsh-web-ui sits inert pending an upstream bundle declaration;
dsh-feishu-notify is not installed.
Takeaways for plugin authors
- Pin releases to version tags — the #1 contributor to our clean install was
#v0.1.5instead of a floating HEAD. - Declare
dsh.bundleor your plugin installs into limbo. - If your package needs a build script, document the
allowBuildskey in your README — the CLI error tells users what to do, but most won't persist past attempt 1. - IM-notify plugins asking for machine-level config changes face a high trust bar. Ship a no-build path if you can.
Environment: macOS 15 (darwin 24.6.0, arm64), Node v22.22.3, pnpm 10.30.3 via corepack,
DSH CLI via npx -y @deepseek-ai/dsh. Session date 2026-08-14. Logs lightly
truncated for width; content unedited.