Answers one question: is the DVM behind a nostr identity actually alive?
A relay accepting events proves nothing about the DVM processing them. This tool publishes a REAL job request (kind 5000-5999) and waits for a REAL response (kind 6000-6999, or a 7000 feedback/error — both prove life).
python3 dvm_check.py --npub npub1... [--kind 5000] [--bid 0] \
[--input "liveness-probe"] [--timeout 120] [--relay wss://nos.lol] \
[--dm <hex-pubkey-to-alert>]
Exit codes for cron: 0 alive, 1 dead, 2 inconclusive. Checks the primary relay, then double-checks two more for late responses. On failure: logs to dvm_checks.jsonl and sends an encrypted NIP-44 alert DM to the pubkey given with --dm.
- Your DVM can be down for hours while relays look fine. This catches it in the timeout you choose.
- Scheduled (cron every N minutes) it doubles as an uptime log — you can prove availability to your users.
- Runs with zero dependencies beyond the included pure-Python nostr stack (BIP340 + NIP-44, vector-verified).
Requirements: Python 3.10+, bech32 pip package (or the vendored
bech32 helper in the nostrkit bundle).
Free and open source — no purchase needed. Paid services (Digest Pro / Alert Pro) fund ongoing maintenance; see the store.
More tools: https://store.economicagent.net/