CLI and configuration
Harmony adds one command group to the existing dsh launcher.
Commands
dsh harmony
Open the plugin-order TUI. The Web profile is the default.
dsh harmony
dsh harmony --profile tuidsh harmony status
Print every collected Patch and its state. The command exits with code 1 when any Patch has failed.
dsh harmony status
dsh harmony status --profile tuidsh harmony inspect
Print original, intermediate, and final source for collected targets.
dsh harmony inspect
dsh harmony inspect some-dsh-plugin
dsh harmony inspect some-dsh-plugin --file lib/index.jsAll commands accept --profile <name>.
Profile state
Each profile stores Harmony state at:
$DSH_HOME/profiles/<name>/harmony.jsonThe file contains the manual plugin order and disabled stable Patch keys. Harmony synchronizes it with installed dependencies: new plugins append to the order and removed plugins disappear.
Do not edit the file while the profile is running. Use Web Settings or the TUI so the candidate state is preflighted and committed transactionally.
Provider metadata
Provider configuration belongs under dsh.harmony in package.json:
{
"dsh": {
"harmony": {
"patches": ["./patches/a.cjs", "./patches/b.cjs"],
"after": ["provider-a"],
"before": ["provider-c"],
"conflicts": ["legacy-provider"]
}
}
}| Field | Meaning |
|---|---|
patches | CommonJS Patch modules in declaration order |
before | Provider package names this provider prefers to precede |
after | Provider package names this provider prefers to follow |
conflicts | Provider package names that produce an incompatibility warning |
Environment
| Variable | Purpose |
|---|---|
DSH_HOME | Overrides the Harness home that contains profiles and Harmony state |
DSH_HARMONY_DSH_ENTRY | Selects an explicit official @deepseek-ai/dsh/lib/bin.js, primarily for Desktop integration |
Stable Patch keys
Harmony combines the provider package name and Patch id into a stable key:
provider-package/patch-idStatus output, enablement, inspection, dependencies, and errors use this key. Disabling <provider>/* disables the whole provider and removes its active conflict warnings.