{"repo":"nktrjsk/silent-link-watchdog","free":true,"listed":false,"github":"https://github.com/nktrjsk/silent-link-watchdog","clone":"git clone https://github.com/nktrjsk/silent-link-watchdog.git","description":"Self-hosted watchdog for silent.link eSIM balances — adaptive polling with low-balance, spike, outage & expiry alerts over ntfy or webhooks.","language":"Python","stars":10,"topics":["alerting","docker","esim","fastapi","helm","kubernetes","monitoring","ntfy","postgresql","prometheus"],"license":"MIT","category":"deployment-docker-iac","readme_excerpt":"silent-link-watchdog A small self-hosted web app that watches the balance of one or more silent.link eSIMs and alerts you — via ntfy push and/or a webhook (Slack/Discord/generic) — when the balance runs low or drops fast. What it does - Polls each SIM's balance (adaptive: 15 min baseline, 1 min after a detected drop, decaying back). - Low-balance ladder — alerts at $3 / $2 / $1 / $0.50 / $0.25 / $0.10, each fires once and re-arms after a top-up. - Usage-spike alert — a drop beyond a threshold within a rolling window, above the FX-reconversion noise floor, with a cooldown. - Failure handling — auth failures alert immediately; transient outages alert only after they persist, with a recovery message afterward. - Daily summary (at a time and timezone you choose) and a paid-by expiry warning. - Server-rendered dashboard (balance, sparkline, recent alerts), SIM management, and a settings page — all auth-gated. - Prometheus /metrics and /healthz , unauthenticated and cluster-internal. - Optional Tor routing for the polling traffic. Security The silent.link token is the only credential for a SIM — anyone with it can read its balance. So: tokens are stored as secrets, never logged (only an 8-char fingerprint), and never placed in a notification payload or as a click-through link, regardless of notification backend. ntfy topics should be long and unguessable — treat them like a password. The app stores balance history locally in SQLite and sends nothing anywhere except your configured ","default_branch":null,"files":null,"tree":[],"storefront":"/r/nktrjsk","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/nktrjsk/silent-link-watchdog/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}