Skip to main content

Device State & Diagnostics

When a robot stops in an aisle or a kiosk goes dark, the first question is why. Every current Admiral device continuously reports a structured state: what it is running, whether it has applied its latest configuration, how it is connected, how its storage and clock are doing, why it last rebooted, and what it is downloading or installing right now. Admiral Cloud turns that into a one-glance diagnosis, and you can ask an online device to run a live probe on demand.

Everything on this page works from the dashboard, the CLI, the REST API, and the MCP server (invite only).


The Diagnostics Tab​

Open a device and choose Observe > Diagnostics. The tab has five cards, top to bottom.

Device > Observe > Diagnostics: Diagnosis verdict strip and issues, Operations, Connectivity

1. Diagnosis​

Built from the last reports the device sent, so it is instant and works for offline devices too. Nothing is sent to the device.

The verdict strip shows:

TileMeaning
StatusOnline or Offline, and since when.
WorkloadThe workload state (for example running, crashing). Shows in transition with a duration when the workload has been starting or updating for a while.
HealthA score from 0 to 100. Green at 80 and above, amber from 50, red below. Only warnings and critical issues lower it.
Last rebootWhy the device last restarted (see Boot reasons).
Top issueThe most severe issue found, or None.

Below the strip, each issue has a severity (critical, warning, info), a title, a short code, when it started, and a detail line. The issues Admiral looks for:

CodeTitleWhat to do
device_offlineDevice is offlineCheck power and network on site. The detail shows when it was last seen.
workload_crashingWorkload is crash-looping / keeps failingOpen Observe > Logs for the workload output; check the image and command.
workload_errorWorkload reported an errorThe detail carries the error the device reported (image pull, mount, start).
workload_rollbackWorkload rolled backThe device returned to the previous configuration on its own. See Automatic Workload Rollback.
workload_oomWorkload was OOM-killedThe container ran out of memory. Reduce memory use or move to larger hardware.
image_signatureImage signature verification failedThe image does not satisfy the fleet's signature policy.
stuck_transitionWorkload transition is stuckA start or update has not finished after 10 minutes, often a slow or blocked image download.
unexpected_rebootLast reboot was not operator-initiatedPower loss, a watchdog, or a crash restarted the device. See the boot-reason journal.
wss_fallbackDevice is on the WebSocket fallbackThe site blocks the direct transport; the device is connected through its fallback path. Usually a firewall rule.
disk_levelFilesystem filling up / nearly fullWarning at 85 %, critical at 95 %. Clean up volumes or images.
mount_modeUnexpected mount modeA filesystem is read-only when it should be writable, or the reverse.
time_not_syncedClock not synchronisedThe device cannot reach a time source. TLS and token checks depend on the clock.
rtc_driftHardware clock driftThe battery-backed clock is far from network time; the RTC battery may be failing.
pending_trialUpdate awaiting confirmationA system update is booted on trial and not yet confirmed good.
failed_updatesUpdates rolled back on this deviceA system update failed its trial and the device returned to the previous version.
version_floor_breachBelow the minimum supported versionThe device runs a release older than your organisation's minimum.
crash_logsCrash-like log linesRecent logs contain panics, segfaults, or similar patterns.
notable_eventsNotable device eventsRecent lifecycle events worth a look.
metric_healthMetric health issueA telemetry threshold (CPU, memory, temperature) is out of range.
no_observed_stateNo observed state yetThe device has not reported state, usually an older Admiral OS release.

2. Operations​

Long-running work on the device, live: image pulls, image extraction, system update downloads and installs, container creation and start, secret delivery, slot repair, and storage checks. Each operation shows a progress bar, bytes or layers done, transfer rate, and time remaining. A system update that is downloaded and waiting for the maintenance window shows as Waiting for update window. Failed operations turn red with the error. Finished operations stay visible for about a minute.

The same bars appear on the device Overview under the workload status, and per device on the rollout detail page, so a slow download on a cellular site is visible as it happens instead of looking like a hang.

3. Connectivity​

How the device is connected to Admiral Cloud right now: transport (tcp, kcp, or wss; wss is shown amber because it means the faster paths are blocked), latency, reconnects, an instability counter, when the current connection started, and the last contact. The card says Live while the page is receiving the device's state stream.

4. Live probe​

Run probe asks the device to check itself now: network and reachability, time, identity and provisioning, wireless and Bluetooth, storage, boot and kernel, thermal, the workload, and system services. Each item is coloured by level (ok, info, warn, error), with a hint next to warnings and errors. The header shows the overall result, when the report was generated, and how long it took.

Live probe report: sections coloured by level, one [redacted] value

  • The device must be online. The probe takes up to 25 seconds.
  • One probe per device every 5 seconds, shared by everyone looking at that device. A second click inside that window says A probe ran a moment ago; wait a few seconds and try again.
  • Device is busy, try again shortly means another probe is already running on it.
  • Redaction: a few values are only visible to the Admiral support team and show as [redacted]: the HTTP proxy URL (it can contain credentials), the Wi-Fi network name, the device's mesh key, the kernel command line, and Admiral Cloud endpoint hostnames. Your own interfaces, addresses, gateway, DNS, organisation, and fleet are always visible. Redaction happens in Admiral Cloud before the report reaches your browser.

5. Device state​

The full reported state, grouped:

  • Conditions: the device's verdicts, each True, False, or Unknown, with a reason and when it last changed (see below).
  • Runtime: workload state, the configuration and version running, whether the assigned config is the one applied, failure count, last exit code and time, out-of-memory kills, the health of the workload network bridge, and the image digest.
  • Boot: active slot, next and known-good slots, boot time, bootloader, Secure Boot, any pending update trial, the last slot repair, and Failed updates with versions and reasons.
  • Boot-reason journal: the device's last reboots, newest first (see below).
  • Storage: each filesystem's usage, read-only or read-write (and what it should be), and its level.
  • Time: synced or not, offset, hardware clock drift (or No RTC), and stratum.

Conditions​

ConditionTrue meansLook at it when
OnlineAdmiral Cloud has heard from the device recently (added by Admiral Cloud, not the device).The device dropped off.
ConvergedThe device has applied the latest desired state from its document.A change or rollout has not taken effect.
WorkloadReadyThe workload container is running and not crashing.The application is down.
StorageOKEvery filesystem is below its warning level and mounted as expected.Writes are failing or the disk is full.
TimeSyncedThe clock is synchronised.TLS errors or token rejections.
UpdateTrialA system update is booted on trial (True while pending).After a system update.
DegradedLinkThe device is on its fallback transport or its connection is unstable.Slow or flapping connections.
DiagnosticsModeThe device is in diagnostics mode (support use; the workload is stopped).The workload is unexpectedly stopped.
LocalOverrideSettings were changed on the device and override the assigned ones. See Local Overrides.The device is not using the network you assigned.

Boot Reasons​

Each device keeps a journal of why it rebooted and ships it to Admiral Cloud when it reconnects, so the reason survives the reboot itself:

KindCause
remote_reboot, remote_shutdownSomeone rebooted or shut it down from Admiral Cloud.
updateThe final step of a system update.
restart_initThe Admiral manager was restarted.
consoleRebooted from the on-device console or power key.
factory_resetWiped or unpaired.
watchdog_no_backendNo contact with Admiral Cloud for an hour; the connectivity watchdog rebooted it.
deadmanNo contact for three days; the long-term safety reboot.
emergency, kernel_fatal, agent_fatalThe platform detected a fatal condition and rebooted to recover.
rollbackThe bootloader returned to the previous system slot after a failed update.
uncleanNothing was recorded: power loss or a kernel panic.

Other Places State Shows Up​

  • Overview: the workload status card shows live operations; the performance card lists health issues and warnings from telemetry.
  • Observe > Activity: filter the event list by event and by source.
  • Header banners: the local-override banner and the workload transition banner (Updating v6 → v7: Pulling image...).

Device > Observe > Activity with event and source filters


From the CLI​

admrl diagnose device amr-dock-07 # verdict and issues
admrl state device amr-dock-07 # last reported state
admrl state device amr-dock-07 --live # ask the device now
admrl probe device amr-dock-07 # live probe, all sections
admrl probe device amr-dock-07 --section network --section time
admrl watch device amr-dock-07 # stream condition changes and progress

admrl watch prints one line per change, for example a condition flipping False -> True or an operation's progress (image_pull 41% 12 MB/s eta 20s layer 3/5). Press Ctrl-C to stop.

API​

Method and pathPurpose
GET /v1/devices/{id}/stateLast reported state (conditions, workload, boot, transport, time, storage, progress, boot reasons).
GET /v1/devices/{id}/state?live=1Ask the device now. Limited to one call per 5 seconds per device (429 rate_limited with Retry-After).
GET /v1/devices/{id}/state/streamServer-sent events: every state change and progress update. Keepalive every 25 seconds; the stream closes after 30 minutes and clients reconnect.
GET /v1/devices/{id}/diagnoseVerdict, issues, last reboot, and signals. Stored data only.
POST /v1/devices/{id}/diagnostics/probeRun the live probe. One per 5 seconds per device.

Errors from calls that reach the device are consistent everywhere: 503 device_offline, 504 device_timeout, 502 device_error, 409 device_busy, 429 rate_limited.

Volumes, images, services, and network status reads now answer from the device's last reply (with a reportedAt time) when it is recent, so pages load even when the device is slow or offline. Add ?live=1 to force a fresh round trip.