JavaScript Other
Switch branches/tags
v0.1.63 v0.1.62 v0.1.59 v0.1.57 v0.1.56 v0.1.55 v0.1.54 v0.1.53 v0.1.52 v0.1.51 v0.1.50 v0.1.31 v0.1.30 nats-hemera@6.0.0 nats-hemera@5.8.9 nats-hemera@5.8.8 nats-hemera@5.8.7 nats-hemera@5.8.6 nats-hemera@5.8.5 nats-hemera@5.8.4 nats-hemera@5.8.3 nats-hemera@5.8.2 nats-hemera@5.8.1 nats-hemera@5.8.0 nats-hemera@5.7.1 nats-hemera@5.7.0 nats-hemera@5.6.0 nats-hemera@5.5.1 nats-hemera@5.5.0 nats-hemera@5.4.9 nats-hemera@5.4.8 nats-hemera@5.4.7 nats-hemera@5.4.6 nats-hemera@5.4.5 nats-hemera@5.4.4 nats-hemera@5.4.3 nats-hemera@5.4.2 nats-hemera@5.4.1 nats-hemera@5.4.0 nats-hemera@5.3.0 nats-hemera@5.2.0 nats-hemera@5.1.3 nats-hemera@5.1.2 nats-hemera@5.1.1 nats-hemera@5.1.0 nats-hemera@5.0.6 nats-hemera@5.0.5 nats-hemera@5.0.4 nats-hemera@5.0.3 nats-hemera@5.0.2 nats-hemera@5.0.1 nats-hemera@5.0.0 nats-hemera@5.0.0-rc.7 nats-hemera@5.0.0-rc.6 nats-hemera@5.0.0-rc.5 nats-hemera@5.0.0-rc.4 nats-hemera@5.0.0-rc.3 nats-hemera@5.0.0-rc.2 nats-hemera@5.0.0-rc.1 nats-hemera@4.0.0 nats-hemera@3.5.1 nats-hemera@3.5.0 nats-hemera@3.4.0 nats-hemera@3.3.0 nats-hemera@3.2.0 nats-hemera@3.1.9 nats-hemera@3.1.8 nats-hemera@3.1.7 nats-hemera@3.1.6 nats-hemera@3.1.5 nats-hemera@3.1.4 nats-hemera@3.1.3 nats-hemera@3.1.2 nats-hemera@3.1.1 nats-hemera@3.1.0 nats-hemera@3.0.4 nats-hemera@3.0.3 nats-hemera@3.0.2 nats-hemera@3.0.1 nats-hemera@3.0.0 nats-hemera@2.4.3 nats-hemera@2.4.1 nats-hemera@2.4.0 nats-hemera@2.3.2 nats-hemera@2.3.1 nats-hemera@2.3.0 nats-hemera@2.2.0 nats-hemera@2.1.9 nats-hemera@2.1.8 nats-hemera@2.1.7 nats-hemera@2.1.6 nats-hemera@2.1.5 nats-hemera@2.1.4 nats-hemera@2.1.3 nats-hemera@2.1.2 nats-hemera@2.1.1 nats-hemera@2.1.0 nats-hemera@2.0.2 nats-hemera@2.0.1 nats-hemera@2.0.1-0
Nothing to show
Clone or download
Failed to load latest commit information.
.github remove support for couchbase store Dec 25, 2017
benchmark Feature/refactoring (#214) Jun 1, 2018
docs Feature/hemera 6 (#222) Aug 11, 2018
examples Fix: don't swallow send error, send error has precedence over other e… Aug 5, 2018
packages Publish Aug 11, 2018
test Feature/hemera 6 (#222) Aug 11, 2018
website [ci skip] publish 6.0.0 docs Aug 11, 2018
.appveyor.yml support nodejs 10 and update appveyor matrix Apr 25, 2018
.editorconfig - Remove check for dependencies, the developer is responsible for that Jun 4, 2017
.eslintignore lint test files, improve wildcard, full wildcard convertion Dec 29, 2017
.eslintrc.json use plugin helper in tests, check plugin dependencies at register, re… ( Apr 10, 2018
.gitignore use yarn to bootstrap lerna because symlink bug in npm, remove nodeVe… Sep 26, 2017
.npmignore update npmignore Jun 20, 2017
.prettierignore use prettier with standardjs Oct 1, 2017
.prettierrc use prettier with standardjs Oct 1, 2017
.travis.yml support nodejs 10 and update appveyor matrix Apr 25, 2018 [ci skip] fixed typo Oct 3, 2017 add code of conduct, contributing files, build after install Jan 7, 2017 [ci skip] update contribution section Nov 17, 2017
LICENSE [ci skip] fixed license Mar 31, 2018 [ci skip] improve readme Jun 1, 2018
lerna.json [ci skip] update lerna config May 20, 2018
package.json upgrade dev deps Jun 30, 2018
tsconfig.json [ci skip] add tsconfig, fixed types Apr 26, 2018


License MIT Build Status Build Status Coverage Status Gitter JavaScript Style Guide Known Vulnerabilities lerna

A Node.js microservices toolkit for the NATS messaging system
Run on

📓 Getting Started

Hemera (/ˈhɛmərə/; Ancient Greek: Ἡμέρα [hɛːméra] "day") is a small wrapper around the official NATS driver. NATS is a simple, fast and reliable solution for the internal communication of a distributed system. It chooses simplicity and reliability over guaranteed delivery. We want to provide a toolkit to develop micro services in an easy and powerful way. We provide a pattern matching RPC style. You don't have to worry about the transport. NATS is powerful.

With Hemera you have the best of both worlds. Efficient pattern matching to have the most flexibility in defining your RPC's. It doesn't matter where your server or client lives. You can start as many services you want on different hosts to ensure maximal availability. The only dependency you have is a single binary of ~10MB. Mind your own business NATS will do the rest for you:

The key features of NATS in combination with Hemera are:

  • Lightweight: The Hemera core is small as possible and provide an extensive plugin system.
  • Location transparency: A service may be instantiated in different locations at different times. An application interacting with an service and does not know the service physical location.
  • Service Discovery: You don't need a service discovery all subscriptions are managed by NATS.
  • Load Balancing: Requests are load balanced (random) by NATS mechanism of "queue groups".
  • Packages: We provide reliable and modern plugins to the community.
  • High performant: NATS is able to handle million of requests per second.
  • Scalability: Filtering on the subject name enables services to divide work (perhaps with locality).
  • Fault tolerance: Auto-heals when new services are added. Configure cluster mode to be more reliable.
  • Auto-pruning: NATS automatically handles a slow consumer and cut it off.
  • Pattern driven: Define RPC's in JSON and use the flexibility of pattern-matching.
  • Request & Reply: By default point-to-point involves the fastest or first to respond.
  • Publish & Subscribe: Hemera supports all features of NATS. This includes wildcards in subjects and normal publish and fanout mechanism.
  • Tracing: Builtin tracing capabilities but we also provide plugins for Zipkin or Jaeger.
  • Monitoring: NATS server can be monitored by cli or a dashboard.
  • Payload validation: Create your own validator or use existing plugins e.g hemera-joi or hemera-ajv.
  • Serialization: Use custom serializer e.g hemera-mgspack.
  • Metadata: Transfer metadata across services or attach contextual data to tracing systems.
  • Dependencies: NATS is a single binary of ~10MB and can be deployed in seconds.
  • Typescript: We provide typings.

Built in protection

  • Process policy: Will exit the process when the policy (memory, event loop) could not be fullfilled (Option: heavy).
  • Message loop detection: Will return an error if you call a route recursively (Option: maxRecursion).
  • Safe default JSON serializer: Provides a deterministic version and will also gracefully handle circular structures.

Who's using Hemera?

appcom-interactive amerbank savicontrols mercado unico
appcom interactive amerbank savicontrols mercado unico

Get Involved

  • Contributing: Pull requests are welcome!
    • Read and check out our help-wanted issues
    • Submit github issues for any feature enhancements, bugs or documentation problems
  • Support: Join our gitter chat to ask questions to get support from the maintainers and other Hemera developers
  • Discuss: Tweet using the #HemeraJs hashtag


See Releases


Please read for details on our code of conduct, and the process for submitting pull requests to us.


We use SemVer for versioning. Available versions tags on this repository.


See also the list of contributors who participated in this project.

Professional services

Hemera is free for any use (MIT license). If you are in production don't miss the professional support service. For courses and training send me an email to or contact me private on Gitter

Support / Donate

Maintaining an open-source project is hard and very time-consuming. Our mission is to provide great support and improve the software in regular updates. If you use hemera it would be great to receive something back in any form, a donation or with a Pull-Request, you decide. Thank you!




This project is licensed under the MIT License - see the LICENSE file for details