Let the jobs tell you.
Instead of checking the queue yourself, get a push notification on your phone when a job starts, finishes, fails or gets held.
-
A small program runs on your computer
Every 3 minutes it asks Aqua for your jobs’ state with
qstat, over one shared SSH connection. -
It notices what changed
It keeps a local history and compares each check with the last one, so you hear about each change once. A 30-task array sends one summary, not 30 messages.
-
Your phone gets a push
Through ntfy, a free notification service with iOS and Android apps. No account needed.
You can always check jobs yourself, ideally by reading status files through a mount. Notifications suit long jobs and big arrays you don’t want to keep checking.
Install hpc-watch.
hpc-watch-ntfy is a small, dependency-free, open-source (MIT) Python tool from the same community toolkit. Its setup script explains every step as it goes.
You need key-based SSH to Aqua (no password prompt) and Python 3. The
installer sets up a Linux systemd timer; on other systems you
can run ./collector.py poll on your own schedule.
-
Get it and run the setup
Your computer · Linuxgit clone https://github.com/margauxmedwards/hpc-watch-ntfy.git ~/hpc-watch cd ~/hpc-watch ./setup.sh --explain # read the walkthrough first (changes nothing) ./setup.sh # then set it up for real -
Subscribe on your phone
Install the ntfy app (App Store, Google Play or F-Droid), tap Subscribe to topic, and enter the topic name the setup script generated for you.
-
Check it works
Your computer · from ~/hpc-watch./collector.py test-push # one test notification to your phone ./collector.py doctor # checks SSH, qstat, ntfy and the timer ./collector.py status # what it currently sees
On the public ntfy server, anyone who knows the topic can read your notifications (job names, node names, exit codes). Keep the long random name the setup script generates, and don’t share it.
Only the changes that matter.
| When a job… | Notification |
|---|---|
| starts running | Normal, with the node it landed on |
| finishes with exit code 0 | Normal |
| finishes with any other exit code | High priority |
| is held | High priority |
| prints an error in its log (optional) | High priority, even while still running |
Queued jobs are recorded but don’t notify. ./collector.py report
also compares the time and memory you requested with what jobs actually
used, which helps you ask for less and start sooner.
Say what the job is doing.
Point hpc-watch at your log folders (HPC_WATCH_LOG_DIRS) and
it can also report progress and catch errors that still exit 0. A few
lines in the job script make that clear:
source "$HOME/hpc-watch/contrib/hpcwatch.sh"
hpcwatch_init "resnet50_cifar10_seed0"
hpcwatch_stage "training resnet50 on cifar10"
python train.py || hpcwatch_fail "resnet50/cifar10"
These helpers only print lines to the job’s log. A job that uses them still runs normally when hpc-watch isn’t installed.
One watcher is enough.
- hpc-watch shares one SSH connection and checks every 3 minutes. Don’t poll faster, and don’t run other SSH polling loops alongside it.
- If you use an AI agent, tell it hpc-watch is running so it doesn’t start its own watcher.
- Your computer must be awake and able to reach Aqua (VPN if you need it). If it sleeps, you get the missed changes when it wakes.