Skip to content

Install your first plugin

Add a plugin to a dsh profile, confirm the layer actually applied, and remove it cleanly.

Every listing on this site carries a copy-ready install command. It goes into a profile β€” one runnable composition of bundles.

dsh plugin --profile demo add <package-name>

Omit --profile for the default profile. The first install initialises the profile with @deepseek-ai/dsh-base as its first bundle.

Confirm it applied

Installing a package and activating its layer are two different things. Check before you boot:

dsh --profile demo --dump-config

You should see a # == <package-name> layer in the output. If it is missing, the package installed as a plain dependency β€” it has no dsh.bundle manifest and contributes no configuration.

Remove it

dsh plugin --profile demo remove <package-name>

This drops both the dependency and the layer.

How layers stack

A profile is an ordered list of bundles. At boot the harness applies each bundle's patch layer in that order β€” @deepseek-ai/dsh-base first, then the bundles in the order you installed them. When two layers touch the same plugin row, the later one wins, and it replaces the row's whole configuration rather than merging into it. That is how plugins patching the same seam still compose: the one listed later in the profile has the final say.

The merged patch file

The CLI accumulates a profile's patches into $DSH_HOME/cordis.patch.yml, which the harness reads when the profile boots. Treat that file as generated state, like a lockfile: let the commands update it, and do not hand-edit it.

Temporary --patch overlays

On top of the profile you can add extra overlays at boot with the --patch flag, each pointing at another patch file. Overlays are applied last, so they override everything in the profile, and they never modify the profile itself β€” drop the flag and the profile boots exactly as before. Use them for experiments or one-off tweaks you do not want to keep.

Last updated 2026-08-22