Skip to content


Switch branches/tags

nact Logo

nact ⇒ node.js + actors
your services have never been so µ

.github/workflows/npm-publish.yml  Coveralls DeepScan Grade

npm FOSSA Status js-semistandard-style we are reactive

Any and all feedback, comments and suggestions are welcome. Please open an issue if you find anything unclear or misleading in the documentation.

This is the repository for the javascript implementation. To view/contribute to the ReasonML code, go to To contribute to the documentation, is the place to make PRs.

Nact is redux but for the server

Servers today are very different from those even 10 years ago. So why are we still programming like it's the 90s?

Inspired by the approaches taken by Akka and Erlang, Nact is an open source Node.js framework which enables you to take control of your state to:

  • more effectively use memory
  • improve application resiliance
  • increase performance
  • reduce coupling

With out of the box support for event sourcing, and a considered implementation of the actor model, nact can work across a wide variety of domains.

Nact is no silver bullet, but it is evolving to tackle ever more demanding use cases. Perhaps one of them is yours?

To get started, head to

Note: Nact is currently only able to work on Node 8 and above.

The Next Branch

You might have noticed that the default branch has been changed to next. That is because Nact is undergoing a signficant rearchitecture.

The aim is to make modularity and extensibility a first class citizen of Nact, while still going to great pains as always to ensure a seamless upgrade path. This work will enable Nact to run in more contexts, such as the browser, deno and of course nact's original platform node. It will also allow for some exciting work in enabling location transparency and being able to more easily design and operate distributed architectures, especially in k8s and cloud contexts.

Of course due to the churn, and because the Nact API surface is expanding, it also seemed prudent to port the codebase over to typescript.

The changes will also require a rewrite of the documentation.

A note on regularity of commits

Nact sees daily usage by the project maintainer. The project is extremely stable and has been around for a few years. As the project made the deliberate choice to minimise dependencies, particularly runtime dependencies, there is not a huge need for updates to the project, besides for the occasional introduction of new features. This means that it can be a few months since the last commit. This does not mean the project is dead, but rather that it is working as designed.

How are you using Nact?

We would love to hear how you're using Nact. If you'd like to send feedback (bad or good) please email Natalie Cuthbert at or join the Discord.


FOSSA Status