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 psShows 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 5d555d5e80123b31faa3cff2Returns 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=BMetadata 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,WARNOutput 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):
- Create a channel and subscribe a set of devices to it.
- Cut a release in the channel — this is a state revision identical to what you’d
pvr postdirectly. - Configure a rollout: e.g. “deploy to 100 devices first; if error rate exceeds 5%, stop; otherwise continue to the rest of the channel.”
- 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/newnameUseful 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 sessionPantahub 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
- Update Embedded Linux Firmware OTA — Per-device update flow
- Rollback Embedded Linux Firmware — Manual + automatic rollback
- Pantavisor vs Balena — How Pantahub compares to balenaCloud
- docs.pantahub.com — Channels, rollouts, self-hosting, API reference