Introduction¶
When developing with DeepSeek Harness (DSH), local processes easily pile up: the model runs npm run dev in the session, while you start Vite or Uvicorn in another terminal. After a few days, remembering which port belongs to whom or which process belongs to which session is mostly a guess. To reclaim ports, the usual way is to open a terminal, type lsof to find the PID, and manually kill. If you get the target wrong, you might kill a process that shouldn’t be touched.
dsh-service-console brings this troubleshooting and operation capability into DSH’s web UI: discovering listening ports, identifying service ownership, and safely viewing, stopping, and restarting them. DSH’s philosophy is “everything is a plugin,” and the Jiyr0119/dsh-service-console introduced in this article is a native plugin implemented according to this idea.
What is it¶
One-sentence positioning: A local development service console for DSH. When a local development server is started in the session (or by you), it lists these services together—listening ports, the commands and working directories used to start them, whether they belong to the current session or workspace, and whether stopping or restarting them is safe.
The plugin is maintained by Jiyr0119, has the npm package name @jiyr0119/dsh-service-console, is open-source under the MIT license, and the code is hosted on GitHub.
Core Features¶
Discovery and Ownership¶
The plugin scans TCP ports listening on the local machine and associates each service with a PID, PPID, command, working directory, process group, and start time (supports macOS / Linux).
Ownership is categorized into five levels:
- This chat: Matches the session startup ledger, confirming it belongs to the current session
- Workspace: Belongs to the current workspace
- Other local: Other local sources
- Unknown: Unclear source
- Protected: Protected process
Note that ownership information is displayed as a safety signal, not as a hidden classification filter—all listening services on the machine will be shown, and you are responsible for judging which ones can be acted upon.
Stop and Restart¶
The stop operation targets an entire process group for a graceful exit (sending SIGTERM to the process group); restarting uses the saved safe start command. Every operation requires double confirmation. Before execution, a re-verification is performed based on the current snapshot to avoid acting on outdated information.
Security¶
This is the part where the plugin spends the most time:
- PID reuse and fingerprint verification are performed before sending any signal
- The client never sends raw PIDs or shell commands; it targets only the Service ID. The Host re-verifies the PID, start time, and fingerprint before the operation
- Unknown and protected services are read-only; system-critical and high-privilege processes are also read-only
- Forced process killing (SIGKILL) is disabled by default and is only used after explicit enabling and confirmation
- There is no implicit automatic cleanup; sensitive tokens and passwords in command summaries are masked
The author explicitly states in the documentation that this is not a general-purpose process manager.
Interface and Interaction¶
The console scans on demand: it takes a snapshot when the panel is opened, and explicit re-scanning is triggered by the refresh button; there is no background polling. The list supports keyword filtering, allows setting graceful timeout and force kill options, and tabs automatically switch between Chinese and English based on DSH’s current locale.
Expanded service cards use the Web UI token visual language (DSH native inspector style) to display process identity, ports, commands, working directories, and ownership evidence.
Installation and Enablement¶
Install using the official command:
dsh plugin --profile web add -w @jiyr0119/dsh-service-console@latest
After installation, refresh the DSH web UI. A “🖥 SC” entry will appear in the session header; click it to open the console panel.
One point worth noting: being listed in dsh-market / awesome does not mean the UI appears automatically. This package comes with Host routing and a browser bundle; the panel becomes usable after running dsh plugin add.
If you don’t want to go through the build process, there is an alternative path: paste the dynamic/host.js and dynamic/client.js from the repository via the dynamic Cordis plugin flow. Zero build, runs locally on the process.
Typical Usage¶
-
Install the plugin and refresh the web UI, then enter the console panel from the session header. It automatically takes a snapshot upon opening, and subsequent re-scans are triggered by the refresh button.
-
You can try the interface without installing: there is a browser interaction demo in the repository; just open
./demo/index.html, no installation required. -
If you want to participate in development, the flow is as follows:
pnpm install
npm run typecheck
npm run build
npm test
npm test builds once first, then runs the full test suite using Node’s built-in node --test, requiring no additional testing framework.
Suitable Scenarios and Considerations¶
Suitable scenarios: Developers who frequently start and stop local development services in DSH, want to replace terminal commands for port reclamation with UI operations, and need to determine which session or workspace a listening process belongs to.
Before getting started, there are a few things you need to know:
- Only supports macOS / Linux; Windows is not supported for now
- It is not a general-purpose process manager; system-critical, high-privilege, unknown, and protected processes are read-only by default
- The plugin runs with the permissions of the current DSH process; its capabilities are limited by these permissions
- It is recommended to read the source code and license (MIT) before installing to confirm it meets your security requirements
Summary¶
dsh-service-console solves a specific problem: local services started in DSH sessions are scattered across the system, and troubleshooting and reclaiming them rely on terminal commands and memory. It brings discovery, ownership identification, stopping, and restarting into the web UI, and uses double confirmation, PID fingerprint verification, and read-only strategies to lower the risk of misoperation. If you frequently start local services in DSH, it is worth a try.
- Community directory page: https://www.skillhub.cn/plugins/Jiyr0119/dsh-service-console (This directory is an independent community site with no official affiliation to DeepSeek / Hypothesis)
- GitHub repository: https://github.com/Jiyr0119/dsh-service-console