Skip to main content

DSH Marketplace for Python — DeepSeek Harness plugins, importable

PyPI version Python versions Tests Zero dependencies MIT LINUX DO

English · 简体中文


Find and install DeepSeek Harness (DSH) plugins from Python.

pip install dshmarketplace
import dshmarketplace as dshm

for plugin in dshm.search("memory", limit=5):
    print(plugin.full_name, "—", plugin.summary)

Zero dependencies. Typed. Works as a library, a CLI, or a pair of agent tools.

Why this exists

DeepSeek Harness is DeepSeek's open agent harness, where every capability is a plugin. There are over a thousand of them, and the ecosystem is weeks old — which means a plugin name recalled from a model's training data is more likely to be wrong than right, and a wrong name is either a failed install or somebody else's package.

This package is how a Python agent looks one up instead of guessing.

It reads the same catalogue as dshmarketplace.dev, the dshmarketplace-cli npm package and the in-DSH plugin, so a listing cannot say one thing here and something else in a browser.

Library

from dshmarketplace import Client

client = Client()

results = client.search("vision", category="vision", limit=5)
print(results.total)

plugin = client.get("Anionex/dsh-vision-toolkit")
plugin.summary                 # English
plugin.summary_zh              # Chinese, hand-written — not a translation
plugin.summary_in("zh")        # whichever the locale asks for
plugin.stars, plugin.license, plugin.risk_flags

plan = client.resolve("Anionex/dsh-vision-toolkit")
plan.command                   # 'dsh plugin --profile web add dsh-vision-toolkit'
plan.argv                      # the list that would actually be executed

client.install("Anionex/dsh-vision-toolkit", dry_run=True)

Async, for agents that cannot block the event loop:

from dshmarketplace import AsyncClient

plugins = await AsyncClient().search("memory")

The transport is still urllib, moved off the loop with asyncio.to_thread. That is deliberate and stated plainly: it does not block, and it does not pretend to be a native async client. Pulling in httpx to make it one would cost every user a dependency conflict for one request per turn.

CLI

dshm find memory
dshm find vision --limit 5 --category vision
dshm info Anionex/dsh-vision-toolkit
dshm add NanmiCoder/dsh-agent-teams --dry-run
Option
--json Machine-readable output, stable schema (all commands)
--limit <n> Results to show (find, default 10)
--category <id> Filter by category (find)
--profile <name> DSH profile to install into (add, default web)
--source github Force the GitHub source over npm (add)
--dry-run Resolve without running the install (add)

Agent tools

Two tools in the JSON-Schema shape OpenAI, Anthropic and most frameworks accept, plus a dispatcher — wiring is two lines.

from dshmarketplace.tools import TOOLS, dispatch

response = anthropic.messages.create(model="claude-opus-4-6", tools=TOOLS, ...)

for block in response.content:
    if block.type == "tool_use":
        result = dispatch(block.name, block.input)

resolve_dsh_install never executes anything. It returns the exact command, the source repository and the detected risk flags, so the decision to run stays with the caller.

Two things about installing DSH plugins

Neither is this package's doing, and both cost real time to find.

--profile is mandatory. dsh plugin forwards to pnpm inside a profile directory, so dsh plugin add x exits with required option '--profile <name>' not specified and installs nothing. Every command produced here carries it.

github:owner/repo#subpath cannot work — pnpm reads everything after # as a git ref. Monorepo plugins with no published npm package therefore have no one-line install. plugin.install is None for them and installable is False; you will never be handed a command that fails.

A GitHub-sourced install also needs pnpm's allowBuilds allowlist before the package's build script will run. That, not download size, is why npm is offered first.

Safety

Plugins are third-party code running with your agent's permissions. Listing in the catalogue is not a security review.

An install command is never assembled from free text and never reaches a shell. The catalogue supplies it already built; plan_from_command accepts only a bare npm specifier or github:owner/repo, rejects anything containing .., and argv is passed as a list with shell=False. If the catalogue were ever compromised, the blast radius stops there — tests/test_install.py exists to keep it that way.

risk_flags reports what was detected automatically: an install script, a terminal surface, a credential requirement. An empty list proves nothing. The source repository is always available; read it first.

Configuration

Variable
DSHM_API Point at a mirror, a staging deployment or a local catalogue
NO_COLOR Plain CLI output

Development

pip install -e ".[dev]"
pytest
pytest -m live        # opt-in, hits the real catalogue

Related

Contact

Acknowledgements

  • LINUX DO — where the DSH ecosystem is actually discussed, and where this project is published and takes its feedback.
  • awesome-dsh-plugin (CC0-1.0) — the seed the catalogue grew from.

License

MIT. Independent project, not affiliated with DeepSeek. DeepSeek and DeepSeek Harness are marks of their respective owners, used here only to describe what these plugins are for.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dshmarketplace-0.1.0.tar.gz (23.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dshmarketplace-0.1.0-py3-none-any.whl (19.7 kB view details)

Uploaded Python 3

File details

Details for the file dshmarketplace-0.1.0.tar.gz.

File metadata

  • Download URL: dshmarketplace-0.1.0.tar.gz
  • Upload date:
  • Size: 23.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for dshmarketplace-0.1.0.tar.gz
Algorithm Hash digest
SHA256 565401b840e19ba856871c388f3d570a19144af4f2edf01e1a8912a4a47e151f
MD5 b724fbc7fb86ddc82b8d76f3fcfe0f8e
BLAKE2b-256 d769584fd65ce93369958feab427d8f19335febe61002ae3f40225024172a208

See more details on using hashes here.

Provenance

The following attestation bundles were made for dshmarketplace-0.1.0.tar.gz:

Publisher: publish.yml on DshMarketPlace/dshmarketplace-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dshmarketplace-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: dshmarketplace-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 19.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for dshmarketplace-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5fd60bf3487f975ad10fc701c11b1852e42c533f7a7eb602b5e753591738bdc2
MD5 91c35684769308f8b36f9a37b97668b1
BLAKE2b-256 2dc6345c847ba061f45f1b901862e741e5c000c86f36988250b0bad485a43534

See more details on using hashes here.

Provenance

The following attestation bundles were made for dshmarketplace-0.1.0-py3-none-any.whl:

Publisher: publish.yml on DshMarketPlace/dshmarketplace-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page