DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

dsh-plugins-cn /

dsh-plugins-cn/dsh-remote-deck

Verified

SSH workspaces for DeepSeek Harness: multi-host connections, remote workspaces, terminal, port forwarding.

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHubProject homepage
READMESource: main@5c7b790c

Remote Deck

SSH workspaces for DeepSeek Harness — one window, local and remote conversations side by side.

Remote Deck connects your DSH desktop app to any number of SSH machines and turns a remote folder into an ordinary DSH workspace. Inside that workspace the agent reads, writes, searches, runs commands, opens a terminal and forwards ports on the remote host — while the UI stays the same window you already use.

  • Conversation first. A compact status chip, a few badges, and a console that only appears when you open it. Nothing competes with the chat.
  • Many machines at once. Every host has a colour identity, its own connection, and its own group of workspaces and sessions.
  • No agent on the server. Only sshd: SFTP for files, exec channels for commands and search, a PTY for the terminal, direct-tcpip for port forwarding.

Screens

Console Quick panel
Console Quick panel
Session identity Add a machine
Session identity Add a machine
New workspace Terminal and ports
New workspace Terminal and ports

Screenshots are rendered from the sanitized design mockups in docs/design/v2/. Host names, addresses and paths are demo data (dev-box, 203.0.113.10, /srv/demo-app).

Features

Area What you get
Connections Multiple hosts, key or password auth, ~/.ssh/config import, connection test with OS/latency, per-host auto-connect (off by default; toggle in the dialog, quick panel or console), keepalive and backoff reconnect
Workspaces Browse remote folders with breadcrumbs, filters and keyboard navigation; add one as a DSH workspace; custom sidebar name; remove locally without touching the remote directory
Sessions Remote sessions get a header pill, a colour-coded sidebar badge and a hover line; local sessions are unchanged
Console Machine rail, host overview, stats, workspace cards, recent sessions, search
Terminal Remote PTY in a full xterm.js terminal: colours, cursor, full-screen programs, paste and replay buffer
Ports Automatic discovery of remote listening ports, one-click forwarding, persistence and restore on reconnect
Theme Light and dark, driven by DSH theme tokens

Install

From the plugin market (after listing) or npm:

dsh plugin add dsh-remote-deck

From GitHub:

dsh plugin add git+https://github.com/dsh-plugins-cn/dsh-remote-deck.git

In mainland China, use the GitHub proxy:

dsh plugin add "git+https://ghproxy.laiyouxi.com/https://github.com/dsh-plugins-cn/dsh-remote-deck.git"

From a checkout:

git clone https://github.com/dsh-plugins-cn/dsh-remote-deck.git
cd dsh-remote-deck
powershell -ExecutionPolicy Bypass -File .\install.ps1 -Profile desktop

Restart DSH (or press Ctrl+R) after installing; the SSH chip appears at the bottom of the sidebar and 远程开发 appears in the sidebar navigation.

The plugin has no npm dependencies: ssh2 and its small dependency tree are vendored under vendor/node_modules, and the terminal assets under vendor/xterm. Installation therefore never runs package build scripts.

Migrating from dsh-remote-ssh

Remote Deck is the successor of dsh-remote-ssh.

  • On first load it copies connections from <DSH_HOME>/remote-ssh and reuses existing workspace stubs in place, so workspaces and sessions keep their place in the sidebar.

  • The old plugin keeps working until you remove it. Use one profile at a time: both plugins patch ctx.fs, so only one of them should be enabled in a profile.

  • Cut over in one command (backs up package.json first and keeps the old plugin files for rollback):

    .\install.ps1 -Profile desktop -RemoveOld
    
  • Roll back at any time:

    .\install.ps1 -Rollback                 # restores package.json.bak-before-deck
    

Data stays in <DSH_HOME>/remote-deck and survives plugin reinstalls.

How it works

┌────────────────────────────── DSH desktop ──────────────────────────────┐
│ conversation · sidebar · Remote Deck console                            │
│        │ ctx.fs / ctx.shell / ripgrep / tools                            │
│        ▼                                                                │
│ host half: connection pool, workspace stubs, loopback API               │
└────────┬────────────────────────────────────────────────────────────────┘
         │ SSH (ssh2): exec channels · SFTP · PTY · port forwarding
         ▼
   remote host: sshd only (Linux / macOS)

A remote workspace is a marked stub directory under <DSH_HOME>/remote-deck/workspaces; the marker records the connection id and the remote POSIX path. Every path under a marked workspace resolves through SFTP; commands run through an exec channel with the remote cwd; ripgrep moves to the host; the terminal is one PTY channel; forwarding is one local listener per port.

Security

  • Passwords and key passphrases live in the DSH credential store, never in connections.json.
  • The browser half talks to the host over a loopback HTTP server guarded by a per-session token.
  • The terminal and forwarding endpoints are behind the same token.
  • Removing a workspace only unregisters it locally; remote files are never deleted by the plugin.

Requirements

  • DeepSeek Harness desktop 0.2.x or newer.
  • Node 20+.
  • sshd on the remote host; Linux or macOS; remote shell bash.

Known limits

  • The terminal ships a vendored xterm.js build (colours, cursor, full-screen programs). If the asset loader is blocked, the plugin falls back to a plain line renderer.
  • The UI is Chinese-first; English strings land in v1.1.0.
  • ~/.ssh/config import covers Host/HostName/Port/User/IdentityFile/ProxyJump; proxy commands and host-key pinning are not wired into the connection dialogs yet.
  • ss or netstat is required for automatic port discovery; manual forwarding still works.

Development

npm run check        # syntax + manifest
npm test             # parser unit tests
npm run pack:dry     # inspect the published file list

Design mockups and their sanitized renders live in docs/design/v2/; acceptance runs are recorded in the CHANGELOG. The version plan is in ROADMAP.md, release steps in PUBLISH.md, and the iteration runbook in docs/MAINTENANCE.md.

License

MIT

—/ 5

No ratings yet

Verified DSH bundle

Commit 5c7b790c97db

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout