Files
opencode-greenpt-usage/README.md
Stéphan Sainléger 5c11754e2d new: [opencode-greenpt-usage] add GreenPT credit balance plugin
Show the remaining GreenPT API credit balance in the OpenCode TUI
sidebar. The key is resolved from the ``apiKey`` option, the
``GREENPT_API_KEY`` environment variable, or the active OpenCode
``auth.json`` (provider ``greenpt``); the section is hidden when no key
is present, so the plugin stays portable across machines and profiles.

The balance is read from the ``x-credits-remaining`` header returned by
a free ``HEAD /v1/chat/completions`` probe (HTTP 400 before any credit
is consumed), which avoids a billable call per refresh. Tests cover the
credential resolution, the header parsing and the live API.

Distribute via git clone; there is no npm publish.
2026-09-29 22:00:57 +02:00

3.7 KiB

opencode-greenpt-usage

An OpenCode TUI plugin that shows the remaining GreenPT API credit balance in the sidebar.

▼ GreenPT
Balance            5.31 €   updated 21:35

How it works

  • The API key is resolved in this order:
    1. the plugin apiKey option;
    2. the GREENPT_API_KEY environment variable;
    3. the active OpenCode auth store (auth.json, provider greenpt, entry type: "api") — i.e. exactly what a plain opencode auth login produces.
  • The balance is read with a free HEAD /v1/chat/completions probe: the API answers 400 Bad Request before any billing, yet the response still carries the x-credits-remaining header. No credit is consumed and no generation is triggered.
  • The section is hidden while no GreenPT key is present.
  • Refresh happens on startup, at the end of a session, on server reconnection, on a timer (300 s by default) and on demand through the greenpt.refresh command.

There is no dependency on any local profile or command: the plugin only looks for a key.

Requirements

  • OpenCode >= 1.18.0 (TUI plugin system).
  • A GreenPT account and API key.

Installation

  1. Clone this repository wherever you keep your projects.

  2. Connect GreenPT to OpenCode:

    opencode auth login
    

    Pick GreenPT from the list, then paste the API key.

    (Alternative: export GREENPT_API_KEY in your environment.)

  3. Register the plugin in ~/.config/opencode/tui.json, setting the absolute path to your clone:

    {
      "$schema": "https://opencode.ai/tui.json",
      "plugin": [
        ["file:///ABSOLUTE/PATH/TO/opencode-greenpt-usage/src/index.tsx", { "order": 700 }]
      ]
    }
    

    Use a file:// URL pointing at the source file src/index.tsx (OpenCode compiles the TSX itself). Do not point at a bundle: that would embed a second copy of solid-js and the section would stay blank.

  4. Fully quit OpenCode and relaunch it (plugins are not hot-reloaded).

Configuration

All options are optional and go in the plugin entry of tui.json:

Option Type Default Description
apiKey string resolved automatically Explicit GreenPT key.
baseUrl string https://api.greenpt.ai/v1 GreenPT API base URL.
refreshInterval number 300 Refresh interval in seconds (0 disables the timer).
order number 700 Sidebar section position.
showWhenUnavailable boolean false Show a hint when no GreenPT key exists.
unit string € Unit appended after the amount.

Troubleshooting

  • The section does not appear: make sure opencode auth login stored a greenpt key (or that GREENPT_API_KEY is set), and that the file:// URL in tui.json points at the right path.
  • "invalid GreenPT key": the API key was rejected (HTTP 401).
  • "balance unavailable": GreenPT did not return the balance header; try again later.

Development

npm install
npm test                 # unit tests
npm run typecheck        # type check
GREENPT_API_KEY=... npm run test:integration   # test against the live API

License

AGPL-3.0-or-later. See LICENSE.