# nerves_hub_link v2.12.0 - Table of Contents

> Manage your Nerves fleet by connecting it to NervesHub

## Pages

- [NervesHubLink](readme.md)
- [Changelog](changelog.md)

- Guides
  - [Configuration](configuration.md)
  - [Extensions](extensions.md)
  - [Debugging](debugging.md)

## Modules

- [NervesHubLink](NervesHubLink.md): The Device-side client for NervesHub.
- [NervesHubLink.NetworkInterface](NervesHubLink.NetworkInterface.md): Functions for determining the network interface when connecting to NervesHub and downloading firmware.

- Client
  - [NervesHubLink.Client](NervesHubLink.Client.md): The primary integration point for customizing your applications connection with [NervesHub](https://github.com/nerves-hub/nerves_hub_web).
  - [NervesHubLink.Client.Default](NervesHubLink.Client.Default.md): Default NervesHubLink.Client implementation

- Configuration
  - [NervesHubLink.Configurator](NervesHubLink.Configurator.md): Behaviour for implementing a configurator.
  - [NervesHubLink.Configurator.Config](NervesHubLink.Configurator.Config.md): Data structure for holding configuration information provided by the configurator.

  - [NervesHubLink.Configurator.LocalCertKey](NervesHubLink.Configurator.LocalCertKey.md): Configurator allowing authentication via locally stored certificate key.

  - [NervesHubLink.Configurator.NervesKey](NervesHubLink.Configurator.NervesKey.md): Configurator enabling authentication via NervesKey.

  - [NervesHubLink.Configurator.SharedSecret](NervesHubLink.Configurator.SharedSecret.md): Configurator allowing authentication with a shared secret.

  - [NervesHubLink.Configurator.TPM](NervesHubLink.Configurator.TPM.md): Configurator enabling authentication via TPM.
  - [NervesHubLink.FwupConfig](NervesHubLink.FwupConfig.md): Config structure responsible for

- Extensions
  - [NervesHubLink.Extensions](NervesHubLink.Extensions.md): Extensions are a mechanism for transmitting messages for non-critical
functionality over the existing NervesHub Socket. An extension will only
attach if the server-side requests it from the device to ensure it will not
disrupt regular operation.
  - [NervesHubLink.Extensions.Geo](NervesHubLink.Extensions.Geo.md): The Geo Extension.
  - [NervesHubLink.Extensions.Geo.DefaultResolver](NervesHubLink.Extensions.Geo.DefaultResolver.md): Default `Resolver` implementation.
  - [NervesHubLink.Extensions.Geo.Resolver](NervesHubLink.Extensions.Geo.Resolver.md): Geo extension behaviour for writing custom resolvers.
  - [NervesHubLink.Extensions.Health](NervesHubLink.Extensions.Health.md): The Health Extension.
  - [NervesHubLink.Extensions.Health.DefaultReport](NervesHubLink.Extensions.Health.DefaultReport.md): A default health report implementation with support for easily adding
new metadata, metrics and such via config.

  - [NervesHubLink.Extensions.Health.DeviceStatus](NervesHubLink.Extensions.Health.DeviceStatus.md): Structure for device status.

  - [NervesHubLink.Extensions.Health.MetricSet](NervesHubLink.Extensions.Health.MetricSet.md): Behaviour for implementing a custom metric set to be used in a report.

  - [NervesHubLink.Extensions.Health.MetricSet.CPU](NervesHubLink.Extensions.Health.MetricSet.CPU.md): Health report metrics for CPU temperature, utilization, and load averages.
  - [NervesHubLink.Extensions.Health.MetricSet.Disk](NervesHubLink.Extensions.Health.MetricSet.Disk.md): Health report metrics for total, available, and used disk space.
  - [NervesHubLink.Extensions.Health.MetricSet.Memory](NervesHubLink.Extensions.Health.MetricSet.Memory.md): Health report metrics for total, available, and used (percentage) memory.
  - [NervesHubLink.Extensions.Health.MetricSet.NetworkTraffic](NervesHubLink.Extensions.Health.MetricSet.NetworkTraffic.md): Health report metrics for bytes sent and received (total) per interface.
  - [NervesHubLink.Extensions.Health.Report](NervesHubLink.Extensions.Health.Report.md): Behaviour for implementing a custom health report.
  - [NervesHubLink.Extensions.LocalShell](NervesHubLink.Extensions.LocalShell.md): Provides an interactive local shell for NervesHub to connect to.

- Downloads and Updates
  - [NervesHubLink.ArchiveManager](NervesHubLink.ArchiveManager.md): GenServer for handling downloading archives from NervesHub
  - [NervesHubLink.Downloader](NervesHubLink.Downloader.md): Handles downloading files via HTTP.
  - [NervesHubLink.Downloader.RetryConfig](NervesHubLink.Downloader.RetryConfig.md): Download retry configuration.
  - [NervesHubLink.UpdateManager](NervesHubLink.UpdateManager.md): GenServer responsible for brokering messages between:
  * an external controlling process
  * FWUP
  * HTTP
  - [NervesHubLink.UpdateManager.CachingUpdater](NervesHubLink.UpdateManager.CachingUpdater.md): This module orchestrates firmware updates by downloading the firmware
from the specified URL and storing it in a cache directory before applying it.
If a partial download exists, it resumes from where it left off.
  - [NervesHubLink.UpdateManager.StreamingUpdater](NervesHubLink.UpdateManager.StreamingUpdater.md): This module is responsible for updating firmware using a streaming approach.
It uses the `NervesHubLink.Downloader` module to download the firmware and then sends the chunks to the
`Fwup` module to update the firmware.
  - [NervesHubLink.UpdateManager.Updater](NervesHubLink.UpdateManager.Updater.md): A behaviour to help orchestrate the complete workflow of downloading and installing/applying
firmware updates.

- NervesHub Messages
  - [NervesHubLink.Message.ArchiveInfo](NervesHubLink.Message.ArchiveInfo.md): Payload received from NervesHub when an archive is available.

  - [NervesHubLink.Message.FirmwareMetadata](NervesHubLink.Message.FirmwareMetadata.md): Detailed firmware metadata received during the firmware update process.

  - [NervesHubLink.Message.UpdateInfo](NervesHubLink.Message.UpdateInfo.md): Payload received from NervesHub when an update is available.

- Utilities
  - [NervesHubLink.Alarms](NervesHubLink.Alarms.md): A slim adapter for `Alarmist` and `:alarm_handler`, providing a unified interface for setting and clearing alarms.
  - [NervesHubLink.Backoff](NervesHubLink.Backoff.md): Functions for computing network connect backoff intervals

  - [NervesHubLink.Certificate](NervesHubLink.Certificate.md): Certificate management utilities

