---
tags: [note, OpenCode]
type: "note"
nature: documentation
ressource: true
univers: PRO
projects:
  - "[[03_PROJETS/VPS-IA]]"
date: "[[01_JOURNAL/2026/2026-10-16]]"
description: "Script openrouter-costs : consommation réelle côté OpenRouter, clés lues dans le coffre pass."
---
# VPS-IA — Consommation OpenRouter (script openrouter-costs)

## Contexte

Suivi de la consommation **OpenRouter** du compte (budget mensuel 20 $, crédits 40 $).
Distinction importante :

- `opencode-costs` = **estimation locale** OpenCode (base `opencode.db`, tarifs déclarés des providers).
- `openrouter-costs` = **données réelles du compte OpenRouter** via l'API (`/auth/key`, `/credits`, `/analytics/query`).

Les deux sont complémentaires : le local donne le détail par modèle/jour/agent/session, l'API le réel côté facturation.

## Script

- **Emplacement** : `/var/lib/opencode/openrouter-costs` (bash, dépendances : `curl`, `jq`, `sqlite3`).
- **Clé standard** : coffre pass `opencode/openrouter-key` (source de vérité), injectée en `OPENROUTER_API_KEY` au démarrage du service ; repli `$OPENROUTER_API_KEY` puis ancien stockage base (déprécié). Jamais affichée.
- **Clé management** : coffre pass `opencode/openrouter-mgmt-key` — débloque `/analytics/query` (breakdown par modèle / par jour).

## Usage (CLI)

```bash
/var/lib/opencode/openrouter-costs                  # rapport agrégat (Markdown)
/var/lib/opencode/openrouter-costs --json           # JSON compact (agrégat)
/var/lib/opencode/openrouter-costs --models         # breakdown par modèle (mois en cours)
/var/lib/opencode/openrouter-costs --daily          # par jour
/var/lib/opencode/openrouter-costs --daily --models # par jour × modèle
/var/lib/opencode/openrouter-costs --models --days=7 # 7 derniers jours
```

## Commandes TUI OpenCode (harmonisées famille `costs-*`)

| Commande | Script | Effet |
|---|---|---|
| `/costs-oc` | `opencode-costs` | Rapport OpenCode (local, estimé) |
| `/costs-oc-json` | `opencode-costs --json` | Résumé JSON OpenCode |
| `/costs-oc-day` | `opencode-costs --calendar` | Tableau jour par jour OpenCode |
| `/costs-or` | `openrouter-costs` | Agrégat OpenRouter (réel) |
| `/costs-or-models` | `openrouter-costs --models` | Par modèle OpenRouter |
| `/costs-or-day` | `openrouter-costs --daily` | Par jour OpenRouter |

Convention retenue : **préfixe `costs-`** commun + suffixe `oc` (OpenCode) / `or` (OpenRouter).
Anciennes commandes renommées : `/costs`→`/costs-oc`, `/costs-json`→`/costs-oc-json`, `/costs-day`→`/costs-oc-day`.

## Indicateurs restitués (agrégat)

- Usage total / aujourd'hui / 7 jours / mois en cours
- Limite mensuelle + restant + reset
- Budget effectif (limite, dépensé, restant, date de reset)
- Crédits (totaux, consommés, restants)

## Management key — création et stockage

1. Ouvrir <https://openrouter.ai/settings/management-keys> (compte GRK) — page dédiée aux clés de management.
2. **Create Key** → activer **"Management (admin) key"** (liste toutes les clés, accès `/analytics/query`).
3. Ajouter au coffre `pass` — **depuis root** (le coffre appartient à `opencode` ; `pass` n'est pas dans le PATH root, il faut `sudo -u opencode` + chemin absolu) :

```bash
# Dans un vrai terminal (pass demande la saisie 2×)
sudo -u opencode /var/lib/opencode/.local/bin/pass insert opencode/openrouter-mgmt-key
```

En non-interactif (si pas de TTY) :

```bash
printf 'CLÉ\nCLÉ\n' | sudo -u opencode /var/lib/opencode/.local/bin/pass insert -f opencode/openrouter-mgmt-key
```

⚠️ Ne jamais coller la clé en clair dans une conversation.

## État

- [x] Script `openrouter-costs` créé et testé (2026-10-16) — lecture seule, sans effet de bord.
- [x] Management key créée + ajoutée au coffre (`opencode/openrouter-mgmt-key`).
- [x] Breakdown par modèle (`--models`) via `/analytics/query`.
- [x] Mode par jour (`--daily`, croisable `--models`).
- [x] Commandes TUI harmonisées famille `costs-*` + skill `opencode-costs` mis à jour.
- [x] **Sécurité** : clé standard déplacée de `opencode.db` vers le coffre pass (`opencode/openrouter-key`), injectée en `OPENROUTER_API_KEY` (via `opencode-secrets-env.sh`). Credential retirée de la base.
