Quickstart
Connect a device and ship your first OTA update in a few minutes.
Introduction
What NervesCloud is, what it manages, and how it fits into a Nerves project.
How-to Guides
Step-by-step recipes for products, devices, firmware, and deployments.
CLI Reference
Install the
nh CLI and manage devices, firmware, and deployment groups from the command line.Concepts
Architecture, authentication, deltas, and the ideas behind the platform.
Production Setup
Move from a hobby project to certificate-based mTLS with NervesKey hardware.
Reference
The nh CLI, NervesHubLink config, device socket API, and self-hosting variables.
Signed OTA Updates
Every firmware file is cryptographically signed. Devices independently verify signatures before applying any update.
Delta Updates
Ship only binary diffs between firmware versions — a 58 MB release can shrink to ~100 KB.
Remote Console
Open a live IEx or shell session on any connected device directly from your browser.
Fleet Health
Monitor CPU, memory, load, and custom metrics across your entire fleet with configurable alarms.
Staged Rollouts
Roll a release out in stages — a canary batch, an approval gate, then everything else — with failure limits on each step.
Flexible Authentication
Use Shared Secrets for development, X.509 certificates for production, or NervesKey hardware security modules for maximum security.
1
Add NervesHubLink to your project
Add
{:nerves_hub_link, "~> 2.7"} to your Nerves project’s mix.exs and configure it with your product credentials.2
Install the CLI
Install the
nh CLI via Homebrew or the install script, then authenticate with nh user auth.3
Create a signing key and publish firmware
Run
nh key create my-key, build your firmware with mix firmware, then publish it with nh firmware upload.4
Create a deployment group
Target devices by tag and version, activate the group, and watch your fleet update automatically.

