Price / stock / keyword / content-diff / uptime watches with cross-device notification fan-out.
The public home of
ryu-monitors. Source, builds, and releases live here — binaries for every platform are attached to each release.This tree is generated from the Ryu monorepo, so commits pushed here directly are replaced on the next sync. Pull requests are welcome — open them here and they are ported into the monorepo, then flow back out. Ryu as a whole: https://github.com/amajorai/ryu
App: Install (opens the Ryu desktop app and asks you to confirm)
CLI:
ryu apps add @ryu/monitorsCrate:
cargo install ryu-monitorsPrebuilt binaries for every platform are attached to each release.
Apache-2.0 — see LICENSE.
backend/(ryu-monitors) — an extracted Core capability crate: the check engine, the SQLiteMonitorStore, and the/api/monitors/*HTTP surface. Now served OUT-OF-PROCESS by theryu-monitorsbin ([[bin]],kind:local,public_mount,RYU_MONITORS_BIN/RYU_MONITORS_PORT, default:8003); Core links zero monitor code (no path-dep). Its scheduler-coupling (check run + backing-job reconcile) reaches the sidecar over loopback viaapps/core/src/monitors_client.rs, and the sidecar reaches BACK via two ext-bearer host callbacks (Spider fetch + alert fan-out). The shared notification-delivery store no longer lives here — it was extracted to the kernel crateryu-notify+apps/core/src/notify/(see the repo root); the sidecar shares only the dep-lightryu-notifywire types. Remaining cross-cutting calls are inverted through theMonitorsHosttrait, so the crate has zero dependency onapps/core.ui/(@ryu/monitors-app) — the companion surface: a React app built to one self-contained HTML viavite-plugin-singlefile. Full-page Companion (Path B,ui_format: "html").
- id
@ryu/monitors· companionMonitors(iconradar). - grant
monitors:crud— the bridge capability the UI drives/api/monitors/*through.
The HTTP monitor backend uses Ryu's shared ryu-egress primitive for URL scheme
screening, DNS/IP pinning, redirect re-screening, and response limits. The app owns
the check semantics; it does not vendor a second SSRF policy.
/api/monitors (list/create) · per-monitor run, snapshots, alerts · alerts +
alerts/stream (SSE) + alerts/:id/ack · push-tokens (Expo device registration).
Check type and fetch backend are both extensible enums routed through one engine; timing
reuses Core's scheduler (JobTarget::Monitor). Notification targets (webhook / Telegram /
Expo push / BYO SMTP email) are per-monitor, none hardcoded.