discover · compare · collections · requirements · contribute · feed · watching · stats · help with your tokens
greyfoundry/ursa-android · source
Snapshot 0 · 2026-11-04T12:47:28Z · Kotlin · MIT
Content fingerprint
aa2428ff147830129dae9071382beaaba24f01c43b6a51483392c7878b11c575GitHub description at capture
Native Android client for Uptime Kuma: real-time monitoring, multi-server, and FOSS push (UnifiedPush, no relay, no Firebase).
README at capture
# URSA  [](https://github.com/greyfoundry/ursa-android/actions/workflows/ci.yml) [](LICENSE)   **Your [Uptime Kuma](https://github.com/louislam/uptime-kuma) monitors, live in your pocket.** URSA is a native Android app that keeps every self-hosted monitor a glance away - real-time up/down status, heartbeat history, and push notifications that never touch Google or a paid relay. **Free, and always free.** URSA is open source (MIT) with no paywalls, no premium tier, no ads, and no tracking - now and forever. If it works for your Kuma setup, it's yours. <p> <img src="docs/assets/screenshots/01-home-dark.png" width="220" alt="Fleet Home showing urgent monitors and server health" /> <img src="docs/assets/screenshots/05-features-menu-dark.png" width="220" alt="Monitor list with the feature menu open" /> <img src="docs/assets/screenshots/03-detail-dark.png" width="220" alt="Live monitor detail with response time and uptime" /> <img src="docs/assets/screenshots/07-browse-dark.png" width="220" alt="Browse catalogue of operations, insights, and server tools" /> </p> ## 🐻 Why URSA? You already run Uptime Kuma. It watches your homelab, your side project, your family's Plex box - and it does it beautifully in the browser. But the moment you close the laptop, you're back to refreshing a tab on your phone or wiring up yet another notification bot. Uptime Kuma has wanted a real Android app for years. The web dashboard is great on a desktop but cramped on a phone, the existing apps are abandoned or read-only, and every "just get alerts" path seems to end at Firebase or a third-party relay you have to trust. URSA fixes that. It's the companion app your Kuma setup has been missing: fast, native, and yours. Point it at your server, log in, and your monitors are just.... there - whenever you pull your phone out. ## ✨ What you get - 📡 **Live status at a glance** - every monitor, up or down, with a response-time sparkline and service favicon, updating in real time as Kuma pings them. Search and filter when the list gets long, save advanced views, or switch to compact mode. - 📈 **Heartbeat history and uptime** - tap a monitor for its recent beats (over 6h, 24h, 7d, or 30d), response time, and uptime percentage. - 🐢 **Slow-response alerts** - get notified when a monitor is up but responding slower than a limit you set, globally or per monitor. Kuma can't do this; your phone can. - 🔒 **TLS certificate details** - see which certs are healthy and which are about to expire, with a fleet certificate dashboard and local reminders before they do. - 🔔 **Push notifications, your way** - get alerted the instant something goes down (and told how long it was down when it recovers), routed through [UnifiedPush](https://unifiedpush.org) (e.g. ntfy). No Firebase, no Google Play Services, no relay server to run or pay for. - ⌚ **Wear OS companion** - a standalone status dashboard with monitor details, latency, uptime, groups, tags, a tile, complications, and optional paired Pause/Resume controls. The phone's F-Droid build remains free of Google services. - 🖥️ **All your servers, one app** - connect multiple Uptime Kuma instances and switch between them. Custom access headers support Pangolin, Cloudflare Access, and other reverse-proxy gates, with sensitive values encrypted on-device. - ⏯️ **Manage without the browser** - create and safely edit common monitor settings, configure SFTP monitors with password or private-key access, assign groups, tags, and notification providers, run bulk pause/resume, and manage all six maintenance strategies. - 🔑 **Login that sticks** - username/password and two-factor (TOTP), with a session that heals itself when your connection drops. - 🌐 **Public status pages** - check a shared status page without logging in at all. - 🛡️ **Private by default** - credentials are encrypted on-device, only your session token is ever stored (never your password), and screenshot protection defaults to Always with optional Sensitive screens only and Off modes. - 📱 **Feels like Android** - a home-screen widget, a Quick Settings tile, app shortcuts and scoped deep links, biometric app lock, an offline last-known view, notification actions, responsive tablet layouts, and an opt-in glance display. - 🧰 **Built for incident triage** - incident, domain, event, aggregate, certificate, and pinned-live dashboards turn a long fleet into the next useful action. - 🎨 **Light and dark, Kuma's colors** - it uses Uptime Kuma's own palette and status conventions by default, with optional Material You (Android 12+) if you'd rather match your wallpaper. ## 📥 Get it Grab the latest signed APK from the [**Releases**](https://github.com/greyfoundry/ursa-android/releases) page, install it, open the app, and add your server's address (for example `https://kuma.yourdomain.com`). That's it - log in and your monitors show up. New to the app? The [Getting Started guide](https://github.com/greyfoundry/ursa-android/wiki/Getting-Started) walks you through your first connection, and [Push Notifications](https://github.com/greyfoundry/ursa-android/wiki/Push-Notifications) covers getting alerts on your phone. **Got a Wear OS watch?** There's a separate `ursa-wear-*.apk` on the Releases page for the full companion - see [Wear OS](https://github.com/greyfoundry/ursa-android/wiki/Wear-OS) for how to sideload it. **Prefer auto-updates?** In [Obtainium](https://github.com/ImranR98/Obtainium), add [URSA's GitHub source](https://github.com/greyfoundry/ursa-android). It tracks the versioned release tags and updates URSA automatically, no store required. **Prefer F-Droid?** [Install URSA from F-Droid](https://f-droid.org/packages/dev.astoris.ursa/). ## ✅ Works with your setup | Your Kuma looks like... | URSA handles it | |---|---| | Uptime Kuma 2.4.0-2.5.6 | ✔ verified against digest-pinned live instances | | Username / password login | ✔ | | Two-factor (TOTP) | ✔ | | Several servers | ✔ switch freely | | Self-signed certificates | ✔ opt-in per connection | | Plain-HTTP instances | ✔ | | Behind nginx / Caddy / Traefik | ✔ | | Behind a Cloudflare Tunnel | ✔ | | Behind Pangolin or an access proxy | ✔ up to eight encrypted custom headers per server | If your instance is reachable in a browser, URSA can talk to it - reverse proxy or tunnel, it's all the same standard HTTPS + WebSocket underneath. ## ❤️ Support URSA URSA is free and open source - and always will be - built in spare time for the self-hosting community. There's no paid version to upsell you; if it saves you a few browser refreshes, here's how you can help: - ⭐ **Star the repo** - it genuinely helps others find the app. - 🐛 **Report bugs and ideas** in [Issues](https://github.com/greyfoundry/ursa-android/issues), or say hi in [Discussions](https://github.com/greyfoundry/ursa-android/discussions). - 💛 **Sponsor the project** using the **Sponsor** button at the top of the repo - even a coffee's worth keeps the batteries charged. ## 🤝 Contributing Pull requests and issues are welcome. Start with [CONTRIBUTING.md](CONTRIBUTING.md), and please be kind - we follow a [Code of Conduct](CODE_OF_CONDUCT.md). Found something security-sensitive? See the [Security Policy](SECURITY.md). ## 🛠️ For developers Curious how it works under the hood, or want to build it yourself? The technical deep dive lives in the wiki: - [Building and Testing](https://github.com/greyfoundry/ursa-android/wiki/Building-and-Testing) - [Architecture](https://github.com/greyfoundry/ursa-android/wiki/Architecture) - [Network and Protocol](https://github.com/greyfoundry/ursa-android/wiki/Network-and-Protocol) - [Push Internals](https://github.com/greyfoundry/ursa-android/wiki/Push-Internals) - [Wear OS](https://github.com/greyfoundry/ursa-android/wiki/Wear-OS) - [Security](https://github.com/greyfoundry/ursa-android/wiki/Security) In short: Kotlin + Jetpack Compose (with a separate `:wear` module for the watch tile), Socket.IO for the live link, encrypted-at-rest credentials, no third-party services. Release publication is manually initiated. Every published build ships signed, with an SBOM and a provenance attestation attached. ## 📜 License MIT - matching upstream Uptime Kuma. URSA is an independent client and is not affiliated with the Uptime Kuma project.