add README
This commit is contained in:
parent
eb39cfa0a1
commit
c5bf3809b4
3 changed files with 249 additions and 0 deletions
Binary file not shown.
Binary file not shown.
249
README.md
Normal file
249
README.md
Normal file
|
|
@ -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
|
||||||
Loading…
Add table
Add a link
Reference in a new issue