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

onrein

v1.0.1

Published

A daemon lurking in your house, meddling with all your Things.

Readme

Onrein

A daemon lurking in your house, meddling with all your Things.

Installation

npm install -g onrein

Usage

Onrein comes with two components: a long-running service to manage Things, and a CLI to manage the service and manage Things manually and immediately.

Command: start

onrein start MANIFEST

Starts a long-running process, loading MANIFEST as a description of all the Things Onrein should manage. The manifest file should be a JSON file or a Node module exporting an Object with three keys, account, curves, and devices. If provided, an options key will also be interpreted.

The account Object should provide four values required by the Wink API to authenticate Onrein for control over your Things:

  • consumer: A pair of OAuth consumer credentials, key and secret. Reach out to Wink Support for your own. They will probably call it client_id and client_secret.
  • username: Your Wink username.
  • password: Your Wink password.

The curves Object should map arbitrary curve names to values parseable as valid Thermostat options. See the Thermostat docs for more information.

The devices Object should map unique device_type/devive_id pairs, as defined by Wink, to an Object with that Thing's desired_state (also as defined by Wink).

Importantly, the touch point between the two is through rendering values in the desired_state from curves. Every tick, Onrein queries the current value of all the configured curves, and every leaf String in devices starting with $ is evaluated as a JavaScript expression with curves as an Object of the configured, arbitrary keys to those values.

Keep in mind that only Things added to your Wink account may be controlled by Onrein.

Command: status

onrein status

Queries the current status (last_reading in the Wink API) of all devices associated with the account defined in MANIFEST, printing a valid devices config to STDOUT. See onrein start for more information.

TODO

  • [ ] Query status for only the active set of devices.
  • [ ] Query status for active curves.
  • [ ] Updating the active set of devices and curves through the CLI.
  • [ ] Exporting the active set of devices and curves as a valid manifest.
  • [ ] Describing arbitrary requests available to devices.
  • [ ] Reading state from sensors, consumable by devices.
  • [ ] Triggers - perform actions or state changes based on curve thresholds.
  • [ ] Support for other vendors, including more maker-friendly providers like Arduino, BeagleBone, and Electric Imp.

What's in a name?

My name is Schoon, which is Dutch for "clean". This is a "daemon", which is can be characterized as an "unclean" spirit, and the Dutch word for unclean is "onrein". Furthermore, onrein behaves like your favorite household imp or spirit, with a mind of its own, working behind the scenes as it sees fit, sometimes turning your lights on and off.