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

# Prerequisites

> What a device needs before you register it

IoT Manager's agent is a single static binary with almost no dependencies. Here's the full list of what a device actually needs.

## Operating system

* **Linux**, any distribution. The installer detects your package manager (`apt`, `apk`, `dnf`, `pacman`, `zypper`) automatically wherever it needs to suggest installing something.
* **Architecture**: amd64, arm64, armv7, or armv6. The installer detects this automatically and downloads the matching binary.
* **Windows and macOS are not currently supported.**

## Required on the device

<Columns cols={2}>
  <Card title="bash" icon="terminal">
    The installer and agent's helper scripts are bash scripts.
  </Card>

  <Card title="curl" icon="download">
    Used to fetch the installer bundle and register the device.
  </Card>

  <Card title="tar" icon="box">
    Used to extract the downloaded installer bundle.
  </Card>

  <Card title="Root / sudo access" icon="key">
    Needed to install the binary to `/usr/local/bin`, write service files, and bind to the ports the agent uses.
  </Card>
</Columns>

These four are it — `bash`, `curl`, and `tar` ship on essentially every Linux distribution already, including minimal/embedded images.

## Recommended but not required

* **systemd, OpenRC, or SysVinit** — one of these lets the installer register `iotmanager-agent` as a proper supervised service (auto-starts on boot, auto-restarts on crash). If none is detected, the installer falls back to running the agent as a plain background process instead — it still works, but won't survive a reboot on its own and won't restart itself if it crashes.
* **Docker + Docker Compose** — only needed if you want to use IoT Manager's deployment features ([Device Updates](/device-updates)) or see running containers in the dashboard. IoT Manager never installs or manages Docker itself; it only uses it if the device already has it. Everything else (terminal, file manager, telemetry, [Remote Access](/remote-access)) works with or without Docker.
* **NetworkManager (`nmcli`)** — only needed for the Network tab (viewing/configuring interfaces, WiFi, DNS from the dashboard). Without it, that tab is unavailable but nothing else is affected.

## Network access

The device only needs **outbound** access — no inbound firewall rules, no port forwarding, no static IP. See [Firewall Rules](/firewall-rules) for the exact hosts and ports.
