npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@omarshahine/homebridge-alarm-dot-com

v0.1.2

Published

Homebridge plugin for Alarm.com security systems with first-class two-factor authentication, exposing partitions and sensors to HomeKit.

Readme

homebridge-alarm-dot-com

Homebridge plugin for Alarm.com security systems with real two-factor authentication support.

  • Sign in once from the Homebridge UI (or a CLI). Enter your one-time code once; the plugin enrols itself as a trusted device and never asks again.
  • One long-lived session. No re-login every few minutes, no login-notification spam, no soft bans.
  • Live updates over Alarm.com's WebSocket, with a slow safety-net refresh.
  • Partitions appear as HomeKit Security Systems (Stay, Away, Night, Off). Contact, motion, glass-break, smoke, CO, and water sensors appear as the matching HomeKit sensors with battery, fault, tamper, and bypass status.

Requirements

  • Homebridge 1.8 or 2.x on Node 22 or 24.
  • An Alarm.com login with two-factor authentication enabled (authenticator app, SMS, or email). Alarm.com forces this for most dealers; the plugin tells you if your account still needs it.

Install

Search for alarm-dot-com in the Homebridge UI, or:

npm install -g @omarshahine/homebridge-alarm-dot-com

Sign in

  1. Open the plugin settings in the Homebridge UI.
  2. Enter your Alarm.com username and password and click Sign in.
  3. Pick how to receive the code if you have more than one method, type the code, done.
  4. Restart Homebridge.

The trusted-device token is stored in <homebridge storage>/homebridge-alarm-dot-com/auth.json with owner-only permissions. Your password stays in config.json like any other plugin; Alarm.com needs it to open a new session after a restart.

Headless install (HOOBS, Docker, no UI)

npx @omarshahine/homebridge-alarm-dot-com login --username [email protected]

Add --storage-path /path/to/homebridge/storage if your storage directory is not ~/.homebridge. npx @omarshahine/homebridge-alarm-dot-com logout removes the token.

If you cannot run either, put an existing twoFactorAuthenticationId cookie value in the Trusted-device token field under Advanced; it is imported into auth.json on the next start.

Configuration

| Field | Default | Notes | |---|---|---| | username, password | required | Your Alarm.com login | | armingModes.stay/away/night.silentArming | true | Arm without the panel beeping | | armingModes.*.noEntryDelay | false | | | armingModes.*.forceBypass | false | Bypass open sensors when arming | | ignoredDevices | [] | Alarm.com ids such as 12345678-3; ids are logged at startup | | pollIntervalSeconds | 60 | Only used while live updates are down (minimum 30) | | reconcileIntervalMinutes | 30 | Full refresh interval (minimum 5) | | logLevel | info | debug logs every request with secrets redacted |

Options a panel does not support for a given mode are dropped automatically instead of failing the command.

HomeKit mapping

| Alarm.com | HomeKit | |---|---| | Partition | Security System (Night only offered when the panel supports it) | | Contact, shock, glass break | Contact Sensor | | Motion | Motion Sensor | | Smoke | Smoke Sensor | | Carbon monoxide | Carbon Monoxide Sensor | | Water | Leak Sensor | | Panic buttons, sirens, key fobs, phones, image sensors | skipped |

Troubleshooting

| Log message | What to do | |---|---| | rejected the username or password | Fix the credentials in the plugin settings and restart | | needs a one-time verification code | Open the plugin settings and click Sign in (or run the CLI) | | requires two-factor authentication | Enable 2FA on alarm.com, then sign in again | | locked this account | Wait, then restart Homebridge; do not keep retrying | | falling back to polling | Live updates are down; the plugin polls until they recover |

Set logLevel to debug for per-request logging. Cookies, tokens, passwords, and codes are never logged.

Development

npm install
npm test
npm run lint
npm run build

Clean-room implementation. Protocol notes live in docs/superpowers/specs/.

License

MIT