DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

Experimental Tool Witr — DSH Plugin for DeepSeek Harness
← Plugins
E

@deepseek-ai/dsh-experimental-tool-witr

Experimental Tool Witr

DeepSeek Harness plugin providing model-facing witr causal process, port, and lock tracing tools

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add github:martinm86867-ops/dsh-plugin-witr#ab42452bae7f23cd4deddf5a06a106d5d173c55b
READMECompatibilityVersions

Compatibility and provenance

Experimental Tool Witr is published as @deepseek-ai/dsh-experimental-tool-witr and currently resolves to version 1.0.0. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
any
Release source
github
Registry updated
10/14/2026

Versions

1.0.0stable
10/14/2026

Related plugins

Loading related plugins…

Latest
1.0.0
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
any
License
MIT
Source
github
GitHub
★ 0
Weekly downloads
0
Last push
10/14/2026
View source ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in

Related plugins

More verified plugins in developer-tools.

Web App@deepseek-ai/dsh-web-appThe dsh browser-surface bundle: the web patch layer over dsh-base plus the runtime glue plugin (frontend dist serving, web-surface prompt, bash runtime variables, URL line)Sdk Minimal@deepseek-ai/dsh-sdk-minimalThe standalone minimal SDK profile bundle: JSON-RPC, one DeepSeek adapter, persistent shell, and JSONL sessionsSdk App@deepseek-ai/dsh-sdk-appThe dsh SDK profile bundle: stdio JSON-RPC serving and process lifecycle over dsh-baseExperimental Inspector@deepseek-ai/dsh-experimental-inspectorExperimental cross-realm CDP hub for Host debugging and Client Runtime inspection

README

dsh-plugin-witr

The causal process & port tracing plugin for DeepSeek Harness.

Gives autonomous DeepSeek agents instant root-cause visibility into running processes, port collisions (EADDRINUSE), and stuck file locks.


The Problem

Autonomous agents frequently stall during development or operational loops when encountering state conflicts:

  • A local dev server fails to start with EADDRINUSE: 3080.
  • An environment command hangs because /var/lib/dpkg/lock-frontend is locked.
  • A long-lived background worker holds memory, but ps aux only shows an uninformative child process without context.

Standard agent workarounds—chaining ps aux, lsof, fuser, netstat, and kill -9—are fragile, hallucination-prone, and risk accidentally terminating the parent terminal or shell.

The Solution

dsh-plugin-witr wires witr directly into the DeepSeek Harness tool registry via the Cordis plugin lifecycle.

Instead of guessing, the agent calls witr_trace to receive the complete supervisor hierarchy from systemd down through terminal emulators, shells, and parent containers in a single deterministic turn.

graph TD
  A[DeepSeek Agent Loop] -->|witr_trace tool call| B[dsh-plugin-witr]
  B -->|Cordis Effect / AbortSignal| C[witr Causal Engine]
  C -->|Procfs & Netstat Inspection| D[Linux Kernel / Sockets]
  D -->|Root Cause Tree + Metadata| C
  C -->|Formatted Tree / Mermaid / JSON| B
  B -->|Structured Result Block| A

Features

  • Full Causal Ancestry: Traces processes backwards through systemd -> ptyxis -> bash -> node -> esbuild to pinpoint what launched and maintains the target.
  • Port Collision Resolution: Translates port numbers (e.g. 3080, 8080) directly into the owning PID, parent shell, working directory, and active Git branch.
  • File Lock Diagnostics: Pinpoints which background process or daemon holds open a file descriptor.
  • Multi-Format Projection: Supports human-readable diagnostic text, compact hierarchical trees, JSON, and Mermaid.js flowchart diagrams for visual documentation. JSON output omits process environment variables, so tracing a process never copies its secrets into the model context.
  • DeepSeek Plugin Manager UI: Fully declared Cordis bundle with localized metadata, an icon, and configurable runtime parameters in the Web UI.
  • Exit-Code Fidelity: Classifies every trace from witr's documented exit codes instead of scraping its output, so warnings, "not found", and "insufficient privileges" arrive as answers and only genuinely broken runs fail the call.
  • Cancellation & Safety: Strictly read-only; forwards exec.signal to the witr subprocess and reports a cancelled call as cancelled rather than as a failure.

Installation

Prerequisites

Ensure the witr binary is installed in your system PATH (e.g. /usr/local/bin/witr):

# Verify witr binary
witr --version

Method 1: Add via DeepSeek CLI

dsh plugin --profile web add @deepseek-ai/dsh-experimental-tool-witr

Method 2: Profile Mount (cordis.patch.yml)

Add an - insert: entry to your active profile patch file (~/.dsh/profiles/<profile>/cordis.patch.yml):

- insert:
    - id: tool-witr
      name: "@deepseek-ai/dsh-experimental-tool-witr"
      config:
        binaryPath: witr
        timeoutMs: 10000

Model Tool Specification: witr_trace

When mounted, DeepSeek models gain access to the following tool schema:

witr_trace({
  target: string,                            // Port ("3080"), PID ("1234"), name ("node"), or file path
  kind?: "port" | "pid" | "file" | "name",   // Explicit discriminator; inferred when omitted
  format?: "standard" | "tree" | "mermaid" | "dot" | "json",
  exact?: boolean                            // Disable substring matching when searching by name
})

kind, format, and target are validated before witr runs, so an out-of-vocabulary kind or format is rejected instead of silently ignored.

Target inference. With no kind, a bare number is tried as a process ID first and then as a port, a value containing / is treated as a file path, and anything else is a process name. Non-empty targets are passed to witr after a -- terminator, so a process name that begins with - is never misread as a command-line flag.

Working directory. A relative file target is resolved against the calling session's working directory rather than the directory the harness process was launched from.

Concurrency. The tool is read-only, so it is marked concurrency-safe and several traces may share one tool batch.

Outcomes

The plugin reads witr's exit codes rather than matching output text — witr documents the codes as the contract and the wording of its human-readable output as explicitly outside it. Only the outcomes that carry no answer fail the tool call:

witr exitMeaningTool result
0Found, cleanAnswer
1Found, with warningsAnswer — warnings are the diagnostic payload
2Not foundAnswer; also drives the PID → port fallback
3Insufficient privilegesAnswer — witr's own output says how to escalate
4Invalid input, or an ambiguous nameError; retry with exact: true or a fuller name
5Internal errorError
6Found, but the cause can't be tracedAnswer
—witr could not be started at allError naming binaryPath

The canonical result is structured — { output, format, exitCode, warnings? } — with output as the model-facing projection. warnings is populated when format: "json" supplies witr's documented Warnings array, and the exit code and warning count travel to the UI as presentation metadata.

Example Agent Interactions

1. Diagnosing an In-Use Port

Agent call:

{
  "name": "witr_trace",
  "arguments": {
    "target": "3080",
    "kind": "port"
  }
}

Tool output:

Target      : node
Process     : node (pid 9056) {forked}
User        : martin
Command     : node --import tsx/esm apps/cli/src/bin.ts web
Started     : 1 hour ago (Wed 2026-10-14 10:05:05 +01:00)

Why It Exists :
  systemd (pid 1) → systemd (pid 4297) → ptyxis (pid 6407) → ptyxis-agent (pid 6421) → bash (pid 9030) → node (pid 9040) → sh (pid 9055) → node (pid 9056)

Source      : sh (shell)
Working Dir : /home/martin/deepseek
Git Repo    : deepseek (master)
Sockets     : 127.0.0.1:3080 (TCP | LISTENING, 2 connections)

2. Generating a Visual Markdown Architecture Diagram

Agent call:

{
  "name": "witr_trace",
  "arguments": {
    "target": "3080",
    "format": "mermaid"
  }
}

Tool output:

graph TD
  p1["systemd (pid 1)"]
  p4297["systemd (pid 4297)"]
  p1 --> p4297
  p6407["ptyxis (pid 6407)"]
  p4297 --> p6407
  p6421["ptyxis-agent (pid 6421)"]
  p6407 --> p6421
  p9030["bash (pid 9030)"]
  p6421 --> p9030
  p9056["node (pid 9056) :3080"]
  p9030 --> p9056
  style p9056 fill:#2ecc71,stroke:#27ae60,stroke-width:2px,color:#ffffff

Configuration Schema

Configured via Cordis YAML or the DeepSeek Web Settings UI:

OptionTypeDefaultDescription
binaryPathstring"witr"Path to the witr binary.
timeoutMsnumber10000Subprocess execution timeout in milliseconds.

Development & Building

# Install dependencies
pnpm install

# Typecheck the source and test suite
pnpm run typecheck

# Compile TypeScript
pnpm run build

# Run unit tests (Vitest)
pnpm run test

License

MIT © 2026 Martin M