Local AI Models: Is a Device Ready?¶
Last verified against code and its unit tests on 2026-10-16. Nothing on this page has been run on an installed endpoint yet, and nothing on a Windows host. Local detection-model packs on desktop endpoints remain PoC/demo on the capability status page.
When a CyberArmor.AI tenant opts in, each endpoint downloads a signed, encrypted model pack and the local engine runs the detection models on the device. This page explains how a person at the device, and support, can tell when those models are ready, and what every other answer means.
What "ready" means¶
An endpoint is ready only when the local engine itself, asked just now, says that:
- it re-verified the signed model pack (signature, digest, rollback floor, and the device-bound key that decrypts it), and
- every model the tenant selected is loaded. The PHI model (
ner_phi) is the one exception: the engine loads it the first time a redaction needs it, by design, and it is shown as "on demand".
"Installed" is not "ready". The agent can finish downloading and verifying a pack before the engine has loaded anything, so the download finishing is not reported as ready.
| State | What it means | What to do |
|---|---|---|
ready |
verified pack, selected models loaded | nothing |
downloading |
the agent is fetching the pack (bytes and percentage shown) | wait |
verifying |
every file is being checked against the signed pack, or the engine is decrypting it | wait a minute |
loading |
verified; some models are not loaded yet | wait a minute; on agent 1.0.12 the first AI request loads them |
absent |
no pack is installed yet | see "When does a device download?" below |
not_entitled |
the organisation has not opted in, or has no pack published | an administrator enables local models for the tenant |
unavailable |
this device cannot hold a pack (for example, no local engine installed) | check the device's platform and agent version |
failed |
a download, a verification or a model load failed; the reason is shown | send the check output to support |
unknown |
nothing could be read: the local engine did not answer, or the status file is out of date | check that the agent is running |
What the user sees¶
From agent 1.0.13, the macOS menu bar and the Windows tray show one line:
Local AI models: ready (4 of 4 loaded, 1 on demand)
Local AI models: downloading 44% (1.4 GB of 3.1 GB)
Local AI models: failed (the download failed (HTTP 503))
When the models first become ready, each user is told once:
"CyberArmor.AI local protection models are ready — checks now run on this
device". A new pack version announces again. If the models cannot be made
ready, the user is told once per pack and reason. Nobody is notified while the
answer is unknown.
On Windows the notification is a balloon from the notification area. It has not yet been seen on a Windows host.
Checking a device (support)¶
The check scripts are read-only and need no administrator rights on macOS or
Linux. They exit 0 when ready, 1 when not ready, and 2 when nothing could
be read, so a remote-management tool can act on the result.
# macOS / Linux
/usr/local/cyberarmor/scripts/check_local_models.sh
/usr/local/cyberarmor/scripts/check_local_models.sh --watch # re-check every 15 s until ready
/usr/local/cyberarmor/scripts/check_local_models.sh --json
# Windows (the script is unsigned, so allow it for this one process)
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\Program Files\CyberArmor\scripts\Check-LocalModels.ps1"
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\Program Files\CyberArmor\scripts\Check-LocalModels.ps1" -Watch
The report shows the pack and tier, the state, bytes downloaded against bytes
expected, whether the pack was verified, which models are loaded, and how
many AI requests over the last 60 minutes were decided on the device
(with the models, or with rules only) versus by the CyberArmor.AI service
(--minutes changes the window).
When administrator rights help (Windows). The script confirms that the program answering on the local engine's port is the real engine, which runs as SYSTEM. Windows may refuse that check to a standard user. The script then uses the answer the agent published (the agent reads the engine as SYSTEM) and says so. Run it as administrator to read the engine directly.
Older agents. The scripts run from a copy of the repository against an agent 1.0.12 endpoint too. That version does not publish its download progress, so the download line says "not reported", and its menus have no models line.
When does a device download?¶
Without a push, an endpoint checks for a new pack once a day, inside the tenant's window (by default 02:00–05:00 in the device's local time, at a per-device offset so a fleet does not download at once), or after 36 hours without a check. Push update now in the console starts a download within about a minute. A failed download is retried at the next window or the next push. A device that already holds most of a pack downloads only the files that changed.
Downloads are served by the CyberArmor.AI control plane, so pushing a new pack to many devices at once puts all of those downloads on it at the same time. Prefer the nightly window for a large fleet.