Skip to content

What is dsh

Mayfly is the terminal interface for DeepSeek Harness (dsh) — understanding a few core dsh concepts makes Mayfly much easier to use well. This handbook distills the dsh knowledge Mayfly users need; the complete engineering docs live at the official reference site.

Version basis

This handbook tracks Harness npm release 0.1.2-alpha.5 and Mayfly 0.1.0-alpha.1. When in doubt, trust your installed dsh --version and --dump-config.

What dsh is

dsh is a plugin-based agent harness: model adapters, tool execution, session persistence, approval and sandbox policies, settings, and credentials are all assembled as Cordis plugins. Every interface you see — Mayfly's TUI, the browser web app, the one-shot headless runner — is just a different assembly of the same plugin tree.

Three keywords:

  • Bundle — a set of plugins shipped with their own mount code, declaring its plugin rows through the package's cordis.patch.yml; dsh-base is the first layer of every profile.
  • Profile — a named assembly: the bundles it layers, its own patch overrides, and its independently installed plugins. See Profiles & directories.
  • Mayfly — is a bundle: it inserts 34 Mayfly-owned rows over dsh-base (including the private-runtime group that isolates management authority and raw app services) and takes over the terminal interface (see the features overview).

CLI cheat sheet

sh
dsh --profile <name> [task]      # boot a profile; a task argument enters that app
dsh --profile <name> --resume <id>  # resume a session
dsh web                          # alias for --profile web (the browser app)
dsh --profile <name> --patch ./x.yml  # append a patch overlay (repeatable)
dsh --profile <name> --dump-config   # print the fully composed plugin tree
dsh --profile <name> --dump-default-config  # the default tree without user layers
dsh plugin --profile <name> add <pkg>   # install a plugin into the profile (forwards to pnpm)

Handbook chapters

Preview · v0.1.0-alpha.1