Skip to the content.

Codex ntfy Notifier

Know when Codex is actually idle

Codex ntfy Notifier sends an ntfy push after local lifecycle evidence indicates that a root Codex task has no more work. Intermediate turn signals are held behind an idle gate, while a durable outbox retries transient delivery failures.

View the repository · Install the latest release · Quick start

Built for real Codex setups

Each installed environment needs access to its own local Codex lifecycle state. Pure cloud tasks that never mirror that state locally are not guaranteed. The delivery model is durable at-least-once after idle confirmation, not transactional exactly-once.

Quick start

Windows with an optional Ubuntu WSL installation:

git clone https://github.com/ravhello/codex-ntfy-notifier.git
cd codex-ntfy-notifier
.\install.ps1 -WslDistro Ubuntu

Native Linux:

git clone https://github.com/ravhello/codex-ntfy-notifier.git
cd codex-ntfy-notifier
CODEX_NTFY_TOPIC=$(python3 -c 'import getpass; print(getpass.getpass("Private ntfy topic: "))')
export CODEX_NTFY_TOPIC
./install-linux.sh
unset CODEX_NTFY_TOPIC

Read the complete installation and privacy guidance before using a real topic. Newly installed Codex hooks require explicit review through /hooks.

How it stays quiet and reliable

Completion signals become candidates rather than immediate notifications. The idle gate checks the matching turn, later work, goal state, active descendants, and a short quiet window. Eligible events then move atomically into a host-local outbox, where one worker retries transient failures and deduplicates stable thread-and-turn identities.

Architecture · Privacy and security · Troubleshooting · Contributing

This is an unofficial community project. It is not affiliated with or endorsed by OpenAI or ntfy.