Control physical access devices

Latest on Hackage:

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow to host generated Haddocks.

BSD3 licensed and maintained by Drew Hess


"Speak, friend, and enter."

mellon-core is a Haskell package for controlling physical access devices designed for human factors, e.g., electric strikes. The access control protocol is quite simple: a device is either locked, or it is unlocked until a particular date and time (an expiration date). Once the expiration date passes, the device is automatically locked again. In the meantime, the device can be locked immediately, overriding the unlocked state; or the unlock period can be extended.

User programs incorporate mellon-core functionality via a Controller, which is responsible for handling user lock and unlock commands, and for scheduling and canceling unlock expirations.

User programs must also adapt their physical access devices to the interface expected by the controller. For this purpose, mellon-core defines a generic Device parametric data type with 2 simple IO actions for locking and unlocking the device. (mellon-core does not provide any useful device implementations; see the companion mellon-gpio package for a GPIO-driven implementation.)

Note that mellon-core does not provide authentication mechanisms or network services for interacting with controllers; that is the domain of higher-level packages which use the base mellon-core package (e.g., mellon-web).

Travis CI build status

Changes (2018-04-03)


  • Bump hlint upper bound.

  • Drop support for Stackage LTS < 11. (2018-02-04)


  • Don't run time-sensitive tests by default (fixes spurious failures on loaded CI servers). (2018-02-04)


  • This package now uses Protolude.

  • Disable hlint tests by default.

  • Add a stack-lts-9.yaml file for LTS 9 Stack builds.

  • Pare down support to just GHC 8.0.2 and GHC 8.2.2. (2018-01-26)

  • Require hlint 2.0.x.

  • Bump QuickCheck bounds.

  • New and improved Nix packaging. (2018-01-11)

  • Use hpack.

  • Support for GHC 8.2.2.

  • Bump doctest, QuickCheck upper bounds.

  • A few test fixes.

  • Maintainer-related changes (better Nix support, Makefile, etc.). (2017-09-04)

  • No changes, version bump only. (2017-09-04)

  • Hackage compliance fix. (2017-09-04)

  • No changes, version bump only. (2017-05-24)

No changes; copyright has been assigned to Quixoftic, LLC. (2017-04-28)

  • Bump hspec, QuickCheck upper bounds. (2016-09-23)

  • No changes, version bump only. (2016-09-23)

  • No changes, version bump only. (2016-06-13)

  • Packaging fixes only. (2016-06-02)

Initial release.

Depends on 6 packages:
Used by 2 packages:
comments powered byDisqus