From c5bf3809b4afe3b62b940b334b3e68eb9bd04113 Mon Sep 17 00:00:00 2001 From: Shinuwa Date: Mon, 17 Aug 2026 12:14:11 +0200 Subject: [PATCH] add README --- .codex-home/logs_2.sqlite-shm | Bin 32768 -> 32768 bytes .codex-home/logs_2.sqlite-wal | Bin 469712 -> 469712 bytes README.md | 249 ++++++++++++++++++++++++++++++++++ 3 files changed, 249 insertions(+) create mode 100644 README.md diff --git a/.codex-home/logs_2.sqlite-shm b/.codex-home/logs_2.sqlite-shm index 72d27318819190dcb54e41f753f9712e805fc46c..11af0cebb29e8690a18a413eadf80caa0b667dbe 100644 GIT binary patch delta 246 zcmZo@U}|V!s+V}A%K!pgK+MR%AYcQeC4e~A@-?Hm9J}MXEwf9!_ipDo>o?KW32GW~d7!w>eUvd1$%5279vpJAak$v+w zKQ3lwLk4po?>!SgD}w-o7=sLh5`#8_5rf5M#?aqP%*G6sVA;va-XEWC={d delta 216 zcmZo@U}|V!s+V}A%K!o#K+MR%AYcHbC4ksEZ zgNuwT+%YW742;nrB5HffA*M5oV%kB=d7KOCWWc&PpD}Pg5ti zwP4N>U}J!}58@tV0f>VN&oO;x+8q-BybqSzx60m^$$eO%3du7yh zUZ5Z=Qx*fK3>yc_aptv5SwP=LFiAE!#P9)~D{dH{+@#6KkjVrK*6AC6F$zz=_nT2= zI`3c^ zjzZFf^*yLNk&*!<-69F#PbiBXt_k&eI!^;+i!H-{P(tBj_>Z1c_Ck^h)HZ19fY<~} zD&Xt^$M+xVL#46%$Ucp-QXLu7swEw>GD%pIJX~XX31m{*mZH{ zqt8219)MM`t1)cf=gH>Jy!nE_dFJT>e^|`7=gwnU#xdPmjD=TBOz`6WnQ6@Syg*km zv)pIklwxCJxev7WBFlDtX%-c3Q8r{x6z|i|h_^EO3-O~mPzuG5Z)TbsH;TVX0okn1 zJBeX?fh5}|9-#YfY>z5osbk`|E?%tEc=9GV5Y+kYK%VpmTJ{3!Nu@THa{}t?IS=w^ zRX>CnlFhJvfhAi#$dD%xPflTGnZqPdQQ~ng%_LC)tcop@VY|X~mRMGxCs`OFp4>2( zC7BcKNtuj{PhB#Of8I#K-+a0w@(yjImFj~_$V_Fvj8#c_QOZn GcvAswk)-SZ diff --git a/README.md b/README.md new file mode 100644 index 0000000..be74c1a --- /dev/null +++ b/README.md @@ -0,0 +1,249 @@ +# Codex Reset Alerts 🚀 + +Petit watcher Node.js qui surveille ton quota **OpenAI Codex** et envoie une notification **ntfy** dès que ton quota est de nouveau disponible. + +L'idée est simple : lorsque Codex indique que ton quota est épuisé, tu lances le watcher et tu peux passer à autre chose. Il surveille le quota en arrière-plan, t'envoie une notification lors du reset réel, puis s'arrête automatiquement. + +## Fonctionnement + +```text +Quota Codex épuisé 🔴 + │ + ▼ + npm start + │ + ▼ +Codex App Server + │ + ├── account/rateLimits/read + │ + └── account/rateLimits/updated + │ + ▼ +Surveillance du quota + │ + ▼ +Quota disponible 🟢 + │ + ▼ + ntfy + │ + ▼ +📱 Notification + │ + ▼ + Arrêt du watcher +``` + +Le watcher utilise deux mécanismes : + +* les événements `account/rateLimits/updated` envoyés par Codex ; +* un polling périodique comme filet de sécurité. + +Le timestamp `resetsAt` fourni par Codex est également surveillé, mais il n'est **pas considéré comme une garantie** : le quota peut être réinitialisé avant la date annoncée. + +La notification n'est envoyée que lorsqu'un passage réel de **quota épuisé → quota disponible** est détecté. + +## Prérequis + +* Linux / WSL +* Node.js 20+ +* OpenAI Codex CLI +* un compte ChatGPT connecté dans Codex +* l'application ntfy sur ton téléphone + +## Installation + +Clone le dépôt : + +```bash +git clone ssh://git@git.shinuwa.fr:2222/shinuwa/codex-reset-alerts.git +cd codex-reset-alerts +``` + +Installe Codex CLI si nécessaire : + +```bash +npm install -g @openai/codex +``` + +Vérifie l'installation : + +```bash +codex --version +``` + +Puis lance une première fois Codex pour t'authentifier : + +```bash +codex +``` + +## Configuration + +Crée un fichier `.env` à la racine : + +```env +NTFY_URL=https://ntfy.sh +NTFY_TOPIC=mon-topic-secret + +POLL_INTERVAL_SECONDS=60 +``` + +### `NTFY_URL` + +Adresse du serveur ntfy. + +Par défaut : + +```text +https://ntfy.sh +``` + +Tu peux également utiliser une instance ntfy auto-hébergée. + +### `NTFY_TOPIC` + +Topic sur lequel la notification sera envoyée. + +Abonne ton téléphone au même topic dans l'application ntfy. + +> Sur un serveur ntfy public, utilise de préférence un nom de topic long et difficile à deviner. + +### `POLL_INTERVAL_SECONDS` + +Intervalle entre deux vérifications du quota. + +Par défaut : + +```text +60 secondes +``` + +Les événements envoyés directement par Codex permettent généralement de détecter les changements plus rapidement ; le polling sert principalement de sécurité. + +## Utilisation + +Lorsque ton quota Codex est épuisé : + +```bash +npm start +``` + +Si le quota est effectivement épuisé : + +```text +🔌 Connexion à Codex App Server... +✅ Connecté. + +🔎 Source : démarrage +📊 Utilisé : 100% +🔴 État : quota épuisé +🕒 Reset annoncé : jeudi 20 août 2026 à 13:58:03 +⏳ Temps théorique : 3j 1h 55min + +🔴 Quota épuisé. +👀 Surveillance du reset activée. + +👀 Polling toutes les 60s. +``` + +Tu peux alors laisser le watcher tourner. + +Lorsqu'un reset est détecté : + +```text +🎉 RESET RÉEL DÉTECTÉ ! +📉 100% → 0% + +📱 Notification ntfy envoyée. +✅ Mission terminée. +👋 Arrêt du watcher. +``` + +Tu recevras en parallèle une notification sur ton téléphone : + +```text +🚀 Ton quota Codex est de nouveau disponible ! + +Avant : 100% utilisé +Maintenant : 0% utilisé +``` + +Le watcher s'arrête ensuite automatiquement. + +## Si le quota n'est pas épuisé + +Tu peux lancer le programme sans risque : + +```bash +npm start +``` + +S'il reste du quota, le watcher ne reste pas inutilement actif : + +```text +📊 Utilisé : 42% +🟢 État : quota disponible + +✅ Ton quota Codex est encore disponible. +👋 Rien à surveiller, arrêt. +``` + +## Tester ntfy + +Tu peux vérifier manuellement que ton téléphone reçoit bien les notifications : + +```bash +curl \ + -H "Title: Test Codex" \ + -H "Tags: robot" \ + -d "Hello depuis Codex Reset Alerts 🚀" \ + https://ntfy.sh/TON_TOPIC +``` + +## Lancer le watcher en arrière-plan + +Pour éviter de garder ton terminal ouvert, tu peux par exemple utiliser `tmux` : + +```bash +tmux new -s codex-reset +npm start +``` + +Puis détache la session avec : + +```text +Ctrl+B puis D +``` + +Pour y retourner : + +```bash +tmux attach -t codex-reset +``` + +## Sécurité + +Le fichier `.env` ne doit pas être versionné. + +Vérifie que `.gitignore` contient : + +```gitignore +.env +node_modules/ +``` + +Évite également d'utiliser un nom de topic ntfy facilement devinable si tu utilises le serveur public. + +## Pourquoi ? + +Parce qu'appuyer sur `/usage` toutes les 20 minutes pour voir si Codex a décidé de rendre du quota, c'est moins amusant que de recevoir : + +> 🚀 Codex disponible + +et retourner coder. + +## Licence + +MIT