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. You access System Tools from a device’s detail page by opening the Remote Tools panel, which organizes all tools into a tabbed interface.

Every operation is dispatched to the Breeze agent running on the target device via the command queue. All mutating actions (killing processes, starting/stopping services, editing the registry, uploading files, running/enabling/disabling scheduled tasks) are recorded in the audit log.


  1. Navigate to the device. Open the device detail page from the Devices list or by clicking a device name anywhere in the dashboard.

  2. Open Remote Tools. Click the Remote Tools button on the device page. The Remote Tools panel opens showing the device name, OS type, and a row of tool tabs.

  3. Select a tool tab. Click any tab to switch between tools:

    • Processes — available on all platforms
    • Services — Windows only
    • Registry — Windows only
    • Event Log — Windows only
    • Scheduled Tasks — Windows only
    • Terminal — available on all platforms
    • File Browser — available on all platforms

    On macOS and Linux devices, Windows-only tabs are automatically hidden.


The File Browser tab lets you navigate the device’s filesystem, download files, and upload files. It works on all platforms (Windows, macOS, Linux).

  • Navigate directories. The browser opens to a default path based on the OS. Click folder names to navigate into them. Use the breadcrumb path at the top to jump back to parent directories.
  • View file details. Each entry shows the file or directory name, size, last modified date, and permissions.
  • Download files. Select a file and click the download button. The file is transferred from the device and downloaded to your browser.
  • Upload files. Click the upload button to send a file to the device at the current path. You can upload text or binary files.

For scripted file operations, the File Browser API is documented below.

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)
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.

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.


The Processes tab displays all running processes on the device, sorted by CPU usage by default. Use this tool to identify resource-heavy processes and terminate misbehaving ones.

  • View processes. The process list shows PID, name, CPU usage, memory usage, owning user, and status for each process. Click a process row to view additional details including command line, thread count, and parent PID.
  • Search and filter. Use the search bar to filter by process name, user, command line, or PID.
  • Kill a process. Click the kill button next to a process to terminate it. A confirmation is required. Force-kill sends SIGKILL (or the Windows equivalent) instead of a graceful SIGTERM.
  • Refresh. Click the refresh button to reload the process list from the device.

The Process Manager works on all platforms (Windows, macOS, Linux).

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
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.

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.


The Services tab lists all system services with their current status. Use it to start, stop, or restart services without opening a remote session.

  • View services. Each service shows its name, display name, status (Running, Stopped, Paused, Starting, Stopping), startup type (Automatic, Manual, Disabled), and service account.
  • Search and filter. Search by service name and filter by status (e.g., show only running services or only stopped services).
  • Start, stop, or restart. Click the corresponding action button next to a service. The action is sent to the agent and the service list refreshes automatically.
  • Agent service detection. If you restart the Breeze agent service itself, the UI displays a “Agent Restarting” banner and automatically polls until the agent reconnects.

The Service Manager has platform-specific implementations:

  • Windows: Uses the Windows Service Control Manager API
  • Linux: Uses systemctl (systemd)
  • macOS: Uses launchctl (launchd)
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
Terminal window
GET /api/v1/system-tools/devices/:deviceId/services/WinRM

Starting, stopping, and restarting a service

Section titled “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.


The Registry tab provides a tree-based browser for the Windows registry. Use it to inspect configuration settings, modify values, and create or delete keys — all without opening a remote desktop session.

  • Navigate hives and keys. The left panel shows a tree structure starting from the supported hives (HKEY_LOCAL_MACHINE, HKEY_CURRENT_USER, HKEY_CLASSES_ROOT, HKEY_USERS, HKEY_CURRENT_CONFIG). Click a key to expand its subkeys. The right panel displays the values at the selected key.
  • View values. Each value shows its name, type (REG_SZ, REG_DWORD, REG_QWORD, REG_MULTI_SZ, REG_EXPAND_SZ, REG_BINARY), and data.
  • Edit values. Click a value to open the edit dialog. Modify the data and save.
  • Create and delete. Create new keys or values using the corresponding buttons. Delete keys or values with the delete action.

The Registry Editor provides full read and write access to the Windows registry via API.

The following registry hives are accepted by all registry endpoints:

  • HKEY_LOCAL_MACHINE
  • HKEY_CURRENT_USER
  • HKEY_CLASSES_ROOT
  • HKEY_USERS
  • HKEY_CURRENT_CONFIG
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
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
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]).

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.

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"
}
Terminal window
DELETE /api/v1/system-tools/devices/:deviceId/registry/value?hive=HKEY_LOCAL_MACHINE&path=SOFTWARE&name=TestValue
Terminal window
POST /api/v1/system-tools/devices/:deviceId/registry/key
Content-Type: application/json
{
"hive": "HKEY_LOCAL_MACHINE",
"path": "SOFTWARE\\Breeze"
}
Terminal window
DELETE /api/v1/system-tools/devices/:deviceId/registry/key?hive=HKEY_LOCAL_MACHINE&path=SOFTWARE\\Breeze

The Event Log tab lets you query the Windows Event Log system directly from the dashboard. Use it to investigate errors, audit security events, and troubleshoot service failures.

  • Select a log. The left panel lists all available event logs (System, Application, Security, etc.) with their record count and last write time. Click a log to select it.
  • Filter events. Use the filter controls to narrow results by severity level (Information, Warning, Error, Critical), source, event ID, and date range.
  • Browse results. Events are displayed in a table with timestamp, level, source, event ID, and message. Severity levels are color-coded for quick scanning.
  • View event details. Click an event to see its full details including the raw XML data.

The Event Logs API queries the Windows Event Log system programmatically.

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
Terminal window
GET /api/v1/system-tools/devices/:deviceId/eventlogs/System

Returns the metadata for a single log by name.

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
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.


The Scheduled Tasks tab provides a view of the Windows Task Scheduler. Use it to inspect scheduled jobs, trigger them on demand, and enable or disable tasks.

  • Browse tasks. Tasks are displayed in a searchable, paginated list with name, status (Ready, Running, Disabled, Queued), last run time, last result, and next run time. Browse by folder to navigate the Task Scheduler folder hierarchy.
  • View task details. Click a task to open its detail panel showing triggers (daily, weekly, boot, logon, etc.), actions (executables, arguments), conditions, and settings.
  • Run a task. Click the Run button to trigger immediate execution.
  • Enable or disable. Toggle a task between enabled and disabled states.
  • View task history. Open the history panel for a task to see past executions with timestamps, event IDs, status levels (info, warning, error), and result codes.

The Scheduled Tasks API provides programmatic access to Windows Task Scheduler.

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

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
Terminal window
POST /api/v1/system-tools/devices/:deviceId/tasks/:encodedPath/run

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

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

Enables a previously disabled task. Audit-logged.

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

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

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)

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

MethodPathDescriptionPermission
GET/files?path=...List directorydevices.read
GET/files/download?path=...Download filedevices.read
POST/files/uploadUpload filedevices.execute
MethodPathDescriptionPermission
GET/processesList processesdevices.read
GET/processes/:pidGet process detailsdevices.read
POST/processes/:pid/killKill processdevices.execute
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
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
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
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

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)

Section titled “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)

Section titled “”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”

Section titled “”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.

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.

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).