Introduction

When developing or operating with DeepSeek Harness (DSH), it is often necessary to know the current status of the machine where DSH is running: CPU and memory usage, which processes are consuming resources, and whether containers are normal. The common approach is to open another terminal, connect to it, execute top and docker ps, and then switch back. dsh-side-monitor brings this into the DSH interface: it provides a “System Monitor” entry in the left sidebar; clicking it opens a right-side panel displaying a real-time overview of the host, a list of processes, and Docker container status. Below is an introduction to the positioning, functionality, and installation method of this plugin.

Plugin Positioning

dsh-side-monitor is a system monitoring side plugin for the DSH Web interface, maintained by pc439527, licensed under MIT, current version 0.3.1, and verified against DeepSeek Harness 0.1.1-rc.2 (including the sidebar.footer.action slot and RPC contract).

DSH’s philosophy is “everything is a plugin.” This plugin registers its entry in the sidebar.footer.action slot: it displays text when the sidebar is expanded, shows only the icon when collapsed, and highlights the entry when the panel is open.

It is a read-only design: it does not provide docker restart/stop, no process kill, no exec, and no shell; its positioning is for quickly checking resources, troubleshooting issues, and observing containers.

Core Features

Overview

After opening the panel, the first page is the overview:

  1. CPU / Memory metric cards: Large percentages with auxiliary information, paired with area-fill mini-charts with fixed 0–100 axes.
  2. Lightweight KPIs: For network main interface throughput and root partition disk space.
  3. Below are, in order: System load, system info, multi-mount point disk partitions, network interfaces (including default route and virtual interface tags, displaying RX/TX rates).
  4. Docker summary: Displayed with counts for Total / Running / Stopped / Issues.

Processes

Search, sorting, and pagination are all completed within the Host RPC: it first scans all processes and then filters, so the interface remains smooth even when the process table is large. Supports sorting by CPU / Memory / PID / Name; cards display PID · PPID · User, clicking expands to show RSS / uptime / command. It also supports grouping by Name + Command; clicking expands to show the PID list, deduplicated users, and total RSS.

Docker Containers

Each container displays name, image, status, health (healthy / unhealthy / starting), CPU%, memory, and ports. Containers that exited normally (exit 0) are only counted as Stopped and not as Issues; Issues are reserved for real problems like unhealthy, health-starting, crash loops, dead, or non-zero exits; crashed containers will display the exit code, e.g., Crashed (137).

Actionable Ports

Clicking published web ports opens them in a new tab; clicking non-web ports copies host:port; the right-click menu provides Open HTTP/HTTPS and Copy. Address handling covers 127.0.0.1, 0.0.0.0, and explicit hostIp; IPv6 automatically adds brackets; unpublished ports cannot be opened.

Bilingual Interface and Responsive Layout

The interface defaults to Simplified Chinese (not following browser language) and can be switched to en-US: via the drawer menu … → Language for instant switching, with the choice persisted via dsh-side-monitor:language.

Regarding layout: on desktop, it is a draggable right-side drawer, default 500px, range 360–800px, width persisted; when viewport is less than 768px, it switches to a full-page layout, adapting the panel width using Container Queries; on mobile, it uses 100dvh plus safe-area insets.

Data Sources and Protocol Handshake

The plugin automatically detects whether it is running in a Host or Container environment, displays a badge and status line in the header, and provides a “View data sources” dialog (including consistency self-check). The meta endpoint reports detailed status and Host capabilities (Host Mount mode, Docker socket, host-netns detection, process aggregation, container statistics).

RPC responses carry protocolVersion (v3) and pluginVersion; when versions do not match, a version banner and About panel (Browser / Host / RPC version, detailed status, and capabilities) are displayed instead of leaving undefined fields.

In Host Mount mode, /proc/net is isolated by network namespace; the plugin reads the host network namespace via a short-lived –net=host read-only probe, at most once every 15s, with caching and fallback, without blocking the overview polling.

Module Status and Refresh

Each module has independent error and update times; when a module fails, it retains the last valid data and displays a stale banner, without affecting other modules. Supports manual refresh (with spinner animation) and one-click copy of diagnostic text.

Regarding polling: polling stops/pauses when the panel is closed or the tab is hidden; each poll waits for the previous request to complete to prevent re-entry.

Installation and Enablement

First confirm the environment: engines require Node >= 20; peerDependencies are as follows:

{
  "@deepseek-ai/cordis": "^4.0.1",
  "@deepseek-ai/dsh-client-connection": "^0.1.1-rc.2",
  "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2",
  "react": "^18.2.0",
  "react-dom": "^18.2.0"
}

The installation method given in the README is to install from a local directory:

# 从本地目录安装
dsh plugin --profile web add /path/to/dsh-side-monitor

After installation, refresh the page; the “System Monitor” entry appears at the bottom of the left sidebar; clicking it opens the monitoring panel.

A supplement: v0.3.1 removed references to @deepseek-ai/dsh-client-ui-slots – this package is no longer provided with DSH 0.1.1-rc.2 (its slots have been merged into @deepseek-ai/dsh-client-runtime at runtime), so it won’t accidentally pull the old package from the rc.6 era during a fresh install.

Typical Usage

After the steps above, the plugin is installed and appears in the sidebar; common operations are as follows:

  1. Check overall levels: Open System Monitor, first look at the CPU / Memory mini-charts and Docker summary on the overview page to see if there are abnormalities.
  2. Locate processes: Switch to the process page, sort by CPU or memory, or directly search for the process name; expand to see the command line if needed.
  3. Observe containers: Check the status and health of each container on the Docker page; seeing a badge like Crashed (137) indicates the container exited abnormally.
  4. Jump to service: Clicking a published web port in the container card opens it in a new tab; clicking a non-web port copies host:port.
  5. Switch language: The drawer menu … → Language allows instant switching between zh-CN and en-US.

Applicable Scenarios and Notes

Suitable for developers and operations personnel who need to quickly check DSH host resources, troubleshoot process and container issues, and observe container running status. It is read-only, does not provide any operational capabilities, and is suitable for residency in the environment.

Two points to note before use:

  1. The plugin runs with the permissions of the current dsh process; before installing, check the plugin source code and license (this project is MIT), and confirm you can accept it before installing.
  2. The current version 0.3.1 is verified against DeepSeek Harness 0.1.1-rc.2; performance on other DSH versions is subject to actual testing.

Summary

dsh-side-monitor turns host machine monitoring into a side plugin for DSH; it is read-only, and after installation, simply refresh the page to use it, saving the step of repeatedly connecting to a terminal to check resources. Project address on GitHub (https://github.com/pc439527/dsh-side-monitor), and the plugin page can also be viewed on the community directory (https://www.skillhub.cn/plugins/pc439527/dsh-side-monitor). The community directory is an independent site with no official affiliation to DeepSeek / Hypersphere.