DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins

@stellarie/dsh-session-bridge

Session Bridge

Drive DeepSeek Harness sessions from an MCP client through a token-guarded loopback bridge

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add @stellarie/dsh-session-bridge@0.1.0
READMECompatibilityVersions

Compatibility and provenance

Session Bridge is published as @stellarie/dsh-session-bridge and currently resolves to version 0.1.0. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
any
Release source
npm
Registry updated
10/21/2026

Versions

0.1.0stable
10/21/2026

Related plugins

Loading related plugins…

Latest
0.1.0
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
55.6 kB
Files
13
Surface
any
License
MIT
Source
npm
GitHub
★ 0
Weekly downloads
0
Last push
10/24/2026
View source ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue

Related plugins

More verified plugins in integrations-communication.

Acp App@deepseek-ai/dsh-acp-appThe dsh ACP profile bundle: automation-only JSON-RPC stdio and process lifecycle over dsh-baseRemote Web Ui@linxin666/dsh-remote-web-uiScan-to-pair remote access for the dsh web GUI that shares one official interface: a QR beside the settings button pairs phones and PCs into the same Web GUI (a portrait-touch adaptation layer for phones, full desktop on PCs) through one-time tokens and rRemote Bridge@linxin666/dsh-remote-bridgeDSH remote bridge: the host half serves protocol v1 over one exact /ios/v1 WebSocket route — session roster, history baseline, prompting, live turn increments with tool activity, interrupt, and in-process agent approval — to a device paired by a one-shot Ds Botds-botDS Bot: a team of long-lived Bots for DeepSeek Harness, with Main Bots, Bot-to-Bot messages and group chats

README

♡ dsh-session-bridge ♡

Let your MCP client talk to DeepSeek Harness sessions~

English · 简体中文 · 繁體中文

@stellarie/dsh-session-bridge (≧∀≦)

Unofficial. This project has no tie to DeepSeek. It targets DeepSeek Harness 0.2.1-rc.2.

What is this?

DeepSeek Harness (DSH) is a desktop agent app. This package lets another agent drive it.

You get two small parts:

  • A host plugin. It runs inside the DSH app. It serves a token-guarded loopback HTTP bridge.
  • A stdio MCP server. Your MCP client (Claude Code, for example) starts it. It talks to the bridge.

Your client opens a normal DSH session, sends it messages, waits for the reply, and reads it. The session shows in the app like any other session. You can watch it, or take it over, any time ♡

Architecture: an MCP client talks over stdio to dsh-session-bridge-mcp, which calls the session-bridge plugin in the DSH app over loopback HTTP with a bearer token. The plugin writes endpoint.json and the MCP server reads it on every call.

Requirements

  • DeepSeek Harness 0.2.1-rc.2, with a profile you can edit.
  • Node.js ^22.19.0 or >=24.0.0.
  • An MCP client that speaks stdio.

Install

1. Install the plugin

Use the dsh CLI. Replace default with the name of your profile.

dsh plugin --profile default add github:stellarie/dsh-session-bridge

The install builds the package from source, so it needs no separate build step.

Or edit the profile by hand. Add the package to the profile package.json. Then list it in the bundles, after @deepseek-ai/dsh-web-app.

{
  "dependencies": {
    "@stellarie/dsh-session-bridge": "github:stellarie/dsh-session-bridge"
  },
  "dsh": {
    "profile": {
      "bundles": [
        "@deepseek-ai/dsh-base",
        "@deepseek-ai/dsh-web-app",
        "@stellarie/dsh-session-bridge"
      ]
    }
  }
}

The package ships a cordis.patch.yml. It inserts the plugin row for you. Restart the app. The log shows session-bridge: serving http://127.0.0.1:…/session-bridge.

2. Register the MCP server

Point your MCP client at the copy inside the profile (<profile-dir> is your DSH profile directory):

claude mcp add dsh-session-bridge -- node <profile-dir>/node_modules/@stellarie/dsh-session-bridge/lib/mcp.js

Or run it from npm, with no profile install:

claude mcp add dsh-session-bridge -- npx -y -p @stellarie/dsh-session-bridge dsh-session-bridge-mcp

Any other MCP client works too. The command is dsh-session-bridge-mcp. The transport is stdio.

The MCP server reads the endpoint file on every call. An app restart needs no MCP restart.

Tools

ToolWhat it does
dsh_list_sessionsList sessions: id, title, preset, working directory, running or idle.
dsh_open_sessionOpen a session in cwd. Reuses the newest idle session with the same preset and cwd. Pass reuse: false for a new one.
dsh_sendSend a message. Mode queue runs after the current turn. Mode steer joins the running turn. Returns afterSeq.
dsh_waitWait until the session ends a turn after afterSeq. Default 600 s, maximum 600 s.
dsh_readRead your prompts and the assistant text after afterSeq. Tool calls and thinking are left out.
dsh_cancelInterrupt the running turn. Queued messages stay queued.

A typical round trip:

dsh_open_session { cwd: "C:/repo", preset: "my-preset" }  → { sessionId, reused }
dsh_send         { sessionId, text: "Fix the failing test" } → { accepted, afterSeq: 41 }
dsh_wait         { sessionId, afterSeq: 41 }               → { ended: true, lastSeq: 58 }
dsh_read         { sessionId, afterSeq: 41 }               → { messages: [ … ] }

dsh_open_session defaults preset to yuu, the author's own preset. Pass your own preset id. See BACKLOG 1.

How the bridge stays safe (`ω´)ゞ

The bridge gives full owner control of your sessions. Read this part, please.

Every request must pass these checks, in this order:

  1. No Origin header. Browser pages always send one, so they are refused.
  2. A loopback Host (127.0.0.1, localhost, or [::1]) with the server port.
  3. A bearer token, compared in constant time.
  4. POST only, with a JSON body of at most 1 MiB.
  5. A method on the allowlist: create, prompt, page, projections, list, cancel.

The token is 32 random bytes. The plugin mints a new one at each start. It writes endpoint.json (url, token, pid, startedAt) with mode 0600 (POSIX) and deletes it on shutdown.

  • Treat the endpoint file as a secret. Anyone who reads it can prompt your agents.
  • The bridge listens only where the DSH web server listens. It adds no port of its own.
  • The bridge speaks as the app owner. A prompt you send acts like a prompt you type in the app.

Configuration

SettingWhereDefault
endpointPathplugin config in cordis.patch.yml$DSH_HOME/session-bridge/endpoint.json
DSH_SESSION_BRIDGE_ENDPOINTenvironment of the MCP serverunset
DSH_HOMEenvironment~/.dsh

Set the same path on both sides when you move the file.

Develop

pnpm install
pnpm run typecheck
pnpm test
pnpm run build

The build writes lib/index.js (the plugin) and lib/mcp.js (the MCP server).

License

MIT © stellarie. Made with ♡ (๑˃ᴗ˂)ﻭ