Skip to main content
Devices with no internet connectivity at all (fully air-gapped, or on a network that’s deliberately isolated) can’t reach IoT Manager’s reverse tunnel — but you can still deploy Compose releases to them, and reach the device’s own local web UI directly on its LAN.

The local web UI

Every device runs its own local web interface, independent of the cloud dashboard — reachable at http://<device-ip>:<port> on your local network. It shows the same telemetry, terminal, and file manager as the cloud dashboard, and is what actually receives an offline bundle install (below).
This is the same agent process handling both the cloud connection and the local UI — the local UI keeps working even if the device has no internet access whatsoever, since it doesn’t depend on the reverse tunnel at all.

Deploying a Compose release offline

  1. From the Releases page in the cloud dashboard, open a Compose release and switch to the Offline Bundle tab.
  2. Copy the generated script and run it on any machine that does have internet access and Docker installed — it pulls every image the release needs, saves them, and packages everything (compose file, images, version marker) into a single offline-bundle.tar.gz.
    Pulling and saving images can take several minutes for larger releases. Run the script inside screen or tmux so you don’t lose the session partway through.
  3. Transfer offline-bundle.tar.gz to the target device however makes sense for your environment — USB drive, scp over a local network, sneakernet, etc. The device itself needs no internet access for this step.
  4. On the device, open its local web UI (see above) and upload the bundle through the Updates page. The agent loads the pre-pulled images and brings up the compose stack — no network access required at install time.

What doesn’t work offline

  • The cloud dashboard can’t reach a fully offline device at all — no remote terminal, file manager, or public URLs until it’s back online.
  • Telemetry history in the cloud dashboard has a gap for however long the device was disconnected; it resumes automatically once connectivity returns.
Once the device reconnects, everything syncs back up on its own — there’s nothing to manually reconcile.