Superself's self CLI as model-facing tools (project context, work units, reports, decisions) plus a /self command — cross-session, cross-project project state kept outside the code repo.
Install
# from npm (prebuilt)
dsh plugin --profile web add dsh-plugin-superself
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:fxylabs/superself#path:/apps/dsh-plugin
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
A DeepSeek Harness (dsh)
plugin that gives the model Superself's self CLI as tools, plus a /self
command for you.
Superself is version control for a project's — and a company's — state:
goals, decisions, work units, reports, kept outside the code repository and
derived into what an agent must know now by self context. dsh's own goal
plugin holds a goal for one session; Superself holds the project's state
across sessions, across projects, and across agent tools, with a human
approving what counts as decided and done.
Tested against @deepseek-ai/dsh@0.1.1-rc.2. dsh is a release candidate and
its plugin API will break; this adapter is kept thin (four tools, one command,
one runner) so re-targeting is cheap. The peer range in package.json names
the line it was tested on.
Install
npm i -g superself # the self CLI (once per machine)
dsh plugin --profile web add dsh-plugin-superself # into the profile you use (web, tui, …)
Then start dsh (dsh web) from a directory that is a Superself project — one
with a .self file at its root, which self project init writes — or point
the plugin at one with cwd below. dsh plugin needs --profile; the plugin
goes into each profile you want it in.
Tested on macOS and Linux. On Windows the self launcher is self.cmd, which
this plugin does not resolve yet — set selfBinary to a path that runs
without a shell, or open an issue.
What the model gets
| Tool | Runs | Notes |
|---|---|---|
superself_context |
self context |
Goal, decisions, conventions, open work, deadlines, what is waiting on a human. |
superself_work |
self work / self work show <id> / self work start <id> |
action is list, show, or start; id is validated as w-[a-z0-9]+. |
superself_report |
self report <id> "<text>" [--evidence <commit>] |
Refuses an empty text. |
superself_decide |
self decide "<text>" [--why <reason>] |
Refuses an empty text. |
Every tool shells out to the installed self with an argv array — no shell,
no reimplementation of self's logic. A refusal (self not installed, no project
here, a non-zero exit) comes back as a message the model can act on, not as a
thrown error.
What you get
/self prints self context in the chat, without a model turn.
Config
Override in the profile's patch layer (dsh plugin installs the plugin under
the id superself):
- insert:
- id: superself
name: dsh-plugin-superself
config:
selfBinary: self # a name looked up on PATH, or a full path
cwd: "" # directory to run self in; "" = where dsh was started
maxOutputChars: 20000 # longer output keeps its head and ends with a marker
| Field | Default | Meaning |
|---|---|---|
selfBinary |
self |
Looked up on the dsh process's PATH, then in /opt/homebrew/bin, /usr/local/bin, /usr/bin, ~/.npm-global/bin, ~/.local/bin. A value containing / is used as a path. |
cwd |
"" |
The plugin walks up from here to the nearest .self and runs self in that directory; the tool output says so when it differs. Empty means the directory dsh was started in. |
maxOutputChars |
20000 |
Output past this is cut; the marker names the self command to run for the rest. |
Messages the model may see
The \self` CLI was not found …— install withnpm i -g superself, or setselfBinary`.No Superself project at or above <dir> …— runself project initin the project, or setcwd.- Anything self refused, verbatim from its stderr.
Tool output never includes environment values.
Develop
pnpm install
pnpm --filter dsh-plugin-superself test # builds lib/ and runs the unit tests
pnpm --filter dsh-plugin-superself build
dsh plugin --profile scratch add ./apps/dsh-plugin # local install into a profile
The unit tests run the real runner against a fake self on a private PATH
and a scratch project tree; they never touch an installed self or workspace.
test/smoke/README.md is the real-install check — pack, dsh plugin add,
boot a profile, call the tools through dsh's registry — with the transcript of
the last run that passed.
License
Apache-2.0, as the rest of Superself.
Links
More in this category
Q00/ouroboros#integrations/dsh-plugin★ 5734
Config-only bundle that mounts Ouroboros through the DSH MCP client, exposing 36 interview, Seed, execution, evaluation, and evolution workflow tools in DSH.
chuspeeism/dashi-taskboard#deepseek-harness★ 2814
Embeds the active installed Codex Taskboard runtime in the DeepSeek Harness sidebar, using its launcher runtime descriptor instead of a fixed port.
NanmiCoder/dsh-agent-teams★ 1222
AgentTeams multi-agent teams.
tong-io/tongflow#dsh-tongflow★ 1003
TongFlow film-crew studio for image, voice, music and video production: the agent writes per-asset TongFlow workflow files (.tongflow.json) that run through TongFlow plugins, with an embedded workflow canvas, a shot/character/take project layout and a manga-drama template; sessions starting with @tongflow open the Studio view.
sandbaseai/sandbase-harness★ 641
Connects dsh to a local SandBase Harness runtime over stdio MCP for managing agents and sessions, streaming turns, inspecting artifacts and cancelling work.
EthanYoQ/AI-Novel-Writer#dsh-ai-novel-writer★ 512
Installs a dedicated AI novel-writing preset and workbench: revisioned local project assets, a compact side drawer, and native approval-gated single-file changes.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.