[BETA] AlarmoGuard — Native Android (IOS soon) client for Home Assistant Alarmo

[BETA] AlarmoGuard — Native Android (IOS soon) client for Home Assistant Alarmo

Hey everyone,

I’m excited to share the first beta of AlarmoGuard — a lightweight, native Android app (Kotlin + Jetpack Compose) built specifically for monitoring and controlling your Home Assistant Alarmo setup.

This beta focuses on reliability, instant status feedback, and a frictionless alarm UX on Android, including proper notifications, fullscreen alerting, and a PIN keypad.

Note: This beta is Android-only for now. An iOS version is planned for a future release.


Highlights

  • Real-time monitoring: Persistent WebSocket connection to Home Assistant /api/websocket with reconnection.
  • Action chips: Disarm / Arm Home / Away / Night / Vacation (configurable visibility).
  • Fullscreen alarm flow: Attention-grabbing activity on pending/triggered with Mute/Disarm actions and fallback alarm sound + vibration.
  • Notifications: Dedicated channels for monitor (low) and alarm (high with DnD bypass if allowed).
  • Setup wizard: Validates base URL, token, and Alarmo entity before you start.
  • Theming: Light/Dark with gradient tokens and customizable keypad/chip colors.
  • Security: Optional settings lock (salted SHA-256).
  • Modern Android: Foreground service, explicit package broadcasts, overlay option (if permitted).

Requirements

  • Home Assistant with the Alarmo integration.
  • Android 10+ (API 29+).
  • Long-Lived Access Token for Home Assistant.
  • Your Alarmo entity id (e.g., alarm_control_panel.alarmo).

Availability

  • Android: Available via the beta APK below.
  • iOS: Planned for a later release (TestFlight invites to follow).

Download (Beta APK)

Note: Sideloading is required. Enable installation from unknown sources on your device if prompted.


Quick Start

  1. Install the APK and open AlarmoGuard.
  2. Enter:
    • Base URL (must start with http:// or https://)
    • Long-Lived Access Token
    • Alarm entity id (e.g., alarm_control_panel.alarmo)
  3. The app performs a connection check and initial state read.
  4. On success, you land on the Front Screen with status + action chips.

Screenshots


Privacy & Security

  • The app connects only to your Home Assistant instance.
  • Uses a Long-Lived Access Token you provide; store it like a password.
  • Preferences are stored locally on-device via Android SharedPreferences.
  • Fullscreen intents follow Android 14+ policies; fallback sound/vibration ensures user feedback.

Known Limitations (Beta)

  • UI uses Material 3; some components may receive refinements.
  • Progress and divider components are being modernized across Compose APIs.
  • No i18n in this beta (English UI only).

Roadmap

  • Improved error surfaces and connection diagnostics.
  • Optional haptic feedback patterns per action.
  • More theme presets and export/import.
  • Optional code entry prompts for arming/disarming flows.

Feedback

Please share issues, ideas, and device-specific behaviors in the comments. If you prefer GitHub issues, use: GitHub Link Soon


Changelog

  • v0.1.0-beta
    • Initial public beta with setup wizard, WebSocket monitor, fullscreen alarm flow, notifications, and theming.

Thanks for trying AlarmoGuard! :raised_hands:

Thank you for putting this together.
I’ve been using this the past couple days.
It’s a good start for the app. Allows me to set and disarm, notifies me on alarm trigger.

Hello there, is it possible for pin to set 5 digits?

Following and would love to test out when the iOS beta becomes available. Thanks!

So, I guess I am wondering why. This can be done with Alarmo settings and a companion app shortcut. Not really trying to rain on your parade. Just wondering.

Having said that …
Like mentioned above, Alarmo allows both pins and passwords. So more than four positions. Not just five.

And, HA handles urls based on Wifi connection for internal and external access. Are you planning on duplicating that a well?

@Jastreb any thought on supporting other Alarm Control Panels? I suspect it should work nearly identical since the entities and properties should be mapped the same?

Yes — starting with the next version, I won’t focus exclusively on Alarmo anymore, but rather on the general alarm_control_panel model of Home Assistant.
The goal is to support alarm control in a generic way, based on standard HA states and services, so that different alarm integrations can be used without being tightly coupled to Alarmo. Alarmo will still be well supported, but it won’t be the only focus going forward.

That’s a fair question — and no worries, I don’t see it as raining on my parade :slightly_smiling_face:

The main reason for AlarmoGuard is security focus. The app is intentionally limited in scope and does not expose general Home Assistant controls. It’s designed to behave more like a dedicated alarm device than a generic HA client.

AlarmoGuard can act as:

  • a local siren
  • a critical notification endpoint
  • and also as a wall-mounted / outdoor keypad panel

From that point on, security becomes the top priority. The app should not allow anything unrelated or potentially unsafe without explicitly going through the alarm control flow. This is very different from the Companion App, which is a full HA client by design.
Regarding PINs and passwords: you’re right — Alarmo supports variable-length PINs and passwords. The current beta uses a fixed keypad UI, but support for more flexible PIN/password handling is planned.

For internal/external URLs: Home Assistant Companion App already does this extremely well. AlarmoGuard currently uses a fixed base URL for reliability and predictability, but smarter URL handling is something I’m evaluating for future versions.

1 Like

Yes — in the next version it will be possible to configure the PIN length between 4 and 6 digits.

PINs will be managed directly inside the app, not just fixed to a single length. In addition to numeric PINs, I’m also planning support for NFC and fingerprint authentication, depending on device capabilities.

It’s also planned to support different PIN types (e.g. permanent, one-time, time-limited), similar to what you might expect from a dedicated alarm keypad.


Keep in mind this is still beta, but the goal is to make the PIN system more flexible while keeping a strong security focus.

Thanks for the great informative reply on your thinking.

Not sure that I have a use case for it. But, I’ll be watching it and might down the road. Heck, I’ll probably test it off and on :wink:

Great to hear. Some thoughts on valuable functionality for security I hope you will add in the not so distant future :grin:

  1. Selector entity on the main screen for those of us that have true House Modes (not just what the alarm panel has) so we can change the House Mode.

  2. Screen for additional entities. Lots of reasons here but the main ones I can use myself…

    a. buttons for Zone Bypass(es) … pre-programed automations to bypass zones and/or pause notifications/alerts. Like most who do this, I have binary Helpers for these so easy enough to see/change with a single button

    b. entity status … super helpful to see what Door Locks are unlocked, Doors Open, Windows Open, etc. I do this today with custom YAML cards.

The main status (on the home page) only shows entities currently open/unlocked/etc - the cards are expandable when any entity is ‘on’…

My more detailed screen (not on the home page) shows this…

@jeffcrum On Android the HA companion app will not consistently make an audible notification when alarmo is triggered unless one does a lot of workarounds (yaml work in HA and macrodroid scripts etc on the Android device).
So far this app makes the android audible alert for alarmo work much better.