Operator sequence
Install, identify yourself, then inventory.
Install the all-in-one package
The npm latest channel is the published T1-through-T6 Pi aggregate. It loads one Pi entrypoint and registers all 135 ProductUseful plugins. Use the release channel rather than an unpacked directory whose inventory may differ from the release lock.
pi install npm:@pi-sparkles/pi-sparkles@latestSet the operator identity
AGENT_CONTACT is the one non-secret identity reused by every CN, HK, and US adapter. Export it in the environment that launches Pi. It grants no provider or market authority.
export AGENT_CONTACT="ops@example.com"Add only the adapters you will select
Optional credentials stay in the same process environment. A missing provider is allowed. Never put values in a prompt, repository, receipt, or this website.
export TUSHARE_TOKEN="<secret-manager:tushare>"
export ALPACA_API_KEY_ID="<secret-manager:alpaca-key-id>"
export ALPACA_API_SECRET_KEY="<secret-manager:alpaca-secret>"
export OPENFIGI_API_KEY="<secret-manager:openfigi>"
export TWELVE_DATA_API_KEY="<secret-manager:twelve-data>"
export FRED_API_KEY="<secret-manager:fred>"Launch Pi and inventory the path
Reload or restart Pi after changing configuration because plugins capture environment values when their factory initializes. Ask for the capability inventory before any fetch.
piChoose and initialize a DSH profile
Sparkles requires exactly DSH 0.2.0-rc.2, the installed 0.2.0 prerelease API. DSH 0.1.7-rc.2 and earlier hosts are unsupported. Use Node.js 22.19 or later and make pnpm available on PATH. Use web for the browser client and finance-track overlay; use headless for an agent without browser UI.
node --version # 22.19.0 or later
npm install -g pnpm
npm install -g @deepseek-ai/dsh@0.2.0-rc.2Install the all-in-one bundle
The package declares dsh.bundle.patch, so dsh plugin adds it to the selected profile's bundle stack automatically. Profiles are isolated; repeat this command for every profile that should load Sparkles.
dsh plugin --profile web add @dsh-sparkles/dsh-sparkles@latestSet the DSH runtime environment
Put AGENT_CONTACT and only the optional provider credentials you own in $DSH_HOME/.env (normally ~/.dsh/.env), or export them into the launch process. Never put values in a prompt or profile patch.
mkdir -p "$HOME/.dsh"
$EDITOR "$HOME/.dsh/.env"
chmod 600 "$HOME/.dsh/.env"Launch and verify the profile
Restart the DSH process after upgrading Sparkles or changing its environment, then refresh the browser. A browser refresh alone does not reload the server-side receipt adapter. The web profile loads the browser overlay; the headless profile loads the same server tools without that visual surface.
dsh --version # must be 0.2.0-rc.2
dsh plugin --profile web why @dsh-sparkles/dsh-sparkles
dsh --profile web --dump-config
dsh web@latest to follow the current supported release.Same-process environment
Configuration is captured at plugin init.
The Pi package does not load .env files. Use your shell, service manager, or a private loader, then start Pi from that environment. Restart Pi after changing values.
# Illustrative names only — supply your own private values
export AGENT_CONTACT="ops@example.com"
# Optional read-only adapters. Omit any you will not select.
export OPENFIGI_API_KEY="<secret-manager:openfigi>"
export TUSHARE_TOKEN="<secret-manager:tushare>"
export ALPACA_API_KEY_ID="<secret-manager:alpaca-key-id>"
export ALPACA_API_SECRET_KEY="<secret-manager:alpaca-secret>"
export TWELVE_DATA_API_KEY="<secret-manager:twelve-data>"
export FRED_API_KEY="<secret-manager:fred>"
# Launch Pi from the same private environment
pi --finance-track cnDSH loads inherited environment values and its home-level $DSH_HOME/.env file, normally ~/.dsh/.env. The invocation directory's .env can also contribute values. Inherited shell values take precedence. Restart the profile after changes.
# ~/.dsh/.env — illustrative names only
AGENT_CONTACT="ops@example.com"
# Optional read-only adapters. Omit any you will not select.
OPENFIGI_API_KEY="<secret-manager:openfigi>"
TUSHARE_TOKEN="<secret-manager:tushare>"
ALPACA_API_KEY_ID="<secret-manager:alpaca-key-id>"
ALPACA_API_SECRET_KEY="<secret-manager:alpaca-secret>"
TWELVE_DATA_API_KEY="<secret-manager:twelve-data>"
FRED_API_KEY="<secret-manager:fred>"
# Restart the selected profile after changing the file
dsh webAGENT_CONTACT.First request after install
Refuse implicit provider choice.
Show the Sparkles finance capability inventory. Do not reveal environment values. Ask me to choose CN, US, or HK, then list only the configured read-only sources for that track. Do not fetch data or infer a provider.
/finance-setup and /finance-track are registered in both host lanes. See the command reference for host-specific launch flags and status UI.
What the package contains
Names, checksums, and notices — not gateways.
- One host entrypoint per distribution, an exact file allowlist, Apache-2.0 and third-party notices, and inner plus outer checksums.
CONFIGURATION.mdlists environment-variable names and declared provider access. It never contains values.pdfjs-distis pinned so CN PDF CMap assets resolve at runtime. Host libraries remain required peers and are not bundled into either distribution.- Futu OpenD, Alpaca, IBKR, their SDKs or gateways, credentials, login state, entitlements, and live certification stay outside the tarball.
- There are no npm lifecycle scripts. Duplicate named registrations fail before they reach the selected host.
Source checkout
Contributors build each host lane explicitly.
A later tier includes its ProductUseful dependencies. The release aggregate selection is always T6, meaning T1 through T6 in ledger order. T5 remains available only to reproduce the prior release boundary.
bun run aggregate:build
pi --no-extensions -e ./dist/aggregate/t6 --list-models
less dist/aggregate/t6/CONFIGURATION.mdbun run dsh:bundle
bun run dsh:verify
bun run dsh:npm:release:verify
dsh plugin --profile web add ./dist/dsh/dsh-sparklesPackage maturity and tier maturity are different scales:
Draft → Designing → Implementing → Experimental
Experimental describes existing package behavior. It is not a delivery target or a permission to hide unknowns.
Queued → BlockerResolution → Building → Verifying → ProductUseful
Experimental describes existing package behavior. ProductUseful applies only to a whole role tier with a supported repeatable input path and a complete professional journey. The shared ledger marks T1 through T6 ProductUseful; publishing remains host-specific.
Trust the artifact
Treat the extension as local application code.
- A Pi extension or DSH server plugin runs as trusted local application code with host-process permissions. It is not the agent's command sandbox.
- Only supported, content-locked npm releases should be used. Verify registry integrity and the included SHA256SUMS against release-lock.json.
- Each host package declares its own exact runtime files and host peers. The shared finance core does not make Pi and DSH host APIs interchangeable.
- There are no npm lifecycle scripts. Packaging never reads credential values.
- Report suspected vulnerabilities privately to the repository owner. Revoke any exposed credential before sending a redacted report.