Skip to content

System Tools

System Tools provide a suite of remote administration capabilities that let technicians inspect and manage managed devices directly from the Breeze dashboard. Every operation is dispatched to the Breeze agent running on the target device via the command queue — the API sends a typed command, the agent executes it locally, and the result is returned as structured JSON. All mutating actions (killing processes, starting/stopping services, editing the registry, uploading files, running/enabling/disabling scheduled tasks) are recorded in the audit log.


File Browser

The File Browser lets you list directory contents, download files from a device, and upload files to a device. It works on all platforms (Windows, macOS, Linux).

Listing a directory

Send a GET request with the absolute path you want to browse. The agent returns an array of entries, each describing a file or directory at that path.

Terminal window
GET /api/v1/system-tools/devices/:deviceId/files?path=/var/log

Each entry in the response includes:

FieldTypeDescription
namestringFile or directory name
pathstringFull path on the device
typestring"file" or "directory"
sizenumberSize in bytes (files only)
modifiedstringISO 8601 last-modified timestamp
permissionsstringPOSIX permission string (e.g. rwxr-xr-x)

Downloading a file

Terminal window
GET /api/v1/system-tools/devices/:deviceId/files/download?path=/tmp/example.txt

The agent reads the file, base64-encodes it, and returns it to the API. The API decodes it and streams the raw bytes back to the caller with Content-Disposition: attachment and Content-Type: application/octet-stream headers. The filename is derived from the remote path.

Uploading a file

Terminal window
POST /api/v1/system-tools/devices/:deviceId/files/upload
Content-Type: application/json
{
"path": "/tmp/config.yaml",
"content": "server:\n port: 8080\n",
"encoding": "text"
}
Body FieldTypeRequiredDescription
pathstringYesAbsolute destination path on the device
contentstringYesFile content (plain text or base64)
encodingstringNo"text" (default) or "base64"

File uploads are audit-logged with the destination path, encoding, and size.


Process Manager

The Process Manager lists running processes, retrieves details for a specific process by PID, and can terminate processes. It works on all platforms using the gopsutil library on the agent side.

Listing processes

Terminal window
GET /api/v1/system-tools/devices/:deviceId/processes?page=1&limit=50&search=node
Query ParameterTypeDefaultDescription
pagenumber1Page number
limitnumber50Results per page (max 500)
searchstringFilter by name, user, command line, or PID

The agent sorts results by CPU usage (descending) by default and supports sorting by pid, name, user, memory, or cpu.

Each process entry includes:

FieldTypeDescription
pidnumberProcess ID
namestringProcess name
cpuPercentnumberCurrent CPU usage percentage
memoryMbnumberResident memory in MB
userstringOwning user
statusstringrunning, sleeping, stopped, or zombie
commandLinestringFull command line
parentPidnumberParent process ID
threadsnumberThread count

Getting process details

Terminal window
GET /api/v1/system-tools/devices/:deviceId/processes/2048

Returns the same fields as the list, but for a single process identified by PID.

Killing a process

Terminal window
POST /api/v1/system-tools/devices/:deviceId/processes/3456/kill?force=true
Query ParameterTypeDefaultDescription
forcebooleanfalseWhen true, sends SIGKILL instead of SIGTERM (or the Windows equivalent)

This action is audit-logged with the PID, force flag, and result.


Service Manager

The Service Manager lists, inspects, starts, stops, and restarts system services. It has platform-specific implementations:

  • Windows: Uses the Windows Service Control Manager API
  • Linux: Uses systemctl (systemd)
  • macOS: Uses launchctl (launchd)

Listing services

Terminal window
GET /api/v1/system-tools/devices/:deviceId/services?page=1&limit=50&search=WinRM&status=running
Query ParameterTypeDefaultDescription
pagenumber1Page number
limitnumber50Results per page (max 500)
searchstringFilter by service name
statusstringFilter by status (e.g. running, stopped)

The API normalizes service data from each platform into a consistent shape:

FieldTypeDescription
namestringService identifier (e.g. WinRM, sshd)
displayNamestringHuman-readable name
statusstringrunning, stopped, paused, starting, or stopping
startTypestringauto, manual, disabled, or auto_delayed
accountstringService account (e.g. LocalSystem)
descriptionstringService description text
pathstringExecutable path
dependenciesstring[]Names of services this service depends on

Getting service details

Terminal window
GET /api/v1/system-tools/devices/:deviceId/services/WinRM

Starting, stopping, and restarting a service

Terminal window
POST /api/v1/system-tools/devices/:deviceId/services/WinRM/start
POST /api/v1/system-tools/devices/:deviceId/services/WinRM/stop
POST /api/v1/system-tools/devices/:deviceId/services/WinRM/restart

All three actions are audit-logged with the service name and result.


Registry Editor

The Registry Editor provides full read and write access to the Windows registry. You can browse keys, read/write/delete values, and create/delete keys.

Supported hives

The following registry hives are accepted by all registry endpoints:

  • HKEY_LOCAL_MACHINE
  • HKEY_CURRENT_USER
  • HKEY_CLASSES_ROOT
  • HKEY_USERS
  • HKEY_CURRENT_CONFIG

Listing subkeys

Terminal window
GET /api/v1/system-tools/devices/:deviceId/registry/keys?hive=HKEY_LOCAL_MACHINE&path=SOFTWARE

Each key entry includes:

FieldTypeDescription
namestringKey name
pathstringFull registry path
subKeyCountnumberNumber of child keys
valueCountnumberNumber of values in this key
lastModifiedstringLast modification timestamp

Listing values at a key

Terminal window
GET /api/v1/system-tools/devices/:deviceId/registry/values?hive=HKEY_LOCAL_MACHINE&path=SOFTWARE

Each value entry includes:

FieldTypeDescription
namestringValue name ((Default) for the default value)
typestringOne of the supported types (see below)
datastring, number, string[], number[]Parsed value data

Supported value types

TypeAPI data format
REG_SZstring
REG_EXPAND_SZstring
REG_DWORDnumber
REG_QWORDnumber
REG_MULTI_SZstring[]
REG_BINARYnumber[] (byte values 0-255)

The API normalizes raw agent responses automatically. For example, REG_DWORD values returned as strings are parsed to numbers, and REG_BINARY hex strings (e.g. "00 01 0A FF") are converted to byte arrays (e.g. [0, 1, 10, 255]).

Reading a specific value

Terminal window
GET /api/v1/system-tools/devices/:deviceId/registry/value?hive=HKEY_LOCAL_MACHINE&path=SOFTWARE&name=ProductName

The response includes a fullPath field combining the hive, path, and value name.

Setting a value

Terminal window
PUT /api/v1/system-tools/devices/:deviceId/registry/value
Content-Type: application/json
{
"hive": "HKEY_LOCAL_MACHINE",
"path": "SOFTWARE\\Breeze",
"name": "Version",
"type": "REG_SZ",
"data": "1.0.0"
}

Deleting a value

Terminal window
DELETE /api/v1/system-tools/devices/:deviceId/registry/value?hive=HKEY_LOCAL_MACHINE&path=SOFTWARE&name=TestValue

Creating a key

Terminal window
POST /api/v1/system-tools/devices/:deviceId/registry/key
Content-Type: application/json
{
"hive": "HKEY_LOCAL_MACHINE",
"path": "SOFTWARE\\Breeze"
}

Deleting a key

Terminal window
DELETE /api/v1/system-tools/devices/:deviceId/registry/key?hive=HKEY_LOCAL_MACHINE&path=SOFTWARE\\Breeze

Event Logs

The Event Logs tool queries the Windows Event Log system. You can list available logs, query events with filters, and retrieve individual event details.

Listing available logs

Terminal window
GET /api/v1/system-tools/devices/:deviceId/eventlogs

Each log entry includes:

FieldTypeDescription
namestringLog name (e.g. System)
displayNamestringHuman-readable name
recordCountnumberTotal number of records
maxSizenumberMaximum log size in bytes
retentionDaysnumberRetention policy in days
lastWriteTimestringISO 8601 timestamp of last write

Getting log info

Terminal window
GET /api/v1/system-tools/devices/:deviceId/eventlogs/System

Returns the metadata for a single log by name.

Querying events

Terminal window
GET /api/v1/system-tools/devices/:deviceId/eventlogs/System/events?level=error&source=Service+Control+Manager&page=1&limit=50
Query ParameterTypeDefaultDescription
pagenumber1Page number
limitnumber50Results per page (max 500)
levelstringinformation, warning, error, critical, or verbose
sourcestringFilter by event source
eventIdnumberFilter by Windows event ID
startTimestringISO 8601 start time
endTimestringISO 8601 end time

Each event entry includes:

FieldTypeDescription
recordIdnumberUnique record identifier
timeCreatedstringISO 8601 timestamp
levelstringNormalized: information, warning, error, critical, or verbose
sourcestringEvent source (e.g. Kernel-General)
eventIdnumberWindows event ID
messagestringEvent message text
categorystringEvent category
userstring/nullSID of the user (e.g. S-1-5-18)
computerstringComputer name

Getting a specific event

Terminal window
GET /api/v1/system-tools/devices/:deviceId/eventlogs/System/events/15234

Returns full details for a single event by record ID, including the optional rawXml field with the original Windows event XML.


Scheduled Tasks

The Scheduled Tasks tool lets you view, run, enable, and disable Windows Task Scheduler tasks, and inspect their execution history.

Listing tasks

Terminal window
GET /api/v1/system-tools/devices/:deviceId/tasks?page=1&limit=50&folder=\Microsoft\Windows&search=Defender
Query ParameterTypeDefaultDescription
pagenumber1Page number
limitnumber50Results per page (max 500)
folderstring\Task scheduler folder to browse
searchstringFilter by task name

Each task entry includes:

FieldTypeDescription
pathstringFull task path (e.g. \Microsoft\Windows\...)
namestringTask name
statestringready, running, disabled, queued, or unknown
lastRunTimestring/nullISO 8601 timestamp of last execution
lastRunResultnumber/nullExit code from last run
nextRunTimestring/nullISO 8601 timestamp of next scheduled execution
authorstringTask author
descriptionstringTask description
triggersarrayTrigger definitions with type, enabled, and optional schedule
actionsarrayAction definitions with type, optional path and arguments

Getting task details

The task path must be URL-encoded in the path parameter:

Terminal window
GET /api/v1/system-tools/devices/:deviceId/tasks/%5CMicrosoft%5CWindows%5CWindows%20Defender%5CWindows%20Defender%20Scheduled%20Scan

Running a task

Terminal window
POST /api/v1/system-tools/devices/:deviceId/tasks/:encodedPath/run

Triggers an immediate execution of the task. Audit-logged.

Enabling a task

Terminal window
POST /api/v1/system-tools/devices/:deviceId/tasks/:encodedPath/enable

Enables a previously disabled task. Audit-logged.

Disabling a task

Terminal window
POST /api/v1/system-tools/devices/:deviceId/tasks/:encodedPath/disable

Disables a task so it no longer runs on schedule. Audit-logged.

Viewing task history

Terminal window
GET /api/v1/system-tools/devices/:deviceId/tasks/:encodedPath/history?limit=10
Query ParameterTypeDefaultDescription
limitnumber50Number of history entries (max 200)

Each history entry includes:

FieldTypeDescription
idstringHistory entry ID
eventIdnumberTask Scheduler event ID
timestampstringISO 8601 timestamp
levelstringinfo, warning, or error
messagestringDescriptive message
resultCodenumberExit code (present when available)

API Reference

All endpoints are prefixed with /api/v1/system-tools/devices/:deviceId. Replace :deviceId with a valid device UUID.

File Browser

MethodPathDescriptionPermission
GET/files?path=...List directorydevices.read
GET/files/download?path=...Download filedevices.read
POST/files/uploadUpload filedevices.execute

Process Manager

MethodPathDescriptionPermission
GET/processesList processesdevices.read
GET/processes/:pidGet process detailsdevices.read
POST/processes/:pid/killKill processdevices.execute

Service Manager

MethodPathDescriptionPermission
GET/servicesList servicesdevices.read
GET/services/:nameGet service detailsdevices.read
POST/services/:name/startStart servicedevices.execute
POST/services/:name/stopStop servicedevices.execute
POST/services/:name/restartRestart servicedevices.execute

Registry Editor (Windows only)

MethodPathDescriptionPermission
GET/registry/keys?hive=...&path=...List subkeysdevices.read
GET/registry/values?hive=...&path=...List valuesdevices.read
GET/registry/value?hive=...&path=...&name=...Get valuedevices.read
PUT/registry/valueSet valuedevices.execute
DELETE/registry/value?hive=...&path=...&name=...Delete valuedevices.execute
POST/registry/keyCreate keydevices.execute
DELETE/registry/key?hive=...&path=...Delete keydevices.execute

Event Logs (Windows only)

MethodPathDescriptionPermission
GET/eventlogsList logsdevices.read
GET/eventlogs/:nameGet log infodevices.read
GET/eventlogs/:name/eventsQuery eventsdevices.read
GET/eventlogs/:name/events/:recordIdGet event detaildevices.read

Scheduled Tasks (Windows only)

MethodPathDescriptionPermission
GET/tasksList tasksdevices.read
GET/tasks/:pathGet task detailsdevices.read
GET/tasks/:path/historyGet task historydevices.read
POST/tasks/:path/runRun taskdevices.execute
POST/tasks/:path/enableEnable taskdevices.execute
POST/tasks/:path/disableDisable taskdevices.execute

Troubleshooting

Device not found or access denied (404)

Every System Tools request verifies that the device exists and that the authenticated user’s organization has access to it. If you receive a 404, confirm that:

  • The device UUID is correct.
  • Your user account has access to the organization that owns the device.
  • The device has been enrolled (not deleted).

Agent failed / device may be offline (502)

System Tools commands are dispatched to the agent via the command queue with a 30-second timeout (15 seconds for process kill). A 502 or 500 response with a message like “Failed to get processes” or “Agent failed to list files” indicates:

  • The device agent is offline or unreachable.
  • The agent did not respond within the timeout window.
  • The agent encountered an internal error executing the command.

Check the device’s online status on its detail page before retrying.

”Failed to parse agent response” (502)

This means the agent returned a response that the API could not parse as valid JSON. This can happen if:

  • The agent version is outdated and returns a different payload format.
  • The command produced unexpected output (e.g., a system error message instead of JSON).

Update the agent to the latest version and retry.

”Registry is only supported on Windows” / “Event logs are only supported on Windows” / “Scheduled tasks are only supported on Windows”

These tools require a Windows device. The agent returns a platform-not-supported error on macOS and Linux. Process management, service management, and the file browser work on all platforms.

Permission denied on service start/stop

On Linux, the agent must be running with sufficient privileges (typically root) to manage systemd services. On macOS, managing system-level launchd services similarly requires elevated privileges. On Windows, the agent service account must have permission to control the target service.

Registry write operations failing

Ensure the agent is running with sufficient privileges to write to the target registry hive. Writing to HKEY_LOCAL_MACHINE typically requires the agent to run as SYSTEM or an administrator. The path must not exceed 1024 characters and the value name must not exceed 256 characters (enforced by input validation).