Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 79 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,85 @@ flowchart LR

The device UI is served on `127.0.0.1:8080`; the collector is reached through `127.0.0.1:8790`. Pairing material is provisioned after flashing and is never built into a firmware artifact.

### Supported providers

Six popular providers have native collectors. Every other entry uses the same validated, owner-controlled JSON bridge, allowing a local integration to supply the supported display data while authentication remains on the host. Enable any combination by uncommenting its row in `dashboard-config.jsonc`.

<details>
<summary><strong>See all 65 providers and what ClaudeThing can display</strong></summary>

<!-- provider-catalog:start -->
| Provider | Connection | What it can show |
| --- | --- | --- |
| Codex (`codex`) | Native collector | Shows signed-in Codex limits, reset credits, token totals, and locally reconstructed usage history. |
| OpenAI (`openai`) | JSON bridge | Displays organization API usage, spend, budgets, and credit balances supplied by an owner-controlled integration. |
| Azure OpenAI (`azureopenai`) | JSON bridge | Monitors Azure-hosted model deployments, request activity, availability, and cost data from your Azure environment. |
| Claude (`claude`) | Native collector | Shows Claude current and weekly limits, reset timing, token totals, and local activity history when available. |
| Cursor (`cursor`) | Native collector | Tracks included requests, on-demand usage, plan identity, token activity, and recent Cursor cost history. |
| OpenCode (`opencode`) | JSON bridge | Presents workspace subscription consumption, remaining capacity, and reset timing from an OpenCode account integration. |
| OpenCode Go (`opencodego`) | JSON bridge | Surfaces OpenCode Go usage windows and locally observed quota data for the selected workspace. |
| Alibaba Coding Plan (`alibaba`) | JSON bridge | Displays Alibaba coding-plan allowances, consumed capacity, remaining quota, and upcoming resets. |
| Alibaba Token Plan (`alibabatokenplan`) | JSON bridge | Tracks Alibaba token-plan credits, token consumption, balances, and billing-period resets. |
| Qwen Cloud (`qwencloud`) | JSON bridge | Shows Qwen individual plan consumption across short rolling windows and longer weekly limits. |
| Gemini (`gemini`) | Native collector | Reads Gemini CLI authorization to display every model quota bucket and account tier the credential exposes. |
| Antigravity (`antigravity`) | JSON bridge | Presents locally collected Antigravity model allowances, remaining capacity, health, and refresh timing. |
| Droid (`droid`) | Native collector | Tracks Droid standard and core limits, extra-usage enablement, available balance, and organization plan identity. |
| Copilot (`copilot`) | Native collector | Shows GitHub Copilot chat, completion, and premium-request quotas with entitlements, overage, and reset timing. |
| Devin (`devin`) | JSON bridge | Displays Devin daily and weekly utilization, remaining allowance, reset timing, and account identity. |
| z.ai (`zai`) | JSON bridge | Tracks personal or team z.ai quotas, hourly and rolling windows, MCP activity, and remaining capacity. |
| Manus (`manus`) | JSON bridge | Shows Manus credit balance, monthly allocation, daily refresh credits, and consumption history. |
| MiniMax (`minimax`) | JSON bridge | Presents MiniMax coding-plan usage, remaining allowance, plan details, and renewal timing. |
| T3 Chat (`t3chat`) | JSON bridge | Separates T3 Chat base-plan consumption from paid overage so both usage pools remain visible. |
| ZoomMate (`zoommate`) | JSON bridge | Tracks ZoomMate credit consumption, remaining balance, plan identity, and historical usage. |
| Kimi (`kimi`) | JSON bridge | Shows Kimi weekly allowance alongside its shorter rolling rate limit and reset schedule. |
| Kilo (`kilo`) | JSON bridge | Displays Kilo Pass quota usage, credit availability, plan identity, and renewal information. |
| Kiro (`kiro`) | JSON bridge | Tracks Kiro monthly credits, bonus credits, consumed allowance, and billing-cycle reset timing. |
| Vertex AI (`vertexai`) | JSON bridge | Combines Google Cloud model activity with estimated token cost and project-level usage history. |
| Augment (`augment`) | JSON bridge | Shows Augment credit consumption, remaining capacity, plan information, and usage trends. |
| Amp (`amp`) | JSON bridge | Displays Amp plan usage, remaining free allowance, and the next quota refresh. |
| Ollama (`ollama`) | JSON bridge | Surfaces Ollama Cloud limits, consumed usage, available capacity, and account status. |
| Synthetic (`synthetic`) | JSON bridge | Tracks Synthetic rolling token quotas, weekly allowances, search limits, and their independent reset times. |
| JetBrains AI (`jetbrains`) | JSON bridge | Shows locally reported JetBrains AI monthly credits, usage, remaining balance, and renewal date. |
| Warp (`warp`) | JSON bridge | Displays Warp request limits, monthly credits, remaining capacity, and account plan information. |
| ElevenLabs (`elevenlabs`) | JSON bridge | Tracks ElevenLabs character allowance, consumed characters, remaining voice slots, and billing reset. |
| OpenRouter (`openrouter`) | JSON bridge | Shows OpenRouter credit balance, aggregate spend, request volume, and usage history across routed models. |
| Windsurf (`windsurf`) | JSON bridge | Presents Windsurf plan allowances, current consumption, remaining capacity, and renewal timing. |
| Zed (`zed`) | JSON bridge | Tracks Zed plan usage, edit-prediction quota, billing cycle, credits, and account payment state. |
| Perplexity (`perplexity`) | JSON bridge | Displays Perplexity account credits, consumed allowance, remaining balance, and usage history. |
| Xiaomi MiMo (`mimo`) | JSON bridge | Shows Xiaomi MiMo account balance, token-plan utilization, available quota, and resets. |
| Doubao (`doubao`) | JSON bridge | Monitors Doubao and Volcengine Ark request capacity, validation status, and observed consumption. |
| Sakana AI (`sakana`) | JSON bridge | Displays Sakana AI short-window and weekly quota consumption with independent reset timing. |
| Abacus AI (`abacus`) | JSON bridge | Tracks Abacus AI compute credits across ChatLLM or RouteLLM usage and remaining capacity. |
| Mistral (`mistral`) | JSON bridge | Shows Mistral API spend, available credits, monthly-plan utilization, and billing-cycle history. |
| DeepSeek (`deepseek`) | JSON bridge | Displays DeepSeek paid and promotional balances separately with aggregate remaining credit. |
| Fireworks (`fireworks`) | JSON bridge | Tracks Fireworks account spend over the recent billing period with project or account identity. |
| DeepInfra (`deepinfra`) | JSON bridge | Shows DeepInfra prepaid balance, current-month spend, configured spending limit, and remaining headroom. |
| Moonshot / Kimi API (`moonshot`) | JSON bridge | Displays Moonshot or Kimi API balance, consumed credit, and account-level usage history. |
| Venice (`venice`) | JSON bridge | Tracks Venice DIEM or dollar-denominated balances, consumption, and recent account activity. |
| Codebuff (`codebuff`) | JSON bridge | Shows Codebuff credit balance, weekly rate-limit utilization, remaining allowance, and resets. |
| Crof (`crof`) | JSON bridge | Displays Crof dollar credits with optional request-quota consumption and remaining capacity. |
| Command Code (`commandcode`) | JSON bridge | Tracks Command Code monthly dollar credits, used balance, remaining allowance, and renewal date. |
| Qoder (`qoder`) | JSON bridge | Shows Qoder large-model credits, consumed quota, remaining balance, and billing period. |
| StepFun (`stepfun`) | JSON bridge | Displays StepFun plan identity plus five-hour and weekly rate-limit usage and resets. |
| AWS Bedrock (`bedrock`) | JSON bridge | Presents AWS Bedrock spend, monthly budgets, remaining budget, and optional model activity metrics. |
| Grok (`grok`) | JSON bridge | Shows Grok plan or billing usage, account identity, remaining capacity, and refresh timing. |
| GroqCloud (`groq`) | JSON bridge | Tracks GroqCloud requests, tokens, cache efficiency, limits, and historical operational metrics. |
| LLM Proxy (`llmproxy`) | JSON bridge | Displays aggregate proxy quota and spend with optional per-provider request and token breakdowns. |
| ClawRouter (`clawrouter`) | JSON bridge | Shows ClawRouter monthly budget, spend, requests, tokens, and routed-provider distribution. |
| sub2api (`sub2api`) | JSON bridge | Tracks self-hosted gateway key quotas, subscription limits, wallet balance, and key-level usage. |
| Wayfinder (`wayfinder`) | JSON bridge | Monitors local routing health, route selection, savings, request volume, and decision latency. |
| LiteLLM (`litellm`) | JSON bridge | Shows LiteLLM personal and team budgets, current spend, remaining headroom, and proxy activity. |
| Deepgram (`deepgram`) | JSON bridge | Aggregates Deepgram speech, agent, token, and text-to-speech usage with cost or capacity metrics. |
| Poe (`poe`) | JSON bridge | Displays current Poe point balance, recent point consumption, and daily usage history. |
| Chutes (`chutes`) | JSON bridge | Tracks Chutes subscription, rolling and monthly quotas, pay-as-you-go usage, and reset schedules. |
| Neuralwatt (`neuralwatt`) | JSON bridge | Shows Neuralwatt subscription energy usage in kilowatt-hours alongside prepaid credit balance. |
| ZenMux (`zenmux`) | JSON bridge | Displays ZenMux five-hour and seven-day quotas plus pay-as-you-go balance and resets. |
| xAI (`xai`) | JSON bridge | Tracks xAI team prepaid credit, daily platform spend, remaining balance, and historical cost. |
| IBM Bob (`ibmbob`) | JSON bridge | Shows IBM Bob monthly Bobcoin budget and consumption across the selected subscription teams. |
<!-- provider-catalog:end -->

</details>

### Built to grow with you

Most personalization does not require a code change: edit the hot-reloaded `dashboard-config.jsonc` to choose what appears and how it rotates. Native collectors handle six popular tools. Any other API, CLI, script, or agent can write the documented, validated local JSON bridge contract—quotas, identity, health, cost, balances, scalar metrics, and daily charts—without rebuilding firmware. See [provider setup and authoring](docs/PROVIDERS.md).
Expand Down
32 changes: 30 additions & 2 deletions tools/provider-catalog.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { fileURLToPath } from "node:url";
const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
const source = path.join(root, "packages", "contracts", "src", "provider-catalog.json");
const destination = path.join(root, "docs", "PROVIDER_CATALOG.md");
const readmePath = path.join(root, "README.md");
const configTemplate = path.join(root, "install", "dashboard-config.example.jsonc");
const catalog = JSON.parse(await readFile(source, "utf8"));

Expand Down Expand Up @@ -52,10 +53,34 @@ const lines = [
"",
];
const expected = lines.join("\n");
const readmeStart = "<!-- provider-catalog:start -->";
const readmeEnd = "<!-- provider-catalog:end -->";
const readmeBlock = [
readmeStart,
"| Provider | Connection | What it can show |",
"| --- | --- | --- |",
...catalog.map((provider) =>
`| ${provider.displayName} (\`${provider.id}\`) | ${provider.integration === "native" ? "Native collector" : "JSON bridge"} | ${provider.description} |`,
),
readmeEnd,
].join("\n");

function replaceReadmeCatalog(input) {
const start = input.indexOf(readmeStart);
const end = input.indexOf(readmeEnd);
if (start < 0 || end < start) {
throw new Error("README provider catalog markers are missing or out of order");
}
return input.slice(0, start) + readmeBlock + input.slice(end + readmeEnd.length);
}

const currentReadme = await readFile(readmePath, "utf8");
const expectedReadme = replaceReadmeCatalog(currentReadme);

if (process.argv.includes("--write")) {
await writeFile(destination, expected, "utf8");
console.log(`provider catalog: wrote ${catalog.length} entries`);
await writeFile(readmePath, expectedReadme, "utf8");
console.log(`provider catalog: wrote ${catalog.length} entries to the guide and README`);
} else {
let actual = "";
try {
Expand All @@ -66,5 +91,8 @@ if (process.argv.includes("--write")) {
if (actual !== expected) {
throw new Error("docs/PROVIDER_CATALOG.md is stale; run node tools/provider-catalog.mjs --write");
}
console.log(`provider catalog: ${catalog.length} unique descriptions verified`);
if (currentReadme !== expectedReadme) {
throw new Error("README provider catalog is stale; run node tools/provider-catalog.mjs --write");
}
console.log(`provider catalog: ${catalog.length} unique descriptions verified in the guide and README`);
}