Introducing NervesHub 2.0

We’re excited to announce that we’re actively working on NervesHub 2.0, an improved version of our IoT device firmware update and management platform for Nerves-based devices. Although NervesHub 1.0 is still available and maintained in the maint-v1.0 branch, we believe 2.0 will enable significant improvements to meet our evolving needs and those of the Nerves community.

Eric Oestrich is leading this effort, with contributions from Jon Carstens, myself, and others. The development is happening in the open, so feel free to check it out and join us on this journey!

Key Goals for NervesHub 2.0:

  1. Self-host: Easily self-host your own NervesHub, especially for small deployments
  2. Scalable to 100Ks of Devices: Addresses performance issues found in real-world NervesHub 1.0 deployments
  3. Simple Rolling Updates: Set up rolling updates directly from the GUI
  4. MQTT Support: Utilize the cloud provider (like AWS IoT) you already have for scalability
  5. Product Environments: Manage fleets of devices at various stages of development
  6. Permission Model: Refocus on environments instead of organizations
  7. Flexible Firmware Push: Push firmware outside of deployments
  8. Improved Health Monitoring: Separate the causes of turning off firmware updates and periodically recheck possible network and power failures
  9. Simplified Code Base: Code deletion, removal of hosted service features, limits, certificate creation (no nerves_hub_ca), and more

This work is not complete, but we have made enough progress that it no longer makes sense to keep it to ourselves. For more details, visit the nerves_hub_web repository on GitHub.

Thank you for your continued support, and stay tuned for more updates on NervesHub 2.0!


I have deployed a local instance and I have see in the mock-test devices included the button “Console”, does it means you can remote access to the iex shell of a specific device?

Thank you in advance!


Yep. It’s an IEx console in the browser to that specific device if the feature is enabled


Oh I love that! I really like working with nerves, but looking at the current NervesHub deployment always kept me from using it for hobbyist projects. Very excited for this. Maybe I can finally move some stuff from Balena to Nerves while still having easy multi device management.


Is there an outline of what an environmet permission model means? If not specific to NervesHub maybe what it means in general? I’m always modeling my permissions based on GitHub’s orgs and I always feel like it’s not quite right but I don’t have any better ideas.

The GitHub model of org/repo made sense when NervesHub was potentially a public service with a paid model. With 2.0, the shift is towards self hosting and when it’s your own service, the typical concern is usually just the “environment”, or “This is a prod|dev|qa device”.

So the new model is essentially having a single level of separation (dev, qa, prod, testing, etc), rather than the dual (org1-product1, org1-product2, etc etc)