52 DeepSeek Harness (DSH) Plugin Categories
These are not editorial buckets. Every category below is an extension point read straight out of the DeepSeek Harness source tree — a packages/ slot and the ctx keys it registers. 34 of 52 are open seams a third party can fill without forking DSH.
40 of them have at least one indexed implementation. 12 have none at all — those stay listed and greyed out, because an empty official extension point is a finding, not a missing row.
Spine (3 categories)
- Agent Core598
The product spine: append-only session log, system-prompt assembly, tool registry, Agent interface and the default loop driver. No provider slots here — you extend it by listening to its events.
- Typert Type Graph46
Generates runtime artifacts from source types so host and browser share one typed RPC contract: generator, registry, loader, protocol.
- Runtime Invariants1
Development-time runtime contract assertions; each package registers owner-local checks and failures are attributed back to the owning package.
Model (1 category)
Execution World (9 categories)
- Terminal Backends19
Persistent, owner-scoped PTY sessions for workflows that need state across tool calls or interactive stdin. One in-box backend (terminal-bash) and six model-facing tools.
- Sandbox Backends12
Process-confinement seam: consumers hand over the exact argv, backends wrap it under a per-call policy and report enforcement. Local backends cover Linux/macOS; Windows ACL is a partial-enforcement rung.
- Shell Executors2
The bash executor seam with local, sandboxed and PowerShell implementations, plus the model-facing bash/pwsh tools and the managed DSH_* environment registry.
- Subprocess Providers2
The shared process substrate for one execution world: executable lookup, managed process trees, stdio dispositions and the terminal-process primitive. Bash, LSP, PTY and out-of-process subagents all spawn through it.
- LSP Providers2
Language-server navigation seam exposing exactly four operations (goToDefinition, findReferences, goToImplementation, hover) with no raw JSON-RPC escape hatch. One generic stdio backend in-box.
- Background Jobs2
One owner-isolated background-job protocol for observation, cancellation, waiting and completion notices. Background bash, PTY sends and subagent delegations all register here.
- Filesystem Providers0
The filesystem seam: bounded text IO plus atomic mutation, with local, sandbox-fenced and E2B-remote providers, and the model-facing read/write/edit + glob/grep tools on top.
No third-party implementation indexed yet · gap: medium
- Code Runtimes0
Runs one model-written program against host-provided async bindings and captures what it printed and returned. Backends differ by substrate and language; only a worker-thread one ships.
No third-party implementation indexed yet · gap: large
- E2B Remote Runtime0
An experimental provider-composition POC placing one filesystem/process execution world in an E2B Linux sandbox. E2B supplies only sandbox lifecycle and the two fundamental OS adapters.
No third-party implementation indexed yet · gap: large
Outside World (2 categories)
- MCP Servers85
MCP client bridge: connects external Model Context Protocol servers and registers their tools on ctx.tools under server-qualified names. One plugin row per server; stdio and streamable-http transports; HMR hot-swaps.
- Web Search & Fetch29
Provider-neutral web search and fetch. Four providers ship in-box (Exa, Perplexity, native DeepSeek search, HTTP fetch); tool-web owns the stable model-facing names.
Orchestration (6 categories)
- Subagent Providers15
Delegate work to child agents. Six named providers coexist: fresh in-process, fork-from-parent-history, ACP, real Codex, real Claude Code (official Agent SDK), and out-of-process dsh via the TypeScript SDK.
- Goals13
Durable same-session objective state folded from the session log, with a same-session continuation driver plus model tools and a human command.
- Workflow Engines6
Runs model-authored orchestration scripts whose agent() calls fan out through ctx.subagents. One worker-thread engine in-box, plus the general workflow tool and the fixed fresh-agent Ralph loop.
- Scheduled Follow-ups4
Session-local reminders (after_seconds / absolute at / every_seconds ≥ 5min). The session log owns the state; the package deliberately exposes no public service and implies no external notification channel.
- Plan Mode2
Plan mode is logged, per-agent collaboration state — not a generic mode registry or a capability seam. /plan enters, a user-reviewed exit_plan_mode leaves.
- Todo List2
The model-facing todo_write tool. A single product package because one agent session owns the list; there is no replaceable provider contract.
Context Governance (6 categories)
- Skills36
Discovers reusable agent instructions and exposes them through a provider-neutral catalog and loader. The filesystem provider scans five ranked roots for SKILL.md or flat Markdown; remote and embedded providers are explicitly allowed.
- Agent Presets & Persona12
A preset is a directory holding one agent.cordis.yml. Mounting it under an agent's scope gives that session its own tools and prompt sections while every other live session keeps its own; persona is the composable row that lets a preset change identity, not just tools.
- Context Compaction6
The compaction seam: one summarizing backend driven by token pressure and request-error recovery, an optional model-free tool-result pruner, and a human /compact command. There is deliberately no model-facing compact tool.
- Request Context4
Plugins that add model-visible request context without defining a tool: workspace instructions (AGENTS.md), current/elapsed time, tmux location, and bounded snapshots of other sessions.
- Attachments1
Durable binary attachment identity, validation and content-addressed local storage. Unsent browser drafts are deliberately outside this capability: bytes enter durable storage only on prompt submit or provider commit.
- Tool Output Spill0
Persists oversized tool output and replaces the inline result with a bounded preview plus a retrieval locator. Storage backend and spill policy are separate packages.
No third-party implementation indexed yet · gap: large
Session & Storage (8 categories)
- Workspaces66
Persistent workspaces: user directories with titles and ordered session membership, built over the domain storage facility.
- Session Data Plane3
The durable session data plane: persistence seam with JSONL/SQLite backends, projection seam and cache, log-backed titles with optional model-backed providers, and outbound session telemetry.
- Settings Providers3
Plugins register namespace schemas and resolve layered values; providers store the raw document. One file-backed provider ships, watching external edits.
- Credentials Providers2
Configuration carries references, not secret values; providers own the values and consumers resolve per operation, so a rotated credential reaches the very next request. One env-over-.credentials.yaml provider ships.
- Session Query1
Authorized retrieval over live and durable session logs — exact reads, relationship queries, full-text search — independent of compaction. One SQLite FTS backend in-box.
- Storage Backends0
Persists application data other than session event logs through named backends and typed data forms. Consumers use a data form rather than touching a backend.
No third-party implementation indexed yet · gap: medium
- Anonymous Identity0
Persists one anonymous Harness-home correlation id for telemetry, feedback and DeepSeek requests. These values do not represent an authenticated account.
No third-party implementation indexed yet · gap: none
- Human Feedback0
Two deliberately separate contracts: an immutable remark in the canonical session log, and editable per-assistant-message feedback in a local sidecar. Neither enters the model conversation.
No third-party implementation indexed yet · gap: none
Policy & Guards (3 categories)
- Human Interaction22
The human-collaboration plane: command registry, one-shot approval decisions, user-facing permission presets, and the provider-neutral question/answer seam. Approval fails closed when no answerer is present; UI front ends supply the question provider.
- Hook Bridges0
Bridges that point at an existing Claude Code / Codex hooks.json so external shell hooks run faithfully. The canonical surface is the harness's own typed interception points — a 'native hook' is just an ordinary Cordis plugin on them.
No third-party implementation indexed yet · gap: medium
- Loop Guards0
Behavioral guard plugins that watch the agent loop for unproductive patterns and enforce per-call budgets. A guard is a self-contained consumer of core services and extension points, not a swappable capability.
No third-party implementation indexed yet · gap: large
GUI & Remote (7 categories)
- Out-of-process SDK175
The protocol stack for driving a Harness runtime from another process: wire protocol, TypeScript client, stdio JSON-RPC server. Callers supply the runtime executable and its cordis.yml.
- Browser UI Plugins53
The browser half of the dsh web GUI: shell boot, browser-host communication, shared UI services and 30+ ui-* feature plugins composed through the slot system.
- Remote API Layer25
The application-facing Remote stack: remotes owns BFF policy and the selected business API; gateway implements the Typert unary RPC endpoints shared by host and client.
- ACP Server6
Exposes harness agents to programmatic clients over Agent Client Protocol. An interoperability transport, not a presentation or human-interaction layer; also the only in-box ctx.approval implementation.
- Themes3
The theme runtime owns light/dark/system preference and publishes immutable snapshots. Official note: third-party themes are an extension point, not a product — registering one means overriding same-named alias variables, with no validation that an override set is complete.
- Web GUI Host3
The host side of the web GUI: plain-node HTTP route carrier, the shared API gateway, SPA dist server, the workspace-directory picking seam with native/browse/auto backends, and a read-only Loader plugin inventory.
- Chat Nodes1
Contribute a business row to the built-in Web chat: register a ConversationNodeDefinition plus a keyed renderer. Documented as its own cookbook entry.
Composition & Toolchain (7 categories)
- Bundles184
The distribution format: an npm package declaring dsh.bundle with a cordis.patch.yml that inserts or overrides plugin rows. Installed with `dsh plugin --profile <name> add <pkg>`. Three ship in-box: base, web-app, headless.
- Profiles14
A profile is a directory under $DSH_HOME/profiles/<name> holding a package.json (out-of-tree deps + the ordered dsh.profile.bundles list) and the user's own cordis.patch.yml. Only web and headless ship as templates.
- Low-level Utilities5
Zero-dependency primitives shared across capability families: branded types, harness home paths, timeout/deadline classification, output retention bounds, atomic writes, shell-free native commands, and the layered launch-environment snapshot.
- Self-modifying Runtime1
Model-facing tools over the live cordis runtime the agent itself runs inside: inspect loaded plugins and the service API, define and run model-written dynamic packages, and retract them again.
- Boot Glue0
The channel-neutral boot library shared by the app bins: layered .env loading, fail-loud Loader guards, snapshot-aware config resolution, profile machinery, and command-line handoff.
No third-party implementation indexed yet · gap: none
- Test Support0
Repository development and test infrastructure rather than product APIs: ACP snapshot toolkit, agent-loop testkit, deterministic OpenAI-compatible fault server, recorded LLM replay, Loader smokes, client test runtime.
No third-party implementation indexed yet · gap: none
- Example Bundles0
Pre-composed plugin bundles a thin leaf cordis.yml loads instead of assembling the spine by hand. The -demo npm suffix marks each as non-product surface.
No third-party implementation indexed yet · gap: none