How to Manage an Embedded Linux Device Fleet

What You’ll Learn

How to run a fleet of Pantavisor-enabled embedded Linux devices using Pantahub — an open-source, self-hostable control plane that handles authentication, state management, OTA, logs, and metadata for every device.

Prerequisites

  • One or more devices flashed with Pantavisor and online. See Build an Embedded Linux Image from Containers.

  • PVR CLI installed and authenticated:

    curl -sL https://gitlab.com/pantacor/pvr/-/raw/master/install.sh | bash
    pvr login

List Devices

pvr device ps

Shows nickname, Pantahub ID, current revision, and update status for every device in your account.

Inspect One Device

pvr device get <DEVICE_NICK>
# or by ID
pvr device get 5d555d5e80123b31faa3cff2

Returns the full device record: revision, owner, metadata, last-seen timestamp, network info.

Tag Devices with Metadata

Metadata is how you slice a fleet. Tag devices by location, hardware revision, customer, environment — anything you want to query on later:

pvr device set <DEVICE_NICK> location=warehouse-3 tier=production hw_rev=B

Metadata is queryable; you can later target “all production devices in warehouse-3 with hw_rev=B” for a staged rollout.

Stream Logs Remotely

Pantahub aggregates logs from every container on every device. No SSH, no local access:

# All recent logs for a device
pvr device logs <DEVICE_NICK>

# Filter by source
pvr device logs <DEVICE_NICK>/pantavisor.log
pvr device logs <DEVICE_NICK>/wificonnect/app.log

# Filter by severity
pvr device logs <DEVICE_NICK>@ERROR
pvr device logs <DEVICE_NICK>@WARN,ERROR

# Filter by platform
pvr device logs <DEVICE_NICK>#linux

# Combine: source + severity + platform
pvr device logs <DEVICE_NICK>/pantavisor.log@INFO#linux

# Time-bounded queries
pvr device logs --from="2026-04-01T00:00:00" --to="2026-04-30T23:59:59" <DEVICE_NICK>

# Or relative (ISO 8601 durations)
pvr device logs --from=P10D --to=P5D <DEVICE_NICK>   # last 10 to last 5 days

# Multiple devices
pvr device logs dev1,dev2/pantavisor.log,app.log@INFO,WARN

Output formats:

pvr device logs --template=short <DEVICE_NICK>     # default
pvr device logs --template=json <DEVICE_NICK>      # JSON
pvr device logs --template="{{.TimeCreated}} {{.LogText}}" <DEVICE_NICK>

OTA to a Single Device

Same as the OTA workflow — see Update Embedded Linux Firmware OTA:

pvr clone https://pvr.pantahub.com/<USER>/<DEVICE_NICK> ws
cd ws
# ...modify...
pvr commit && pvr post https://pvr.pantahub.com/<USER>/<DEVICE_NICK>

OTA to a Fleet — Channels and Rollouts

For more than a handful of devices, pvr post per device doesn’t scale. Pantahub provides:

  • Channels — named release streams (e.g. stable, beta, staging). Devices subscribe to a channel; new releases in that channel propagate to subscribers.
  • Rollouts — staged delivery with controls: number of devices to update first, percentage of error tolerance before stopping, metadata-based filters to target a subset of the fleet.

Workflow sketch (full reference at docs.pantahub.com):

  1. Create a channel and subscribe a set of devices to it.
  2. Cut a release in the channel — this is a state revision identical to what you’d pvr post directly.
  3. Configure a rollout: e.g. “deploy to 100 devices first; if error rate exceeds 5%, stop; otherwise continue to the rest of the channel.”
  4. Pantahub orchestrates the staged delivery. Failed devices auto-rollback per Pantavisor’s normal rollback rules.

Server-Side State Copy

Replicate state between devices without downloading locally:

pvr fastcopy -m "promote staging to prod" \
  https://pvr.pantahub.com/myuser/staging-rpi-001 \
  https://pvr.pantahub.com/myuser/prod-rpi-042

# Copy specific parts only
pvr fastcopy -m "copy bsp" \
  https://pvr.pantahub.com/source#bsp \
  https://pvr.pantahub.com/dest

# Copy and rename containers
pvr fastcopy -m "copy app" \
  https://pvr.pantahub.com/source#app,_config/app \
  https://pvr.pantahub.com/dest#newname,_config/newname

Useful for golden-device → fleet propagation and template-based provisioning.

Self-Hosting Pantahub

The public pvr.pantahub.com is convenient for development. For production fleets — air-gapped sites, on-premises requirements, or full data sovereignty — Pantahub is fully open source and self-hostable with no feature gating. See docs.pantahub.com for deployment.

Authentication and RBAC

pvr login [https://api.pantahub.com/auth]   # default or custom Pantahub
pvr whoami                                   # verify session

Pantahub supports per-user API tokens, organization accounts, and role-based access for shared fleets.

Common Pitfalls

  • One Pantahub user owns everything — for teams, use organizations and per-engineer tokens, not a shared account.
  • No metadata strategy — without tags you cannot target rollouts. Tag devices the moment they enter the fleet.
  • Using public Pantahub for sensitive deployments — self-host for air-gapped or regulated environments.
  • Forgetting pvr login — most fleet commands fail silently or with auth errors when not logged in.

Next Steps