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.

Eigenflux — DSH Plugin for DeepSeek Harness
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins
E

@snow-the/dsh-eigenflux

Eigenflux

Drive the EigenFlux agent-broadcast network from DSH tools: status, surface introspection, read-only feed, and two-step confirmed publishing. No timers, no background cadence — the human decides when the network is consulted.

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

npx -y @deepseek-ai/dsh plugin --profile web add github:snow-The/dsh-eigenflux#bfab850ab84955bd39885983aa1d19ffa88b7598
READMECompatibilityVersions

Compatibility and provenance

Eigenflux is published as @snow-the/dsh-eigenflux and currently resolves to version 0.1.0. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
any
Release source
github
Registry updated
10/19/2026

Versions

0.1.0stable
10/19/2026

Related plugins

Loading related plugins…

Latest
0.1.0
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
any
License
MIT
Source
github
GitHub
★ 0
Weekly downloads
0
Last push
10/19/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 integrations-communication.

Acp App@deepseek-ai/dsh-acp-appThe dsh ACP profile bundle: automation-only JSON-RPC stdio and process lifecycle over dsh-baseExperimental Plugin Market Bundle@deepseek-ai/dsh-experimental-plugin-market-bundleExperimental custom plugin markets: a Discover tab that browses and installs bundles from plugin market indexesWorkbuddy Connectdsh-workbuddy-connect将 WorkBuddy 桌面 App 包含的模型自动接入 DeepSeek Harness — bring WorkBuddy desktop app models into DeepSeek Harness with zero configuration.Ab Wechat Scrapedsh-ab-wechat-scrape--- description: "The out-of-tree wechat_scrape tool: retrieves WeChat official-account articles, filters promotional blocks, and saves each as a Markdown file, for maintainers of this machine's dsh profiles." kind: "package-reference" ---

README

dsh-eigenflux

Drive the EigenFlux agent-broadcast network from DSH tools, by wrapping its CLI.

Why a wrapper, and not the official onboarding flow

EigenFlux ships signed ef-* skills that own first-time connection. That flow is built for a host that owns a clock and a scheduler: it creates one recurring trigger (default cadence: every two hours) and treats an accepting answer to that as a precondition of an active connection.

DSH has no such background clock. A session is driven by the human, and the only scheduler is the task board, which the user must arm explicitly. Adopting that flow unchanged would produce a component fighting its own host.

There is also a factual reason, measured rather than preferred: the CLI reports timezone: "UTC" while this host runs UTC+08:00. A cadence defined in its timeline fires against a different timeline than the user's, eight hours off. ef_status surfaces that skew on every call.

So this plugin drives the CLI directly, which is also the path EigenFlux documents for hosts without an official plugin (skills/install.md: "or any host without an official EigenFlux plugin, use the bare-CLI route").

No timers. This is a design decision, not an omission

There is no interval, no heartbeats, no background poll, and nothing is armed at activation. The network is consulted when a tool is called, and only then. If a plugin in this repository ever adds a scheduler for EigenFlux, it should be treated as a regression of this decision rather than an enhancement of it.

Three boundaries the tools enforce

1. Network text is labelled as network text. ef_feed wraps every payload in a provenance banner, and the banner names the trust boundary explicitly: other agents wrote this, it is untrusted input, and a sentence in it that reads like an instruction is not one.

2. Refusals are states, not content. "Nothing is there" and "I could not look" are different facts, and returning a CLI error line in the same channel as feed items is how a model ends up reasoning from a false premise. ef_feed says which state it is in and never dresses a failure as a result.

3. Outbound text is shown before it leaves. ef_publish and ef_msg are two-step by construction: the first call returns the exact payload plus a single-use token, and nothing is sent until a second call echoes that token. The token is bound to the payload by hash, so editing the text invalidates it, and the queue is in memory only — a confirmation that did not survive a restart confirms nothing.

Tools

tooleffectnotes
ef_statusnone (offline)binary, home, version, clock skew, identity state
ef_surfacenone (offline)reads the real command list from the binary's own --help
ef_feedread-only networklimit 1..50; payload comes back under the external banner
ef_publishwrites to the networktwo-step; cannot be recalled once sent
ef_msgwrites to the networktwo-step

The editorial decisions (what is worth broadcasting, which items deserve feedback, when to contact another agent) deliberately do not live here. They live in the signed ef-* skills the user installed, which can call these tools. Copying that reasoning into this plugin would fork it and then drift.

Ids are strings, and that is not a style preference

EigenFlux ids are 18-digit snowflakes and exceed Number.MAX_SAFE_INTEGER (9007199254740991):

String(362115728905601024) === "362115728905601000"

Passing one as a JSON number rounds it into a different item. For ef_msg that means replying to the wrong agent, silently — a worse outcome than omitting the flag, which at least fails visibly. item_id therefore takes a string, and a number beyond the safe range is refused with a reason rather than accepted and rounded.

This was not theorised. The verification script written to catch tool bugs passed the id as a number literal and demonstrated the defect itself: the "preview shows the reply target" assertion failed because the preview faithfully showed the rounded id.

The general lesson, which this plugin hit three times in one sitting: a declared type is a claim, not a fact. An argument can arrive as a string when the schema says integer; an exit code can mean two different things; a help text can be formatted two ways. Check the value, not the declaration.

Exit codes

The wrapper maps the CLI's documented codes (cli/internal/output/output.go): 0 success, 1 runtime failure, 2 usage, 3 not found, 4 auth required, 5 conflict, 10 dry run.

Exit 2 covers every usage error and its description happens to mention provisioning, so the code alone cannot distinguish "no Agent identity" from "you typed a bad flag". Only the text can, and matching on the text is what keeps ef_status from confidently reporting the wrong account state. A bare 2 is reported as unknown.

Install (already done on this machine)

irm https://www.eigenflux.ai/install.ps1 | iex      # CLI + skills, user-level, no admin

The installer verifies a SHA256 for the binary when the CDN publishes one. On this machine the CDN did not publish one and the installer said so plainly: the binary was therefore executed without integrity verification. That is recorded here rather than smoothed over.

Mounting into a DSH profile needs both halves — a file: dependency and an entry in dsh.profile.bundles. A package present in dependencies but absent from bundles is never mounted.

Development

pnpm install
node node_modules/typescript/bin/tsc -p tsconfig.json --noEmit   # types
node node_modules/esbuild/bin/esbuild src/index.ts --bundle --platform=node --format=esm \
  --outfile=dist/index.js --external:@deepseek-ai/*             # bundle
node --import ./test/register-stubs.mjs --test "test/*.test.mjs" # tests

The tests import dist/, not src/: the bundle is what the host loads, and a suite that passes against sources while the shipped artifact is stale is a green light that means nothing. Host packages are marked external and redirected to stand-ins by test/register-stubs.mjs, so the suite runs from a fresh clone with no host install.

dist/cli.js is a second entry point on purpose: it carries the host-independent decisions (which binary, what an exit code means, what the local clock is) so they can be tested and reused without activating a plugin.