nightsitter
Stop babysitting your AI agents.
You kicked off a Claude Code session (or a cron'd agent job) and walked away.
Six hours later you discover it's been sitting on a permission prompt since
minute nine — or looping, or dead. nightsitter is the night-shift watchdog:
it tells the difference between working, stuck, waiting for you, and
dead, and pings your phone only when it matters.
pipx install nightsitter
nightsitter watch # watch all local Claude Code sessions
nightsitter status # one-shot fleet snapshot
nightsitter run -- python nightly.py # dead-man wrapper for any command
nightsitter daemon install # run the watcher as a service (launchd/systemd)
What it detects
| State | Meaning |
|---|---|
| 🟢 active | transcript activity within the stall window |
| 🟡 stalled | process alive, mid-task, no activity — alive but stuck |
| 🟠 waiting | process alive, turn closed — waiting on your approval/input |
| 🔴 dead | process gone mid-task |
| ⚪ done | finished cleanly (silent by default) |
Notifications
Zero-signup default: ntfy.sh. Set a topic and install the ntfy app:
export NIGHTSITTER_NTFY_TOPIC="your-secret-topic"
nightsitter test-notify
Telegram and desktop notifications are also supported — see ~/.nightsitter/config.toml:
[notify]
ntfy_topic = "your-secret-topic"
# telegram_token = "..."
# telegram_chat_id = "..."
# desktop = "on"
Run it as a service
The watcher only helps if it outlives your terminal:
nightsitter daemon install # macOS launchd (KeepAlive) / Linux systemd --user
nightsitter daemon status
nightsitter daemon uninstall
Re-run install with different flags (--stall-after 20) to update in place.
Dead-man wrapper for cron agents
nightsitter run --label nightly-report --max-minutes 45 \
--heartbeat-url https://hc-ping.com/<uuid> -- python nightly.py
- alerts on failure or when the kill switch fires (SIGTERM → SIGKILL)
- pings your healthchecks.io check on success,
/failon failure - passes stdio through untouched
Status
v0.1 — local CLI, free forever (MIT). A hosted version (alert history, multi-machine fleet view, mobile) is planned — founding-user preorders coming with the launch.
Metadata
Release files for nightsitter 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| nightsitter-0.1.0.tar.gz | 23.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| nightsitter-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 45.2 kB
Release files / nightsitter-0.1.0.tar.gz
| Download URL | nightsitter-0.1.0.tar.gz |
|---|---|
| Size | 23.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
44e3b8652e184cb79bd7a3dcb6582f1e04a6a30ac68365eb2f0051470282ba28
|
|
BLAKE2b-256 checksum How to use checksums |
596623977db9e0a6c4c60081cc7c832b830e1e5432716cc15a8ba383471e7df1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Release files / nightsitter-0.1.0-py3-none-any.whl
| Download URL | nightsitter-0.1.0-py3-none-any.whl |
|---|---|
| Size | 21.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2b1f08460d6a71875a88bbb1b04b4b583c17d62895829f8947de976ceee43af7
|
|
BLAKE2b-256 checksum How to use checksums |
0f62178baeb6176d3103754658f843fee5e3205fd858afca473fce8097a7a399
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|