
Research
/Security News
Popular Rust Crates Compromised in Build-Time Supply Chain Attack
Three compromised Rust crates pulled in a malicious dependency that downloaded and executed cross-platform malware during Cargo builds.
@christiangalsterer/opencode-requesty-plugin
Advanced tools
opencode TUI plugin: shows Requesty.ai monthly budget, current spend, and per-model cost distribution in the session sidebar, in the session prompt and with a detail dialog via the /requesty command
An opencode TUI plugin that shows your Requesty.ai budget, current monthly spend, and per-model cost distribution right in the session prompt, in the session sidebar, plus a detail dialog via the /requesty slash command.
Sidebar widget (session view):
Requesty (my-opencode-key)
▓▓▓▓▓▓░░░░░░░░░░░░░░░░░░ 24%
$12.34 · $50.00 · ~$25.50 EOM ↓
Today $3.20 · 7d $2.14 · 30d $1.05
Top Models (Aug)
claude-sonnet-4-5 $8.20
1.2M (↑1.0M ↓200.0k)
gpt-5 $3.14
410.0k (↑300.0k ↓110.0k)
gemini-2.5-pro $1.00
98.0k (↑80.0k ↓18.0k)
GET /v1/manage/apikey/self), with projected month-end spend at the current run rate (~$X EOM). The pace marker shows ↑ over pace, → on pace, ↓ under pace; the projection turns red when it exceeds the limit.Detail dialog — run /requesty or pick Requesty: show usage from the command palette:
r to refresh, esc to closePrompt indicator — today's spend followed by a compact spend/limit readout on the right side of the session prompt (e.g. $3.20 $12.34/$50.00 24%, colored by the same thresholds). When prompt.monthlyProjection is enabled, a month-end projection (~$X EOM ↑) is always appended, colored red when the estimate exceeds the budget (e.g. $3.20 $42.80/$50.00 86% (my-opencode-key) ~$53.07 EOM ↑). Disable the readout with "prompt": { "budgetIndicator": false }.
Data comes from the Requesty Management API (apikey/self + apikey/self/usage grouped by model_used, current calendar month).
Add the plugin to your tui.json (project root or ~/.config/opencode/tui.json):
{
$schema": "https://opencode.ai/tui.json",
"plugin": ["@christiangalsterer/opencode-requesty-plugin"]
}
Or with options:
{
$schema": "https://opencode.ai/tui.json",
"plugin": [
[
"@christiangalsterer/opencode-requesty-plugin",
{
"refreshIntervalMs": 300000,
"maxModels": 5,
"warningThreshold": 0.6,
"errorThreshold": 0.85
}
]
]
}
Restart opencode after changing the config — plugins are loaded at startup.
Point at a local checkout instead:
{
"plugin": ["file:///absolute/path/to/opencode-requesty-plugin/dist/tui.tsx"]
}
Run bun install && bun run build in the checkout first.
The plugin reads your Requesty API key from the opencode provider config: provider.requesty.options.apiKey in opencode.json, including {env:VAR} interpolation.
{
"provider": {
"requesty": {
"options": { "apiKey": "sk-..." }
}
}
}
Or via an environment variable:
{
"provider": {
"requesty": {
"options": { "apiKey": "{env:REQUESTY_API_KEY}" }
}
}
}
If no key is found, the widget shows a short setup hint instead of failing.
| Option | Type | Default | Description |
|---|---|---|---|
baseUrl | string | https://api-v2.requesty.ai | Management API base URL (e.g. for EU region) |
refreshIntervalMs | number | 300000 (5 min) | Periodic refresh interval (safety net) |
maxModels | number | 5 | Number of models shown in the compact sidebar list |
warningThreshold | number | 0.7 (70%) | Budget usage ratio at which the bar turns yellow (accepts 0–1 or 0–100) |
errorThreshold | number | 0.9 (90%) | Budget usage ratio at which the bar turns red (accepts 0–1 or 0–100) |
prompt.enabled | boolean | true | Master switch for any prompt-area UI |
prompt.budgetIndicator | boolean | true | Show spend/limit readout on the right side of the session prompt |
prompt.dailySpend | boolean | true | Show today's spend to the left of the budget indicator in the session prompt |
prompt.monthlyProjection | boolean | true | Show a month-end projection (~$X EOM ↑) in the session prompt, red when the estimated spend exceeds the budget |
warningThreshold must be lower than errorThreshold; if the ordering is invalid, both fall back to the defaults (70%/90%). Values above 1 are treated as percents, e.g. 80 means 80%.
Data is refreshed on startup, on a periodic interval, when a new session is created, and when messages are updated.
bun install
bun run typecheck # tsc --noEmit over src/ and test/
bun test # unit tests via bun:test
bun run build # copy src/index.tsx → dist/tui.tsx
The project is fully typed TypeScript (strict mode). Sources live in src/ (.ts/.tsx), tests in test/. The opencode host transforms TSX at load time via @opentui/solid/preload (Bun); no bundler is used.
MIT
FAQs
opencode TUI plugin: shows Requesty.ai monthly budget, current spend, and per-model cost distribution in the session sidebar, in the session prompt and with a detail dialog via the /requesty command
The npm package @christiangalsterer/opencode-requesty-plugin receives a total of 395 weekly downloads. As such, @christiangalsterer/opencode-requesty-plugin popularity was classified as not popular.
We found that @christiangalsterer/opencode-requesty-plugin demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
/Security News
Three compromised Rust crates pulled in a malicious dependency that downloaded and executed cross-platform malware during Cargo builds.

Research
/Security News
Socket uncovered 77 linked Firefox extensions, including 40 that steal wallet secrets or credentials and 37 deceptive sports-score shells.

Security News
NIST disclosed an unreleased AI tool called V-etalon and opened a broad inquiry into NVD modernization after years of automation plans produced no public enrichment system.