Introduction

What NervesHub is, how it delivers signed OTA firmware to Nerves devices, and where to start.

Written By Josh Kalderimis

Last updated About 2 months ago

NervesHub is an open-source, self-hostable platform for over-the-air (OTA) firmware updates and device management. It ships cryptographically signed firmware to authenticated Nerves devices, shows you what your fleet is doing, and lets you debug hardware remotely.

It runs in production at hundreds of thousands of devices on a lean stack: an app server, PostgreSQL, and S3-compatible object storage (plus optional ClickHouse for logs).

How it works

Devices open a long-lived websocket to the server. When an update is available, NervesHub hands the device a download URL; the device verifies the signature and applies it, immediately or when convenient. Everything else is built on that connection.

Nerves device ── websocket ──▢ NervesHub  ──▢  PostgreSQL + object storage
     β–²                             β”‚
     └────── signed firmware β”€β”€β”€β”€β”€β”€β”˜

What you get

Capability

What it does

Signed OTA delivery

Firmware is signed; server and device both verify it.

Firmware deltas

Devices download only what changed (via fwup + xdelta3).

Deployment groups & releases

Tag-based targeting, gradual rollouts, failure limits.

Flexible auth

X.509 certificates for production, shared secrets for quick starts.

Remote console & shell

Live IEx console and local shell into any device.

Health & geo

Device metrics, alarms, network info, and GeoIP location.

Support scripts

Run snippets on demand against online devices.

Logs & analytics

Optional ClickHouse-backed device logs and Insights.

Audit logs

Immutable history across orgs, products, devices, deployments.

Multi-tenant

Organizations and products keep fleets isolated.

HTTP API

Full API, documented with OpenAPI.

Open source, no lock-in

NervesHub is built with Elixir and is fully open source. Run it yourself or use the hosted NervesCloud service. It's the same platform either way.

Next steps

I want to…

Go to

See it work end to end

Quickstart

Run my own server

Self-hosting NervesHub

Learn the vocabulary

Terminology

Choose hosted vs self-hosted

NervesHub vs NervesCloud