Introduction

In DeepSeek Harness (DSH), having an Agent complete “deploy to server” often involves guessing paths or running external commands that the sandbox cannot execute. Facts (host, paths, runtime) belong in configuration, not prompts. This plugin centralizes these facts and provides a settings page and Agent tools.

What It Is

dsh-ssh-workspace-manager is a DSH plugin used to manage SSH hosts, workspace bindings, and remote execution, synchronization, and Compose management. It is maintained by telagod. The plugin brings SSH remote functionality into the settings page for human configuration and exposes tools for Agents.

Core Features

The plugin provides a complete set of SSH management capabilities, divided into a settings interface and Agent tools:

  1. Settings Page

    • SSH Remote: Provides an SSH Remote page in Settings.
    • Host Management: Add hosts, test connections, and inspect system information (OS, kernel, container runtime).
    • Binding Management: Records a workspace’s deployment target and supports unbinding.
  2. Agent Tools

    • ssh_status: Lists hosts, bindings, and the current workspace’s binding information.
    • ssh_bind: Records the current workspace’s deployment target (host, remote path, role, runtime, Compose file, etc.).
    • ssh_unbind: Removes a binding by ID.
    • ssh_exec: Runs a command in the bound remote directory.
    • ssh_sync: Pushes the local workspace to the remote directory.
    • ssh_compose: Manages containers in the remote directory (supports ps, logs, up, down).
    • ssh_inspect: Probes the operating system, kernel, and container runtime.

Installation and Activation

Installing this plugin requires Node.js version >= 22.

dsh plugin --profile web add github:telagod/dsh-ssh-workspace-manager

After installation, restart the Web profile.

Important: Do not manually insert the plugin. dsh plugin manages dsh.profile.bundles; manual insertion can cause a “duplicate loader entry id” error.

Typical Usage

  1. Configuration: A human adds a host in Settings → SSH Remote, tests the connection, and adjusts defaults.
  2. Binding: The Agent uses ssh_bind to bind the current workspace to a server.
  3. Deployment: The Agent uses ssh_sync to push the local workspace to the remote directory.

Notes

  1. Scope: Bindings are workspace-scoped, with the structure (workspace → host → remote directory).
  2. Numeric Limits: Out-of-range numeric values (such as timeout) are clamped when saved.
  3. Dependencies: Node.js version >= 22 is required.

Conclusion

By standardizing SSH management, this plugin solves the lack of context that Agents face during remote deployment. For more information, see the plugin directory or the GitHub repository.