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

# Firmware SDK Overview

> Choosing between the Arduino and ESP-IDF libraries.

Hyperwisor provides two firmware libraries for ESP32-class devices. Both handle
Wi-Fi provisioning, the realtime connection, and dashboard widget updates behind
a simple API — you write device logic, not transport code. Pick the one that
matches your toolchain.

## Arduino vs ESP-IDF

<CardGroup cols={2}>
  <Card title="Arduino" icon="microchip" href="/firmware/arduino/install">
    For the Arduino IDE. Fastest path to a working device — `device.begin()` /
    `device.loop()` and you're connected. Rich helpers for widgets, dialogs,
    database, and onboarding.
  </Card>

  <Card title="ESP-IDF" icon="microchip" href="/firmware/esp-idf/install">
    For Espressif's native framework. A component you add to
    `idf_component.yml`, with Kconfig feature toggles and a board port layer for
    production builds.
  </Card>
</CardGroup>

## At a glance

|              | Arduino library                    | ESP-IDF component                          |
| ------------ | ---------------------------------- | ------------------------------------------ |
| Toolchain    | Arduino IDE                        | ESP-IDF (`idf.py`)                         |
| Entry points | `device.begin()` / `device.loop()` | `hyperwisor_init()` / `hyperwisor_start()` |
| Targets      | ESP32                              | ESP32, S2, S3, C3, C6, P4                  |
| Provisioning | AP-mode + manual                   | SoftAP + manual                            |
| OTA          | Built in                           | Opt-in (Kconfig)                           |
| License      | Proprietary (NIKOLAINDUSTRY)       | Apache-2.0                                 |

## What both libraries give you

* **Wi-Fi provisioning** — connect with stored credentials, or fall back to an
  access-point setup mode on first boot
* **Realtime communication** — a managed connection that auto-reconnects
* **Dashboard widgets** — push live values to widgets by their widget ID
* **Cloud commands** — register handlers for commands sent from a dashboard
* **OTA updates** — push new firmware from the dashboard
* **Time sync** — NTP after the network comes up

<Card title="Pick Arduino" icon="arrow-right" href="/firmware/arduino/install">
  Install and flash your first sketch.
</Card>

<Card title="Pick ESP-IDF" icon="arrow-right" href="/firmware/esp-idf/install">
  Add the component to your project.
</Card>
