# 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 sur `usetrmnl/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) ```sh 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) 1. Login Claude isolé dédié (scopes complets) sur le homelab : `CLAUDE_CONFIG_DIR=/home/jerem/.monitorink-claude claude auth login` 2. Créer `.env` (depuis `.env.example`) : coords météo, config HA. Le compose monte `~/.monitorink-claude` sur `/creds` (lecture/écriture pour le refresh du token). 3. `docker compose up -d --build` (le service s'expose via caddy-docker-proxy sur `monitorink.homelab.nestor-server.fr`). Voir `kobo/README.md` pour l'installation côté Kobo.