No description
Find a file
2026-09-07 16:16:43 +02:00
.env.example send notifs at launch 2026-09-07 14:32:06 +02:00
.gitignore update gitignore 2026-08-17 12:16:54 +02:00
index.js update to ignore 5h quota 2026-09-07 16:16:43 +02:00
package-lock.json Initial commit 2026-08-17 12:12:01 +02:00
package.json Initial commit 2026-08-17 12:12:01 +02:00
README.md update to ignore 5h quota 2026-09-07 16:16:43 +02:00

Codex Reset Alerts 🚀

Petit watcher Node.js qui surveille ton quota global OpenAI Codex et envoie des notifications ntfy au lancement, puis dès que ce quota global est de nouveau disponible.

L'idée est simple : lorsque Codex indique que ton quota global est épuisé, tu lances le watcher et tu peux passer à autre chose. Il surveille le quota global en arrière-plan, t'envoie une notification lors du reset réel, puis s'arrête automatiquement.

Fonctionnement

Quota global Codex épuisé 🔴
        │
        ▼
     npm start
        │
        ▼
Codex App Server
        │
        ├── account/rateLimits/read
        │
        └── account/rateLimits/updated
        │
        ▼
Surveillance du quota global
        │
        ▼
Quota global 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é.

Codex expose deux fenêtres de quota : primary sur 300 minutes, soit 5h, et secondary sur 10080 minutes, soit 7 jours. Le watcher ignore la fenêtre 5h et utilise uniquement la fenêtre globale.

Le timestamp resetsAt global fourni par Codex est également surveillé, mais il n'est pas considéré comme une garantie : le quota global peut être réinitialisé avant la date annoncée.

Une notification de démarrage est envoyée dès le lancement. La notification de reset n'est envoyée que lorsqu'un passage réel de quota global épuisé → quota global 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 :

git clone ssh://git@git.shinuwa.fr:2222/shinuwa/codex-reset-alerts.git
cd codex-reset-alerts

Installe Codex CLI si nécessaire :

npm install -g @openai/codex

Vérifie l'installation :

codex --version

Puis lance une première fois Codex pour t'authentifier :

codex

Configuration

Crée un fichier .env à la racine :

NTFY_URL=https://ntfy.sh
NTFY_TOPIC=mon-topic-secret
NTFY_TOKEN=

POLL_INTERVAL_SECONDS=60

NTFY_URL

Adresse du serveur ntfy.

Par défaut :

https://ntfy.sh

Tu peux également utiliser une instance ntfy auto-hébergée.

NTFY_TOKEN

Token d'accès pour un serveur ntfy privé.

Laisse vide si ton topic ne demande pas d'authentification.

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 :

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 global Codex est épuisé :

npm start

Si le quota est effectivement épuisé :

📱 Notification ntfy de démarrage envoyée.
🔌 Connexion à Codex App Server...
✅ Connecté.

🔎 Source : démarrage
📊 Global utilisé : 100%
📊 Fenêtre 300min ignorée : 100%
🔴 État : quota global épuisé
🕒 Reset global annoncé : jeudi 20 août 2026 à 13:58:03
⏳ Temps théorique global : 3j 1h 55min

🔴 Quota global épuisé.
👀 Surveillance du reset global activée.

👀 Polling toutes les 60s.

Tu peux alors laisser le watcher tourner.

Lorsqu'un reset global est détecté :

🎉 RESET GLOBAL 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 :

🚀 Ton quota global Codex est de nouveau disponible !

Avant : 100% utilisé
Maintenant : 0% utilisé

Le watcher s'arrête ensuite automatiquement.

Si le quota global n'est pas épuisé

Tu peux lancer le programme sans risque :

npm start

S'il reste du quota global, le watcher ne reste pas inutilement actif :

📊 Global utilisé : 42%
📊 Fenêtre 300min ignorée : 100%
🟢 État : quota global disponible

✅ Ton quota global 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 :

curl \
  -H "Title: Test Codex" \
  -H "Tags: robot" \
  -H "Authorization: Bearer TON_TOKEN" \
  -d "Hello depuis Codex Reset Alerts 🚀" \
  https://ntfy.shinuwa.fr/TON_TOPIC

Lancer le watcher en arrière-plan

Pour éviter de garder ton terminal ouvert, tu peux par exemple utiliser tmux :

tmux new -s codex-reset
npm start

Puis détache la session avec :

Ctrl+B puis D

Pour y retourner :

tmux attach -t codex-reset

Sécurité

Le fichier .env ne doit pas être versionné.

Vérifie que .gitignore contient :

.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