Skip to content

Install the agent

The agent is one program, kinuxota, in a Debian package of the same name. It comes from the signed KinuxOTA apt repository, https://apt.kinuxota.com, and connects to your account with the device's API key. After that the device updates itself through apt (Update the agent).

Supported systems

Architecture Package Distributions Typical hardware
x86-64 amd64 Ubuntu 22.04, 24.04, 26.04 · Debian 12, 13 servers, PCs, virtual machines
ARM 64-bit arm64 the same, and Raspberry Pi OS 64-bit (12 Bookworm, 13 Trixie) Raspberry Pi 3, 4, 5 and other 64-bit ARM boards
ARM 32-bit (ARMv7+) armhf the same, and Raspberry Pi OS 32-bit (12, 13) Raspberry Pi 2, 3, 4 and Zero 2 W on a 32-bit system
  • Every release is tested on Ubuntu 22.04, 24.04, 26.04 and Debian 12, 13, on all three architectures. Raspberry Pi OS is based on Debian 12 and 13 and uses the same packages.
  • No ARMv6: Raspberry Pi 1, Pi Zero and Pi Zero W. The installer stops with a message on these boards.
  • The system must run systemd (all of the above do). The agent is the systemd service kinuxota.
Network: what the device must reach (outbound only)
Host Port For
back.kinuxota.com 443 (HTTPS) the API: enrollment, commands, results
mqtt.kinuxota.com 27202 (MQTT over TLS) live connection and command delivery
apt.kinuxota.com 443 (HTTPS) install and updates
www.kinuxota.com 443 (HTTPS) the installer script (only when you use it)

1 Create the device in the dashboard

Devices → Add device → a name → Add device. The Set up step shows the install commands with the device's API key already in them: pick your Platform, then the Installer, apt or .deb file tab, and click Copy commands. Show the device key only shows the bare key.

The key is shown once

Only in this dialog. Keep it secret: it lets a program act as this device. During the pilot an account can have up to 3 devices.

2 Install and connect

Run one of these on the device (<API_KEY> is already filled in when you copy from the dashboard):

curl -fsSL https://www.kinuxota.com/install.sh | sudo sh -s -- --key <API_KEY>

Checks the distribution and the architecture, adds the KinuxOTA apt repository and its key, installs the kinuxota package and enrolls the device. Without --key it only installs and tells you to run sudo kinuxota enroll --key <API_KEY>. Needs curl and root (sudo).

The same steps by hand: the repository key, the sources file, the package, the enrollment.

curl -fsSL https://apt.kinuxota.com/kinuxota.gpg | sudo tee /usr/share/keyrings/kinuxota.gpg >/dev/null
printf 'Types: deb\nURIs: https://apt.kinuxota.com\nSuites: stable\nComponents: main\nSigned-By: /usr/share/keyrings/kinuxota.gpg\n' | sudo tee /etc/apt/sources.list.d/kinuxota.sources >/dev/null
sudo apt update && sudo apt install -y kinuxota
sudo kinuxota enroll --key <API_KEY>

Identical on every supported distribution and architecture: apt picks the right package. It writes two files: /usr/share/keyrings/kinuxota.gpg (the key that signs the repository) and /etc/apt/sources.list.d/kinuxota.sources, exactly these five lines:

Types: deb
URIs: https://apt.kinuxota.com
Suites: stable
Components: main
Signed-By: /usr/share/keyrings/kinuxota.gpg

The Downloads page has the latest .deb for each architecture with its SHA256 checksum. Copy it to the device, then:

sudo apt install ./kinuxota_<version>_<arch>.deb
sudo kinuxota enroll --key <API_KEY>

The package adds the KinuxOTA repository itself (it ships the key and writes the sources file when it is missing), so this device updates through apt too.

3 Check the connection

enroll checks the key with the server, saves it and starts the agent. Within seconds the device is ONLINE in the dashboard. On the device:

kinuxota status        # enrollment, agent service and server connection (sudo shows more)
kinuxota version       # the installed version

Still offline? Troubleshooting has a table for every status line.

Enroll options

sudo kinuxota enroll --key <API_KEY> [--server URL] [--mqtt URL] [--no-start]
Option What it does
--key The 64-character API key. Also read from KINUXOTA_API_KEY, or asked for when missing.
--server, --mqtt Only for a self-hosted server. Defaults: https://back.kinuxota.com, mqtts://mqtt.kinuxota.com:27202.
--no-start Save the enrollment without starting the agent.

Run enroll again with another key to move the device to another device entry or account.