DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins

@woosau/dsh-custom-env

Custom Env

DSH plugin: manage $DSH_HOME/.env from Settings

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add @woosau/dsh-custom-env@0.1.10
READMECompatibilityVersions

Compatibility and provenance

Custom Env is published as @woosau/dsh-custom-env and currently resolves to version 0.1.10. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
web
Release source
npm
Registry updated
11/3/2026

Versions

0.1.10stable
11/3/2026
0.1.9stable
11/2/2026
0.1.8stable
11/2/2026
Show 4 more versionsCollapse versions
0.1.6stable
10/30/2026
0.1.4stable
10/29/2026
0.1.3stable
10/29/2026
0.1.0stable
10/26/2026

Related plugins

Loading related plugins…

Latest
0.1.10
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
221.7 kB
Files
40
Surface
web
License
MIT
Source
npm
GitHub
★ 1
Weekly downloads
0
Last push
11/3/2026
View source ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue

Related plugins

More verified plugins in developer-tools.

Web App@deepseek-ai/dsh-web-appThe dsh browser-surface bundle: the web patch layer over dsh-base plus the runtime glue plugin (frontend dist serving, web-surface prompt, bash runtime variables, URL line)Sdk App@deepseek-ai/dsh-sdk-appThe dsh SDK profile bundle: stdio JSON-RPC serving and process lifecycle over dsh-baseExperimental Inspector@deepseek-ai/dsh-experimental-inspectorExperimental cross-realm CDP hub for Host debugging and Client Runtime inspectionExperimental Inspector Profile@deepseek-ai/dsh-experimental-inspector-profileOptional Web bundle for raw Session logs and Chat node inspection

README

dsh-custom-env

English | 中文

Community DeepSeek Harness plugin for managing environment variables in Settings → Environment. Not an official DeepSeek AI product.

Changes apply to the running app right away, and on Windows / macOS also to the user environment so new terminals can see them. Linux user-environment sync is not supported.

Install

Requires DSH with the dsh CLI (desktop or web).

dsh plugin --profile desktop add @woosau/dsh-custom-env
# or: dsh plugin --profile web add @woosau/dsh-custom-env
# or: dsh plugin --profile desktop add github:ownduck/dsh-custom-env

If install fails because Desktop is locking files, quit Desktop first. After install, restart DSH and open Settings → Environment.

dsh plugin --profile desktop remove @woosau/dsh-custom-env

For users

  1. Open Settings → Environment
  2. Edit a row as a draft → Confirm to save, Cancel to discard
  3. Groups (accordion) are UI/plugin labels only — they do not change process.env / OS sync. .env stays NAME=value; group metadata is $DSH_HOME/.dsh-custom-env-groups.json. Create / rename / delete groups from the headers; move a saved row with Move to group
  4. Paste NAME=VALUE lines into an empty row to add or update several variables at once (same names overlay existing rows as drafts and keep their group)
  5. Drag across rows to multi-select, or Ctrl/Cmd+click to toggle; Ctrl/Cmd+C copies selected rows as NAME=VALUE (input text selection still wins when present)
  6. Restore brings back the value from when this app session started
  7. At startup, values are injected into the Host process.env first; writing the user environment (registry / launchctl) is deferred via setImmediate into a child process and is not broadcast. Log off or reboot before other tools need those values
  8. Use Install only when shown, to wire this Host’s dsh command into your user PATH (Windows / macOS)

System-reserved names (such as PATH and names starting with DSH_ / XDG_) cannot be edited here.

When saving a value

You saveVariable does not exist yetVariable already exists
A non-empty valueCreatedReplaced
An empty valueCreated as emptyLeft unchanged

For other plugins (Remote API)

Call the Host customEnv service (ctx.get('customEnv') or injected ctx.customEnv).

Everyday use — by variable name

const env = ctx.get('customEnv')

await env?.setVar('MY_KEY', 'value')              // create → default group; existing keep group
await env?.setVar('MY_KEY', 'value', someGroupId) // also set / move group
await env?.setVar('MY_KEY', '')                   // create only if missing
await env?.removeVar('MY_KEY')

await env?.setVars([
  { name: 'A', value: '1' },
  { name: 'B', value: '', group: someGroupId }, // no-op if B already exists
])
await env?.removeVars(['A', 'B'])

const group = await env?.createGroup('Social')
await env?.renameGroup(group!.id, 'Social media')
await env?.deleteGroup(group!.id, { moveToDefault: true })
await env?.moveEntry(rowId, group!.id)

Reserved names are rejected (batch calls fail entirely). Unknown group ids raise custom-env/invalid-group.

CallPurpose
setVar(name, value, group?)Create/replace by name. Omit group: new → default, existing keep group. Pass group to assign/move
setVars([{ name, value, group? }, ...])Same rules per entry; last duplicate name wins
removeVar(name) / removeVars(names)Delete by name (clears membership)
createGroup(title)Create custom group; returns { id, title }
renameGroup(id, title)Rename custom group (not default)
deleteGroup(id, { moveToDefault })Delete custom group; true moves members to default, false deletes their variables
moveEntry(id, groupId)Move one row (by Settings row id) to another group

Settings UI — by row id

CallPurpose
list()Variables + groups; each entry has groupId
upsert(id, name, value, groupId?)Create (id empty; groupId defaults to default) or update/rename by id (omit groupId to keep group)
deleteEntry(id)Delete that row
restore(id)Restore session-start value, or remove if the row was added later

CLI helpers

CallPurpose
cliStatus()Whether this Host’s dsh CLI is ready / can be installed
cliInstall()Install or repair that CLI entry

License

MIT