tokenlab-deepseek-harness-provider
Manifest validTokenLab native-protocol model provider, multimodal tools, and async tasks for DeepSeek Harness
TokenLab for DeepSeek Harness
@tokenlabai/dsh-provider is an installable DeepSeek Harness profile bundle. It provides TokenLab model routes plus catalog, creation, and task tools.
The bundle keeps model traffic on the most native protocol DeepSeek Harness currently supports:
- OpenAI-owned models that declare
openai_responsesuse/v1/responses. - Anthropic-owned models that declare
anthropic_messagesuse/v1/messages. - All remaining compatible chat models use
/v1/chat/completions. - Gemini-native
generateContentis not configurable in the current Harness custom-provider adapter, so Gemini models use their declared Chat Completions compatibility path.
Protocol eligibility comes from each model's public TokenLab detail contract at GET /v1/models/{id}. The generator never classifies a model by substring or provider-internal route data.
What is included
| Surface | Implementation | Current bundled contract |
|---|---|---|
| Model picker | Existing DSH llm-pi-ai adapter | 136 public chat models on three exclusive protocol routes |
| Responses | Native openai-responses route | 27 models |
| Messages | Native anthropic-messages route | 10 models |
| Chat | OpenAI Chat Completions route | 99 models |
| Multimodal and developer tools | Official DSH MCP bridge + @tokenlabai/mcp-server@0.6.24 core profile | 32 MCP tools by default; catalog 6 / full 89 available |
| Async completion | Native tokenlab_wait_task tool | image, video, music, and 3D task polling with cancellation and bounded retries |
The full MCP profile covers public model discovery and pricing, Chat Completions, Responses, Anthropic Messages, Gemini generateContent, System One decisions, image generation/edit/variation, video, music, 3D, TTS, STT, files, tasks, embeddings, rerank, translation, response lifecycle, batches, Seedance assets/groups, worlds, workspace webhooks, and other allowlisted developer operations in the pinned TokenLab MCP contract.
Requirements
- DeepSeek Harness
0.1.5-rc.3(the verified current target for bundle0.1.5) - Node.js
22.19+or24+ - A TokenLab API key for inference, media, files, tasks, embeddings, rerank, and translation
Public catalog and pricing tools remain available without a key, but this bundle starts the core tool profile and is intended for authenticated use.
Install
Install 0.1.5 for the current bundle.
Put the key in the project .env or the Harness-home .env. DSH loads those files into the launch environment before resolving bundle configuration and before starting the MCP child process.
TOKENLAB_API_KEY=sk-your-tokenlab-key
Then install the bundle into the profile you use:
dsh plugin --profile web add --workspace-root @tokenlabai/dsh-provider@0.1.5
For a headless profile:
dsh plugin --profile headless add --workspace-root @tokenlabai/dsh-provider@0.1.5
Restart that profile after installation. In the model picker, TokenLab appears as three provider routes:
TokenLab · ResponsesTokenLab · MessagesTokenLab · Chat
Each model ID appears on exactly one route.
Dependency release age
Harness forwards plugin commands to your installed pnpm. The normal pnpm 11 fresh-add flow records exact exceptions for selected releases that are less than a day old. A frozen install or an explicitly strict age policy can still reject them; this package's repository settings do not configure your Harness profile.
If an age check rejects this release, wait for your configured age window, or review the exact published versions and merge only these entries into the profile's existing pnpm-workspace.yaml (under $DSH_HOME/profiles/web for the web profile):
minimumReleaseAgeExclude:
- '@tokenlabai/dsh-provider@0.1.5'
- '@tokenlabai/mcp-server@0.6.24'
Replace older exclusions for these same two package names instead of adding duplicate selectors; preserve unrelated settings and exclusions, then repeat the same dsh plugin command. This does not disable age checks for other packages or versions.
Use multimedia and async tasks
The model sees TokenLab MCP tools under the mcp__tokenlab__... namespace. A typical async media flow is:
- Discover a currently enabled model with
mcp__tokenlab__list_modelsormcp__tokenlab__compare_models. - Submit with
mcp__tokenlab__create_video,create_music,create_3d_model, or an image tool. - Read
delivery.mode; do not assume every image result is synchronous. - If
delivery.modeisasync, passdelivery.task_idtotokenlab_wait_task. - Use the returned
status, fullresponse, andresult_urls. A timed-out wait returns the latest state so another call can resume polling.
tokenlab_wait_task forwards the Harness caller's AbortSignal through every fetch and cancellable delay. It treats completed, failed, succeeded, cancelled, and expired as terminal. Read-only polling retries a bounded number of transport failures, while HTTP failures are retried only when TokenLab explicitly returns retryable: true; Retry-After and retry_after are honored. Auth, ownership, and not-found responses are never retried. Result URLs are exposed only for successful terminal tasks. The tool never changes task state. Use the generated mcp__tokenlab__cancel_task tool when cancellation is supported and intended.
Configuration
Optional environment variables:
| Variable | Default | Purpose |
|---|---|---|
TOKENLAB_MCP_TOOL_PROFILE | core | catalog for discovery only (6 tools), core for common creation and task workflows (32), full for all pinned developer operations (89) |
TOKENLAB_MCP_SCHEMA_MODE | portable | portable, exact, or strict; execution still validates the complete API contract |
TOKENLAB_API_KEY | none | Shared TokenLab credential for model routes, MCP tools, and async wait |
TOKENLAB_MANAGEMENT_TOKEN | none | Separate mt-... workspace management credential for webhook tools in full; never substituted by the inference key |
TOKENLAB_API_BASE | https://api.tokenlab.sh | MCP and async-task API root |
TOKENLAB_OPENAI_BASE_URL | https://api.tokenlab.sh/v1 | Responses and Chat adapter base URL |
TOKENLAB_ANTHROPIC_BASE_URL | https://api.tokenlab.sh | Messages adapter base URL; the adapter appends /v1/messages |
The default core profile includes catalog and pricing, native chat protocols, System One decisions, images, video, music, 3D, audio, files, task status/cancellation, embeddings, rerank, and translation. Use TOKENLAB_MCP_TOOL_PROFILE=full when you need the additional response lifecycle, batches, Seedance assets/groups, worlds, or workspace webhook tools. Use catalog for discovery without generation tools. The separate tokenlab_wait_task poller remains available in every profile.
Jev / System One decisions
Discover category=decision with mcp__tokenlab__list_models, then inspect jev-1.13 with mcp__tokenlab__get_model. Use mcp__tokenlab__evaluate_decisions with the native model, state, and questions payload. It calls /v1/systemone synchronously and preserves typed answers, probabilities, optional confidence, and usage. Decisions are not chat models and do not belong in the model picker or tokenlab_wait_task. A decision does not authorize an action; application code still owns permissions and side effects.
Workspace webhooks
Set TOKENLAB_MCP_TOOL_PROFILE=full and a separate TOKENLAB_MANAGEMENT_TOKEN=mt-... in the launch environment to use webhook management. The bundle explicitly passes this credential to the MCP child because Harness filters inherited credential-shaped variables. An inference sk-... key cannot replace it. Management tokens have workspace-level authority beyond webhooks; grant only where intended and keep destructive calls subject to client approval. See the webhook guide for receiver verification and delivery recovery. Registering a webhook does not make Harness a webhook receiver.
Existing llm-pi-ai settings
Harness 0.1.5-rc.3 merges saved llm-pi-ai.providers by provider key. Existing providers with different keys remain alongside the three bundled TokenLab routes. Saved entries using tokenlab-responses, tokenlab-messages, or tokenlab-chat take precedence for that route; review those entries when upgrading an older catalog. Do not replace your entire settings document with the bundle patch.
The npm next line of Harness is a separate preview compatibility target and is not declared by this release. Bundle 0.1.5 pins the current latest Harness peer graph so a clean profile does not silently install an older MCP bridge beside a newer preview runtime.
Reasoning levels
The current TokenLab public model-detail response identifies reasoning capability but does not enumerate supported effort values per model. The bundle therefore leaves reasoningEfforts undeclared instead of guessing levels from model names or enabling every level. With custom provider keys, Harness has no matching built-in catalog to inherit; its effort picker will not offer levels for those entries. This does not disable a model's server-side reasoning behavior.
If you have separately verified a model's effort contract, configure reasoningEfforts on that model entry in its provider's models list. Harness maps each displayed level to the wire value, for example high: high only when that model accepts high; off: null means omit an effort value, not proof that the server disables reasoning. Preserve the other models when overriding a saved route. Do not add modelOverrides to these routes: Harness reserves that field for catalog-backed routes without an explicit models list. xhigh or max must not be enabled merely because a model supports reasoning.
Security and side effects
- Keep
TOKENLAB_API_KEYin.envor another trusted launch environment. Never commit it. - The MCP server runs locally over stdio with the same Node executable as Harness. No credential is sent to a hosted MCP service, and startup does not use
npxor a shell. - DSH treats MCP commands as trusted executables outside the agent sandbox. This bundle pins
@tokenlabai/mcp-server@0.6.22; review an upgrade before changing the pin. - Core and full tools include billable generation and destructive operations such as file deletion or task cancellation. Keep Harness approval policy enabled for those calls.
- Tool and model outputs are untrusted external content. Do not treat returned text or URLs as instructions.
- The async waiter includes request IDs in diagnostics but never includes the API key in errors or tool results.
Model catalog maintenance
The checked-in generated/model-routes.json is the machine-readable route snapshot, and cordis.patch.yml is generated from it.
npm run routes:source-check # read-only comparison with the live public model contract
npm run routes:sync # refresh the snapshot and generated bundle patch
npm run routes:check # offline generated-file consistency check
The routing policy is deterministic:
- Prefer the exact
owned_bynative format when both TokenLab and Harness declare it. - Otherwise use a declared Harness-supported compatibility format.
- Never place one model on more than one provider route.
- Fail the source check when an active model has no Harness-supported format.
Development and verification
corepack pnpm install
pnpm peers check
pnpm run check
pnpm run smoke:dsh
pnpm run build
npm pack --dry-run
The test suite covers native-route selection, route exclusivity, generated patch consistency, core-default MCP configuration and explicit profile selection, structured retry permission and delays, task-id fencing, successful-result URL extraction, transient retry limits, caller cancellation, and UTF-8-safe rendering. The clean-install smoke packs the local bundle, installs it into a fresh Harness 0.1.5-rc.3 Web profile, checks all three native routes and the async tool, boots the Web app, verifies HTTP 200, and confirms the TokenLab MCP child process is running before cleaning up the process tree.
Uninstall
dsh plugin --profile web remove --workspace-root @tokenlabai/dsh-provider
Restart the profile. Removing the bundle removes its TokenLab routes, MCP tool namespace, and async waiter; it does not delete your TokenLab account or API key.
Links
License
MIT
Comments
Loading…
From the same category
by zhu1090093659
DeepSeek Harness (DSH) Web Plugin Aggregation Ecosystem · Everything is a plugin, distributed via the Creative Workshop
★ 8.2k
↓ 134/wk
Apache-2.0
TypeScript
Oct 1, 2026
dsh plugin --profile web add dsh-webby yjh051108
dsh-routing-suite — injector + router-standard kit: install the runtime injector first, then the task-aware reasoning-mode router preset (measured P1-P23).
★ 7k
MIT
JavaScript
Sep 18, 2026
dsh plugin --profile web add @dsh-external/dsh-super-injectorby superdesigndev
OpenRouter for agent tools. Join community here: https://discord.gg/6mQYYfFMAn
★ 4k
NOASSERTION
Python
Oct 1, 2026
dsh plugin --profile web add treg-dshby zouyuxuan122
在 dsh 里装上这个插件即可,无需登录、注册或填 API Key,就能使用包括 Muse Spark 1.3、MiMo V2.6 在内的前沿模型——完全免费,不限量。 All you do is install this plugin in dsh: no login, no sign-up, no API key — the frontier models are just there, Mu
★ 529
MIT
JavaScript
Oct 1, 2026
dsh plugin --profile web add dsh-our-free-modelby V1ki
Use ChatGPT (Codex), Claude, and Grok (X Premium) subscriptions as DeepSeek Harness LLM providers — OAuth login in the web UI, no API keys
★ 410
↓ 2.8k/wk
MIT
TypeScript
Sep 28, 2026
dsh plugin --profile web add dsh-plugin-subscriptionsby Han-1413141
DeepSeek Harness session cost meter plugin: session/daily cost, budget, history, OpenCode Go quota, official & custom-provider balance, Codex-like token heatmap, peak/off-peak pricing with pre-switch
★ 361
↓ 24.2k/wk
MIT
JavaScript
Oct 1, 2026
dsh plugin --profile web add dsh-cost-meter