Documentation
Agent overview
Understand what the DeviceQuest host agent does, how it connects to the agent gateway, what it collects and which commands it runs.
Overview
The DeviceQuest host agent (devicequest-agent) is a single binary that runs as a service on Linux and Windows hosts. It inventories the host it runs on, runs scans on behalf of the control plane from inside your network, and sends the results to DeviceQuest through the agent gateway. The agent always opens the connection itself, outbound, so hosts behind NAT or a firewall need no inbound rule.
You enroll agents from Admin → Enroll Agent (the Host Agent Setup page) and manage enrolled agents from Admin → Host Agents. Both pages need the admin:manage permission.
Platforms
| Platform | Build | Service |
|---|---|---|
| Linux x86-64 | linux-amd64 | systemd unit devicequest-agent |
| Linux ARM64 | linux-arm64 | systemd unit devicequest-agent |
| Windows x64 | windows-amd64 | Windows service DeviceQuestAgent |
The Linux service needs systemd. The Windows service runs as LocalSystem and starts automatically with Windows.
How the agent connects
The agent connects to the agent gateway, a gRPC service in the DeviceQuest control plane.
- You issue a one-time bootstrap credential on the Enroll Agent page. It is valid for 5 minutes to 24 hours (60 minutes by default).
- The install command passes the credential to the agent. On its first start the agent enrolls with the gateway and receives its own agent identity and token.
- The agent saves its enrollment in
enrollment.jsonin its data directory and uses it from then on. The bootstrap credential is no longer needed. - The agent keeps one long-lived connection open for commands, sends a heartbeat every 30 seconds, and pushes scan results and telemetry over the same gateway.
The gateway is reached in one of two ways:
| Connection | Address the agent dials | Authentication | Typical deployment |
|---|---|---|---|
| Through the ingress | <your DeviceQuest host>:443 | TLS to the ingress, then a per-agent token | Kubernetes. See Kubernetes agent gateway. |
| Direct | <control plane host>:50051 | The gateway’s TLS settings | Docker Compose and single-host installs |
Deployment modes
The agent works with control planes running in hybrid or saas mode, the two modes that run the agent gateway. You pass the mode to the agent with -mode:
- The one-command install served by your control plane uses
-mode saasand TLS. - The install script shown on the Enroll Agent page uses
-mode hybrid, or-mode saaswhen the control plane runs in SaaS mode. If your control plane reports another mode (for exampleonpremwith the agent gateway switched on), the page still useshybridand explains why under Why not …?
What the agent collects
The agent runs a local inventory scan as soon as it starts and then every 24 hours (change this with -auto-local-scan). The results appear on the host’s asset in DeviceQuest, matched to an existing asset by its identifiers or created as a new one.
Linux
| Area | What is collected |
|---|---|
| Identity | Host name, OS name and version (from /etc/os-release), kernel version, architecture, CPU count |
| Network | Every network interface with its IP addresses and MAC address |
| Software | Installed packages from dpkg or rpm, with versions |
| Services | systemd services with their state and startup setting |
| Users | Local user accounts with UID, home directory and shell |
| Open ports | Listening TCP and UDP ports |
| Disks | File systems with size and free space |
Windows
| Area | What is collected |
|---|---|
| Identity | Host name, OS name, version and build, architecture, CPU model, cores and count |
| Hardware | BIOS serial number, manufacturer, model, domain membership |
| Network | Network adapters with IP addresses, MAC addresses and DNS servers |
| Software | Installed applications with versions, and installed hotfixes |
| Services | Windows services with their state and startup type |
| Users | Local user accounts |
| Open ports | Listening TCP ports |
| Disks | Drives with file system, size and free space |
GPU telemetry
When GPU telemetry is switched on (-gpu-telemetry-interval, or Enable GPU telemetry in Remote SSH deploy), the agent reads every GPU on the host at the interval you set and reports, per GPU:
- vendor, model, UUID, PCI bus ID, architecture, compute capability or GFX target, and driver version;
- memory total and used, GPU and memory utilisation;
- power draw and power limit, temperature, SM and memory clocks, and fan speed.
| Platform | GPUs | Tool the agent reads |
|---|---|---|
| Linux | NVIDIA | nvidia-smi |
| Linux | AMD | rocm-smi |
| Windows | NVIDIA | nvidia-smi |
The Linux service runs with the video and render groups, so it can read GPU devices without root. Hosts without a GPU, or without the vendor tool, simply report no GPU readings.
Agent health
Every heartbeat also reports the agent’s version, CPU and memory use, disk usage, and how many scans it has completed and failed. Admin → Host Agents shows the version and the time of the last heartbeat.
Offline buffer
If the agent cannot reach the gateway, it keeps scan observations in a local SQLite buffer, agent_buffer.db in its data directory, and sends them when the connection returns. The buffer holds up to 100,000 observations or 50 MB. When it is full, the oldest observations are dropped first.
Commands
Administrators send commands to an agent from Admin → Host Agents. Commands are queued and delivered over the agent’s open connection, or when an offline agent next checks in.
| Command | Shown as | What the agent does |
|---|---|---|
start_scan | Queue scan (history: Scan) | Runs a scan of the given type against a target and pushes the results. Types: local, ssh, snmp, wmi (Windows agents only), vmware and sweep. Scan schedules that use the agent as their bridge agent send the same command. |
pull_config | Pull config | Fetches the agent’s current configuration from the gateway. |
update | Update agent | Downloads the requested version, or the active release when no version is given, verifies its signature and installs it. See Updates, revoke and uninstall. |
stop_scan | — | Cancels a running scan. DeviceQuest sends it when a scan job is cancelled. |
Each command moves through these statuses in the command history:
| Status | Meaning | Next possible status |
|---|---|---|
| pending | Queued, waiting for the agent to collect it | dispatched, cancelled, timeout |
| dispatched | Sent to the agent | in progress, completed, error, timeout |
| in progress | The agent is working on it | completed, error, timeout |
| completed | The agent finished it successfully | — |
| error | The agent reported a failure. Click Show details to read it. | — |
| timeout | The agent did not finish in time | — |
| cancelled | The command was cancelled before it ran | — |
Agent statuses
| Status | Meaning |
|---|---|
| online | The agent sent a heartbeat in the last 2 minutes. |
| offline | No heartbeat for more than 2 minutes. Queued commands wait until it checks in again. |
| revoked | An administrator revoked the agent. The gateway refuses it. |
Files on the host
| Item | Linux | Windows (one-command install) |
|---|---|---|
| Binary | /usr/local/bin/devicequest-agent | C:\Program Files\DeviceQuest Agent\devicequest-agent.exe |
| Data directory | /var/lib/devicequest-agent | C:\ProgramData\devicequest-agent |
| Enrollment state | <data dir>/enrollment.json | <data dir>\enrollment.json |
| Offline buffer | <data dir>/agent_buffer.db | <data dir>\agent_buffer.db |
| Settings | /etc/devicequest-agent/agent.env (mode 0600) | Service command line |
| Service | devicequest-agent.service, user devicequest-agent | DeviceQuestAgent, LocalSystem |
The data directory holds the agent’s token. On Linux it belongs to the devicequest-agent user. On Windows only SYSTEM and the Administrators group can open it.
Related pages
- Install on Linux
- Install on Windows
- Remote SSH deploy
- CLI reference
- Updates, revoke and uninstall
- Administration → Enroll agent
- Administration → Host agents