Skip to main content

Fleet

Manage your product's devices in the field: see every unit, the firmware each one runs, and roll out updates — from the web, the CLI, or CI.

Fleet is per-project. The project holds the firmware releases; the fleet holds the devices running them. Devices check in on their own schedule to report what they're running and pick up whatever you've published for them, so a rollout is two commands: publish a release, point devices at it.

Enabling fleet on a project

Open the project and press Fleet (or type g f from anywhere in the project), then Enable fleet. Enabling needs write access on the project's fleet/ path — see Roles.

warning

Enabling shows the project's data-plane key exactly once. You only need it if your own services accept uploads from these devices and want to verify their tokens — store it if that's you, and see Verifying device tokens.

The fleet page

The fleet page lists every device: serial, tags, hardware revision, the firmware it reports, the firmware it should be running, and when it was created. Press / to search — matching serials, tags, and notes.

The page is deliberately read-only. Provisioning and rollouts are tooling operations, done with the CLI below, and every fleet action shows up in the project's activity feed like everything else.

Provisioning a device

Create a device and get its token:

embedhub fleet mint myorg/myproject 100000000042 --hw 1.0 --tags site-pune,rack-2
warning

The device token is printed exactly once — bake it into the device during manufacturing. If it's lost, revoke the device and mint a new one.

The token is the device's only credential: it authenticates check-ins, firmware downloads, and uploads to your own services. Tags and notes are yours to organize with — set them at mint time or later:

embedhub fleet meta myorg/myproject 100000000042 --tags site-pune,rack-5
embedhub fleet meta myorg/myproject 100000000042 --notes "Ask for Ramesh at the gate."

A device that's lost, stolen, or retired stops working on its next request:

embedhub fleet revoke myorg/myproject 100000000042

Publishing firmware

A fleet release is a firmware binary already in the project's releases/ folder, promoted with a version:

embedhub push firmware.bin myorg/myproject --path releases
embedhub fleet publish myorg/myproject releases/firmware.bin --version v0.3.0 --hw 1.0

Releases are immutable: publishing the same version again with identical content does nothing, and publishing it with different content is refused — cut a new version instead. A release can be pinned to a hardware revision (--hw) or left to fit any hardware, and --min-fw marks the oldest firmware allowed to take the update.

embedhub fleet releases myorg/myproject

Rolling out

Point a device at a version:

embedhub fleet set-target myorg/myproject 100000000042 v0.3.0

The device picks it up on its next check-in, downloads the release — downloads resume where they left off if the connection drops — verifies it, and reboots into it. The rollout is complete when the device reports the new version; the fleet page shows each device's running firmware next to its target until then.

To roll out to a group, target every device carrying all of the given tags — a dry run until you confirm:

embedhub fleet set-target myorg/myproject v0.3.0 --tags site-pune,rack-2
# Would set target v0.3.0 on 12 device(s) tagged site-pune+rack-2: ...
embedhub fleet set-target myorg/myproject v0.3.0 --tags site-pune,rack-2 --yes

Revoked devices are never part of a rollout. The same --tags filter works on embedhub fleet devices to see a group before touching it.

Two properties worth knowing:

  • Setting a target before publishing the release is safe. Nothing is offered to the device until a matching release exists.
  • A lower version is a rollback, honored deliberately. Point the device back at the previous release and it downgrades the same way it upgrades.

A freshly provisioned device is never offered anything until you set its target — its first check-in adopts whatever firmware it arrived with.

Verifying device tokens from your own services

If your product uploads data to services you run, those services can verify that an upload really comes from one of your devices without keeping their own token list: they hold the project's data-plane key (shown once at enable) and ask EmbedHub whether a presented device token is valid, getting back the device's serial and project. A revoked device's uploads stop verifying too — one revocation severs everything.

Fleet CLI reference

CommandDoes
embedhub fleet status <org>/<project>Device and release counts
embedhub fleet devices <org>/<project>The device table (--json for scripts, --tags to filter)
embedhub fleet mint <org>/<project> <serial>Provision a device; prints its token once
embedhub fleet meta <org>/<project> <serial>Set tags and notes
embedhub fleet revoke <org>/<project> <serial>Revoke a device
embedhub fleet publish <org>/<project> <path>Promote a binary in releases/ to a release
embedhub fleet releases <org>/<project>List published releases
embedhub fleet set-target <org>/<project> <serial> <version>Roll a device to a version
embedhub fleet set-target <org>/<project> <version> --tags <a,b> [--yes]Roll out to every device carrying all the tags