> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nerves-hub.org/llms.txt
> Use this file to discover all available pages before exploring further.

# NervesHub: Open-Source IoT Firmware Update Platform

> NervesHub is an open-source firmware update and device management platform for Nerves-based IoT devices. Secure OTA updates, remote console access, and fleet monitoring.

NervesCloud is a hosted, production-grade platform for delivering secure OTA firmware updates and managing fleets of Nerves devices. This documentation covers getting started, common workflows, deeper concepts, and full reference for the CLI and configuration.

<CardGroup cols={2}>
  <Card title="Quickstart" icon="rocket" href="/quickstart">
    Connect a device and ship your first OTA update in a few minutes.
  </Card>

  <Card title="Introduction" icon="book-open" href="/getting-started/introduction">
    What NervesCloud is, what it manages, and how it fits into a Nerves project.
  </Card>

  <Card title="How-to Guides" icon="wrench" href="/guides/manage-devices">
    Step-by-step recipes for products, devices, firmware, and deployments.
  </Card>

  <Card title="CLI Reference" icon="terminal" href="/cli/reference">
    Install the `nh` CLI and manage devices, firmware, and deployment groups from the command line.
  </Card>

  <Card title="Concepts" icon="lightbulb" href="/concepts/architecture">
    Architecture, authentication, deltas, and the ideas behind the platform.
  </Card>

  <Card title="Production Setup" icon="shield-check" href="/tutorials/production-setup-nerveskey">
    Move from a hobby project to certificate-based mTLS with NervesKey hardware.
  </Card>

  <Card title="Reference" icon="code" href="/reference/cli-nh">
    The nh CLI, NervesHubLink config, device socket API, and self-hosting variables.
  </Card>
</CardGroup>

<CardGroup cols={2}>
  <Card title="Signed OTA Updates" icon="shield-check" href="/concepts/firmware-signing">
    Every firmware file is cryptographically signed. Devices independently verify signatures before applying any update.
  </Card>

  <Card title="Delta Updates" icon="compress" href="/management/delta-updates">
    Ship only binary diffs between firmware versions — a 58 MB release can shrink to \~100 KB.
  </Card>

  <Card title="Remote Console" icon="display" href="/management/remote-console">
    Open a live IEx or shell session on any connected device directly from your browser.
  </Card>

  <Card title="Fleet Health" icon="heart-pulse" href="/management/health-monitoring">
    Monitor CPU, memory, load, and custom metrics across your entire fleet with configurable alarms.
  </Card>

  <Card title="Staged Rollouts" icon="layer-group" href="/concepts/deployments">
    Roll a release out in stages — a canary batch, an approval gate, then everything else — with failure limits on each step.
  </Card>

  <Card title="Flexible Authentication" icon="key" href="/auth/device-certificates">
    Use Shared Secrets for development, X.509 certificates for production, or NervesKey hardware security modules for maximum security.
  </Card>
</CardGroup>

<Steps>
  <Step title="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.
  </Step>

  <Step title="Install the CLI">
    Install the `nh` CLI via Homebrew or the install script, then authenticate with `nh user auth`.
  </Step>

  <Step title="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`.
  </Step>

  <Step title="Create a deployment group">
    Target devices by tag and version, activate the group, and watch your fleet update automatically.
  </Step>
</Steps>
