Development & Runtime

dsh-ssh

UynajGI/dsh-ssh · ★ 17

UynajGI

SSH remote-execution plugin for DeepSeek Harness: ProxyJump chain, SFTP filesystem, subprocess and PTY over ssh2

License
MIT
Added
2026-08-16
Maintenance
active
Install kind
github
npm
dsh-ssh
Manifest details
Manifest status
Declared
Manifest path
package.json#dsh
Manifest checked
2026-08-19
Lifecycle scripts
None found

Static manifest checks report declarations only; they are not compatibility or security review.

安装

dsh plugin --profile web add github:UynajGI/dsh-ssh

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

For install and environment setup, plus plugin development tutorials, see DSH community docs ↗

README

Source README · body: en · Read Chinese README

Table of contents
  1. Install
  2. Configure
  3. Limitations
  4. Development
  5. License

English | 中文

SSH remote-execution plugin for DeepSeek Harness. Runs Bash, file tools, PTY terminals and LSP on a remote host over one SSH connection — ProxyJump chains, SFTP, full auth. Built on ssh2.

Add a workspace over SSH

Install

dsh plugin --profile web add dsh-ssh

Or use the Web UI: Plugins → Add plugin → dsh-ssh. The bundle mounts the SSH providers and takes over the Add workspace flow — create real connections there. Needs DeepSeek Harness 0.2.x and Node ≥ 22.

A plain npm i dsh-ssh does not select the bundle; add it to dsh.profile.bundles yourself.

Configure

Only needed when composing providers by hand (cordis.yml):

- id: ssh-remote
  name: dsh-ssh
  config:
    host: server.example.com        # or a ~/.ssh/config alias
    username: root
    privateKey: ~/.ssh/id_ed25519   # path or PEM
    cwd: /root/workspace
    # jump:
    #   - { host: bastion.example.com, privateKey: ~/.ssh/id_ed25519 }
Field Default Notes
host username cwd — required (cwd is an absolute POSIX path)
port 22
password privateKey passphrase agent — any auth mode; falls back to ~/.ssh identities
jump [] ProxyJump chain, independent auth per hop
readyTimeout keepaliveInterval keepaliveCountMax 45000 / 0 / 3 milliseconds
strictHostKeyChecking knownHosts false / [] host-key verification

Web profile: subprocess and fs are single-slot services. Disable the local providers (dsh-subprocess-local, dsh-fs-sandbox) in the profile patch, or remote work silently runs on the harness host.

Limitations

  • Remote pid is always -1; terminate doesn't reap descendants (SSH can't).
  • The SSH link doesn't auto-reconnect after a drop — recreate the connection.
  • streamText is text-only; remote sessions aren't added to the local workspace registry.

Development

npm i
npm run typecheck
npm run build   # emits lib/ — the payload the harness loader imports

License

MIT