torr9 a une API Go dédiée (api.torr9.net) avec auth JWT (username/password). Le ratio se calcule (total+bonus) up/down comme le frontend ; pas de champ ratio dans l'API. Le passkey du compte ne sert qu'au RSS, pas au profil.
Monitorink
Transforme une Kobo Libra 2 (e-reader e-ink) en écran de monitoring domestique affichant : heure, météo, statuts Home Assistant, et surtout le reste de tokens de l'abonnement Claude.
Architecture
[Homelab] backend PNG (FastAPI + Playwright, Docker, derrière Caddy)
├─ Claude : GET /api/oauth/usage (token longue durée `claude setup-token`)
├─ Météo : Open-Meteo (sans clé)
└─ Home Assistant : API REST /states
│
└── GET /image.png (1264×1680 niveaux de gris)
│ WiFi à la demande
[Kobo Libra 2] boucle NickelMenu : fetch → fbink → suspend rtcwake
backend/— serveur Python qui agrège les données et génère l'image du dashboard.kobo/— scripts client pour la Kobo (overlay surusetrmnl/trmnl-kobo).dev/— utilitaires de dev (sonde de l'endpoint usage Claude).
Le « reste de tokens Claude »
L'endpoint OAuth /usage (celui derrière la commande /usage de Claude Code) renvoie des
pourcentages d'utilisation des fenêtres glissantes (session 5 h + hebdo), pas un nombre brut
de tokens — Anthropic n'expose pas de compteur absolu côté abonnement. Monitorink affiche donc
le % restant (100 − utilisation) et le temps avant reset. (ChatGPT : hors scope, aucune
API officielle de quota restant.)
L'endpoint /usage exige le scope OAuth user:profile, que le token claude setup-token
n'a pas (403). Le backend utilise donc les credentials d'un login Claude isolé dédié
à Monitorink (CLAUDE_CONFIG_DIR séparé) : scopes complets + lignée de refresh token propre,
sans aucun conflit avec le Claude Code du Mac ou du homelab. Le backend lit/rafraîchit
uniquement ce fichier isolé (/creds/.credentials.json), jamais le ~/.claude partagé.
Démarrage backend (dev, sur Mac)
cd backend
python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
.venv/bin/python -m playwright install chromium
cp ../.env.example ../.env # puis compléter
.venv/bin/uvicorn app:app --reload --port 8080
# -> http://localhost:8080/image.png et /debug.html (itération design)
Déploiement (homelab, Docker + Caddy)
- Login Claude isolé dédié (scopes complets) sur le homelab :
CLAUDE_CONFIG_DIR=/home/jerem/.monitorink-claude claude auth login - Créer
.env(depuis.env.example) : coords météo, config HA. Le compose monte~/.monitorink-claudesur/creds(lecture/écriture pour le refresh du token). docker compose up -d --build(le service s'expose via caddy-docker-proxy surmonitorink.homelab.nestor-server.fr).
Voir kobo/README.md pour l'installation côté Kobo.