JonyChan8394 / dsh-llm-balance

Listed

Show LLM API balances under the chat input: DeepSeek, OpenRouter, SiliconFlow and any custom provider with a balance endpoint. DSH plugin.

masterModel View source

Installation

npx -y @deepseek-ai/dsh plugin --profile web add github:JonyChan8394/dsh-llm-balance

This installation command is an unverified starting point generated from the GitHub repository address.

README

Maintainer-authored documentation snapshot.

View on GitHub ↗
Commit 189050cSynced Aug 17, 2026

dsh-llm-balance

English | 中文

Show the balances of exactly the LLM providers you have configured in dsh, right below the chat input box.

  • Below the chat input — a compact readout in the composer's footer band (the seat under the input card, where the stats line lives) that refreshes automatically (default every 60 s) with a manual refresh link.
  • Click to recharge — click any provider's balance (or "未开放查询API" label) to open its recharge/top-up page in a new browser tab.
  • Driven by your dsh configuration — the strip shows exactly the providers registered in dsh (the Models page / llm-pi-ai settings + the built-in adapters you use). Configure a new LLM in dsh and it appears on the next refresh; remove it and it disappears. No restart, no config editing.
  • No public balance API? — providers like Qwen/DashScope, OpenAI and Anthropic have a public API key but no public balance endpoint. When such a provider is configured with a key, the strip shows "未开放查询API / no balance API" instead of hiding it.
  • Keys stay on the host — API keys are resolved from DSH credentials (or environment) host-side; the browser only ever sees the fetched balances.

Install

dsh plugin --profile web add github:JonyChan8394/dsh-llm-balance

Restart dsh web. The balance readout appears under the chat input as soon as at least one configured provider has a key.

Configure

Nothing to configure — the plugin follows the providers you already set up in dsh. Balance endpoints are known for these routes:

Provider routeBalance API
DeepSeek (deepseek, deepseek-official)
OpenRouter (openrouter)
SiliconFlow (siliconflow)
Moonshot / Kimi (moonshotai-cn, moonshotai)
MiniMax (minimax)
StepFun (stepfun)
Zhipu / GLM (zhipu)
Any other configured provider❌ shows "未开放查询API"

Each preset also ships a rechargeUrl — the provider's top-up page — opened in a new tab when you click the balance in the strip. To add a balance endpoint for a provider not in the list (e.g. an aggregator route with its own balance endpoint), override the plugin config in your profile's cordis.patch.yml:

- id: llm-balance
  config:
    refreshMs: 30000
    endpoints:
      - id: myprovider
        name: MyProvider
        apiKeyEnv: MYPROVIDER_API_KEY
        url: https://api.example.com/v1/balance
        balancePath: data.remaining
        currencyPath: data.currency
        rechargeUrl: https://console.example.com/recharge

A provider without a configured key is hidden from the strip; a provider whose request fails shows "获取失败 / fetch failed".

How it works

  • Host half (lib/index.js) reads ctx.llm.listProviders() — the exact set of LLM routes configured in dsh — on every request. For each provider with a known balance endpoint it resolves the key through ctx.credentials and calls the endpoint; for a configured provider with a key but no endpoint it reports error: 'no-api'. Results are served as GET /llm-balance JSON through the webserver route registry.
  • Browser half (lib/client.js) registers a conversation.composer.dock entry (order 10) that polls /llm-balance and renders the readout under the input card.

License

MIT

Project files and signals

Shown items are public repository signals detected in the directory snapshot.

TestsDetected

Repository information

Language
JavaScript
License
MIT
Last updated
Aug 17, 2026, 6:44 AM

Install deliberately

Review source code, permissions, lifecycle hooks, dependencies and network access. Test untrusted plugins in an isolated environment.