Runs headless-style tasks through the live dsh web process (POST /x/headless + GET status + SSE events) so CLI-invoked sessions appear in the Web UI in real time.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:JohnXu22786/dsh-web-submit
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
DeepSeek Harness plugin that lets you drive the running dsh web instance
from the command line — the task executes inside the web process, so the Web
UI shows it live (same sessions store, same event stream), and permission /
approval questions appear in the Web UI.
No separate headless process, no webhook glue: one plugin, three endpoints.
Endpoints
| Method | Path | Description |
|---|---|---|
POST |
/x/headless |
{"task": "...", "cwd": "...", "preset": "standard", "mode": "queue"} → {"ok": true, "sessionId": "session-..."} |
GET |
/x/headless/status?sessionId=... |
Latest session events (non-streaming poll) |
GET |
/x/headless/events?sessionId=... |
SSE live event stream; ends after turn/end |
Loopback requests only (127.0.0.1 / localhost), same trust posture as the
built-in /api surface. The plugin reuses the in-process ApiProxyService,
so it stays identical to the UI's own session/prompt path.
Install
dsh plugin --profile web add file:C:/dsh-web-submit
The bundle patch rule (cordis.patch.yml) is applied automatically by dsh plugin add, so no manual edit to the host profile is needed.
Restart dsh web (~/.dsh/start-web.cmd) to load the plugin.
Example (CLI)
# submit a task
curl -s -X POST http://127.0.0.1:3080/x/headless \
-H 'content-type: application/json' \
-d '{"task":"Summarize the README","cwd":"C:/my/project","preset":"coding"}'
# tail it live
curl -sN "http://127.0.0.1:3080/x/headless/events?sessionId=session-xxx"
While it runs, open the Web UI: the session is visible in real time, exactly as if you had typed the task there.
Config
| Key | Default | Meaning |
|---|---|---|
routePrefix |
/x |
Route prefix for all endpoints |
maxBodyBytes |
1048576 |
Max request body size |
License
MIT
Links
More in this category
Tencent/WeKnora#dsh-weknora★ 21028
Four read-only tools over a WeKnora knowledge base: list knowledge bases, hybrid passage search, reassemble one document's chunks in order, and WeKnora's own cited RAG or ReAct-agent answer with a resumable session id.
superdesigndev/treg★ 709
Tool catalog for agents: search ~2,600 external endpoints (SEO and SERP, backlinks, social, people and company enrichment, ad libraries, scraping) by the task you want done, read each one's parameters and per-call price, then call it with the credential injected server-side. Ships the skill plus an MCP row that stays disabled until TREG_TOKEN is set.
anysearch-team/anysearch-dsh★ 377
AnySearch-powered real-time web and vertical search provider for DeepSeek Harness.
EthanYoQ/Invoice-Downloader#dsh-invoice-downloader★ 285
Local IMAP invoice download, OCR, archive, and Excel reimbursement summaries for DeepSeek Harness.
omdsh-dev/dsh-data-agent★ 183
Let the AI connect to databases and write SQL for you.
zhaoolee/notes#dsh-plugin★ 155
Export DSH conversations as Smartisan Notes-style PNGs, or create and update Markdown notes in a configured account-scoped workspace.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.