๐ฅ๏ธ dsh-remote-workspace
August 16, 2026 ยท View on GitHub
English | ็ฎไฝไธญๆ
Remote Workspace for DeepSeek Harness (DSH) โ browse files, edit code, and run commands on one or more SSH servers directly from the DSH web UI. Like VS Code Remote-SSH, without leaving the conversation.
๐ Table of Contents
- โจ Features
- ๐ฅ Why this plugin
- ๐ฆ Installation
- ๐ Quick Start
- โ ๏ธ Prerequisites: SSH passwordless login
- ๐ Security
- โ FAQ
- ๐ค Feedback
- ๐ License
โจ Features
- Multi-server connection management (Settings โ Remote Workspace): SSH alias (
~/.ssh/configHost) or host/port/user modes; switch connections anytime; config persists in browser localStorage - ๐ Connect / โน Disconnect: verify and hold/release the active server's connection state with one click
- File tree browser: lazy-loaded expand/collapse, hidden-files toggle, per-type icons, one-click copy path
- Code editor: line numbers + ๐ syntax-highlight preview (keywords/strings/comments/numbers/decorators) + โ๏ธ edit and save back to the server
- Command runner: run any command on the server (working directory follows the open file)
- Dock / Float dual modes: docked beside the conversation (conversation reflows, draggable divider) / wide floating panel (up to 1400px)
- Conversation-direct: ask the agent in chat to operate on server files directly
๐ฅ Why this plugin?
Compared with other DSH SSH / remote-file-browser plugins:
- Multi-server, not single-server โ add and switch any number of SSH connections (alias or host/port/user); most similar plugins hard-code one server
- Zero-build, pure source โ no tsdown/typert build step; the published source is the running code, so it is easy to audit, fork, or extend
- Dock / Float dual modes โ dock beside the conversation (auto-reflow + draggable divider) or one-click widen to a 1400px floating panel; other panels usually just overlay the page
- Syntax highlighting + line numbers โ IDE-like code reading (keywords / strings / comments / numbers / decorators), not a plain textarea
- Persistent config โ connection settings survive page refresh (localStorage)
- Reuses your local SSH โ works with existing
~/.ssh/configaliases and keys; no passwords are ever stored - Built-in command runner โ run commands in the panel; the working directory follows the open file
- Conversation-direct โ pairs with DSH agents: you can also just say "edit this file on the server" in chat
- Bilingual docs + MIT open source
๐ฆ Installation
Requirements: Node.js โฅ 18 ยท pnpm ยท a DSH profile (usually web)
# SSH (recommended, port 22)
dsh plugin --profile web add git+ssh://git@github.com/FYL1025/dsh-remote-workspace.git
# or HTTPS (port 443)
dsh plugin --profile web add git+https://github.com/FYL1025/dsh-remote-workspace.git
Restart DSH after install, then open Settings โ Remote Workspace.
# Verify the plugin is registered
dsh plugin --profile web list
# Update after a new release
dsh plugin --profile web update dsh-remote-workspace
# Uninstall
dsh plugin --profile web remove dsh-remote-workspace
๐ Quick Start
- Settings โ Remote Workspace โ add your server (SSH alias or host/port/user) and select it as the active connection
- Click ๐ Connect to verify connectivity (it flips to โน Disconnect on success)
- Click ๐ Open Workspace Panel โ the file browser appears beside the conversation
- Expand directories, click a file:
- ๐ Preview โ syntax highlighting
- โ๏ธ Edit โ modify and click Save to write back to the server
- Use the command runner at the bottom (e.g.
ls -la,python train.py) - Click โ Widen for the wide floating panel; drag its edge to resize
โ ๏ธ Prerequisites: SSH passwordless login (important)
The plugin uses your local SSH client to reach servers, so key-based passwordless login must be configured first:
- Check for an existing key โ
ls ~/.ssh/โ or generate one:ssh-keygen -t ed25519 -C "you@example.com"(press Enter for defaults) - Add the public key to the server:
ssh-copy-id -p <port> <user>@<server> # Linux/macOS # or manually: append ~/.ssh/id_ed25519.pub to the server's ~/.ssh/authorized_keys - (Recommended) Define an alias in
~/.ssh/config(Windows:C:\Users\<you>\.ssh\config):Host myserver HostName <server-ip> User <user> Port <port> - Verify โ
ssh myservershould log in without asking for a password.
๐ Security
- The plugin runs ssh commands with a danger-full-access policy โ equivalent to you running ssh yourself in a terminal; limited to commands issued by this plugin.
- Connection settings (alias/host/port/user) are stored in browser localStorage; no passwords or private keys are ever stored.
โ FAQ
| Issue | Fix |
|---|---|
| โ Connection failed | Check host/port/user; confirm passwordless login works (ssh <alias>); retry |
| Permission denied (publickey) | Public key not on the server โ run ssh-copy-id or append to authorized_keys |
| Large file rejected | The plugin reads text files โค 2MB; ask the agent in chat for bigger files |
| Panel not visible after restart | Hard-refresh the page (Ctrl+Shift+R); ensure the plugin is listed in dsh plugin --profile web list |
๐ค Feedback
Found a bug or have an idea? Open an issue โ contributions are welcome.
๐ License
MIT