The Breeze agent supports 120+ commands organized into 30+ categories. Commands are sent from the API to agents over WebSocket, each with an action string and an optional JSON payload.
Dashboard → POST /devices/:id/commands
→ WebSocket message sent to agent
→ Agent sends result via WebSocket
→ Result stored in database
→ Dashboard receives real-time update
Commands with a term- prefix bypass the database queue and are sent directly over WebSocket for real-time terminal sessions.
Every command returns a standard result envelope:
Field Type Description statusstringcompleted, failed, or timeoutexitCodeintExit code (0 for success) stdoutstringJSON-encoded result data or script output stderrstringError output (scripts only) errorstringError message when status is failed durationMsint64Execution time in milliseconds
Enumerate, inspect, and terminate running processes. Cross-platform (Windows, macOS, Linux).
Action Description Key Payload Fields list_processesList running processes (paginated) page, limit, search, sortBy, sortDescget_processGet details for a specific process pid (required)kill_processTerminate a process by PID pid (required), force
Param Type Default Description pageint 1Page number limitint 50Results per page (max 500) searchstring ""Filter by name, user, command line, or PID sortBystring "cpu"Sort field: cpu, memory, pid, name, user sortDescbool trueSort descending
Returns ProcessListResponse with processes[], total, page, limit, totalPages.
Param Type Required Description pidint Yes Process ID to inspect
Returns a single ProcessInfo object with pid, name, user, cpuPercent, memoryMb, status, commandLine, parentPid, threads, createTime.
Param Type Default Description pidint Required Process ID to terminate forcebool falseIf true, sends SIGKILL instead of SIGTERM
List, inspect, start, stop, and restart system services. Platform-aware: uses systemd on Linux, launchd on macOS, and the Windows Service Control Manager.
Action Description Key Payload Fields list_servicesList system services (paginated) page, limit, search, statusget_serviceGet details for a specific service name (required)start_serviceStart a stopped service name (required)stop_serviceStop a running service name (required)restart_serviceRestart a service name (required)
Param Type Default Description pageint 1Page number limitint 50Results per page (max 500) searchstring ""Filter by service name statusstring ""Filter by status (e.g. Running, Stopped)
Returns ServiceListResponse with services[], each containing name, displayName, status, startupType, account, path, description.
Param Type Required Description namestring Yes Service name (e.g. sshd, nginx, wuauserv)
Query Windows Event Logs. Returns stub responses on non-Windows platforms.
Action Description Key Payload Fields event_logs_listList available event logs — event_logs_queryQuery events from a log logName, level, source, eventId, page, limitevent_log_getGet a specific log entry logName, recordId
Param Type Default Description logNamestring "System"Log name (System, Application, Security, etc.) levelstring ""Filter: Information, Warning, Error, Critical sourcestring ""Filter by event source eventIdint 0Filter by event ID pageint 1Page number limitint 50Results per page (max 500)
Param Type Default Description logNamestring "System"Log name recordIdint 0Record ID of the entry
Manage Windows Task Scheduler tasks. Returns stub responses on non-Windows platforms.
Action Description Key Payload Fields tasks_listList scheduled tasks (paginated) folder, search, page, limittask_getGet details for a specific task pathtask_runTrigger a task to run immediately pathtask_enableEnable a disabled task pathtask_disableDisable a task pathtask_historyGet execution history for a task path, limit
Param Type Default Description folderstring "\"Task Scheduler folder to list searchstring ""Filter by task name pageint 1Page number limitint 50Results per page (max 500)
Param Type Required Description pathstring Yes Full task path (e.g. \Microsoft\Windows\UpdateOrchestrator\Schedule Scan)
Param Type Default Description pathstring Required Full task path limitint 50Max entries to return (1-200)
Read and write Windows Registry keys and values. Returns error stubs on non-Windows platforms.
Caution
Registry operations can cause system instability if used incorrectly. All write operations (registry_set, registry_delete, registry_key_create, registry_key_delete) should be tested carefully before deployment at scale.
Action Description Key Payload Fields registry_keysList subkeys at a registry path hive, pathregistry_valuesList values at a registry path hive, pathregistry_getGet a specific registry value hive, path, nameregistry_setSet a registry value hive, path, name, type, dataregistry_deleteDelete a registry value hive, path, nameregistry_key_createCreate a new registry key hive, pathregistry_key_deleteDelete a registry key hive, path
Param Type Default Description hivestring "HKLM"Registry hive: HKLM, HKCU, HKCR, HKU, HKCC pathstring ""Registry key path (e.g. SOFTWARE\Microsoft\Windows\CurrentVersion)
Param Type Default Description hivestring "HKLM"Registry hive pathstring ""Key path namestring ""Value name
Param Type Default Description hivestring "HKLM"Registry hive pathstring ""Key path namestring ""Value name typestring "REG_SZ"Value type: REG_SZ, REG_DWORD, REG_BINARY, REG_EXPAND_SZ, REG_MULTI_SZ, REG_QWORD datastring ""Value data
Param Type Default Description hivestring "HKLM"Registry hive pathstring ""Key path namestring ""Value name to delete
Power management and session locking. Cross-platform.
Action Description Key Payload Fields rebootSchedule a system reboot delayshutdownSchedule a system shutdown delaylockLock the current user session — reboot_safe_modeReboot into Safe Mode with Networking (Windows only) delay
Param Type Default Description delayint 0Delay in minutes before executing (0-1440, i.e. max 24 hours)
Platform behavior:
Windows : Runs shutdown /r /t <seconds> (reboot) or shutdown /s /t <seconds> (shutdown)
Linux/macOS : Runs shutdown -r +<minutes> (reboot) or shutdown -h +<minutes> (shutdown)
No payload parameters. Locks the active session:
Windows : rundll32.exe user32.dll,LockWorkStation
macOS : CGSession -suspend
Linux : loginctl lock-session (falls back to dm-tool lock)
Reboot a Windows device into Safe Mode with Networking. Uses bcdedit to set the safe boot flag before initiating a shutdown. If the shutdown command fails, the safe boot flag is automatically cleared to prevent accidental safe mode boots.
Param Type Default Description delayint 0Delay in minutes before rebooting (0-1440)
Browse, read, write, and manage files on the agent filesystem. All paths are cleaned and normalized. Mutating operations are blocked on critical system paths (/, /boot, /proc, /sys, /dev, /bin, /sbin, /usr).
Action Description Key Payload Fields file_listList directory contents pathfile_readRead file contents path, encodingfile_writeWrite content to a file path, content, encodingfile_deleteDelete a file or directory path, recursivefile_mkdirCreate a directory pathfile_renameRename or move a file oldPath, newPathfilesystem_analysisDeep filesystem analysis path, scanMode, maxDepth, topFiles, topDirs, timeoutSeconds
Param Type Default Description pathstring User home dir Directory to list
Returns FileListResponse with entries[], each containing name, path, type (file/directory), size, modified, permissions.
Param Type Default Description pathstring Required File path to read encodingstring "text""text" for UTF-8, "base64" for binary
Param Type Default Description pathstring Required File path to write contentstring ""File content encodingstring "text""text" or "base64"
Parent directories are created automatically. Files are written with 0644 permissions.
Param Type Default Description pathstring Required File or directory path recursivebool falseIf true, removes directories and all contents. Recursive deletes are blocked on top-level paths (e.g. /home, /var).
Param Type Required Description pathstring Yes Directory path to create (with parents)
Param Type Required Description oldPathstring Yes Source path newPathstring Yes Destination path
Deep filesystem scan that identifies large files, large directories, duplicate candidates, temp/cache accumulation, old downloads, unrotated logs, trash usage, and safe cleanup candidates.
Param Type Default Description pathstring Required Root directory to analyze scanModestring "baseline""baseline" (deep) or "incremental" (targeted)maxDepthint 32 (baseline) / 12 (incremental) Max directory depth (1-64) topFilesint 50Number of largest files to return (1-500) topDirsint 30Number of largest directories to return (1-200) maxEntriesint 10,000,000Max filesystem entries to scan (1,000-25,000,000) timeoutSecondsint 20Scan timeout (5-900 seconds) followSymlinksbool falseFollow symbolic links workersint auto Parallel scan workers (1-32; auto-scaled to CPU count) targetDirectoriesstring[] — Specific directories for incremental scans checkpointobject — Resume a previously interrupted scan
The response includes topLargestFiles, topLargestDirectories, tempAccumulation, oldDownloads, unrotatedLogs, trashUsage, duplicateCandidates, cleanupCandidates, and a summary with scan statistics. If the scan is interrupted (timeout or max entries), partial: true is set along with a checkpoint that can be passed to resume.
Open interactive remote terminal (PTY) sessions. Terminal commands use the term- prefix for command IDs and bypass the database queue for low-latency communication.
Action Description Key Payload Fields terminal_startOpen a new terminal session sessionId, cols, rows, shellterminal_dataSend input data to a session sessionId, dataterminal_resizeResize a terminal session sessionId, cols, rowsterminal_stopClose and destroy a session sessionId
Param Type Default Description sessionIdstring Required Unique session identifier colsint 80Terminal column count rowsint 24Terminal row count shellstring ""Shell to launch (empty = system default)
Param Type Required Description sessionIdstring Yes Session to write to datastring Yes Input data (keystrokes, paste content)
Param Type Default Description sessionIdstring Required Session to resize colsint 80New column count rowsint 24New row count
Param Type Required Description sessionIdstring Yes Session to close
Two remote desktop modes are available: WebRTC-based (legacy) and WebSocket-based streaming.
Action Description Key Payload Fields start_desktopStart a WebRTC desktop session sessionId, offer, iceServersstop_desktopStop a WebRTC desktop session sessionId
Param Type Required Description sessionIdstring Yes Unique session identifier offerstring Yes WebRTC SDP offer iceServersarray No Array of { urls, username, credential } ICE server configs
Returns { sessionId, answer } where answer is the WebRTC SDP answer.
Action Description Key Payload Fields desktop_stream_startStart a desktop frame stream sessionId, quality, scaleFactor, maxFpsdesktop_stream_stopStop a desktop frame stream sessionIddesktop_inputSend mouse/keyboard input sessionId, eventdesktop_configUpdate streaming configuration sessionId, quality, scaleFactor, maxFps
Param Type Default Description sessionIdstring Required Unique session identifier qualityint Default config JPEG quality 1-100 scaleFactorfloat Default config Image scale factor 0.0-1.0 maxFpsint Default config Maximum frames per second 1-30
Returns { sessionId, screenWidth, screenHeight }.
Param Type Required Description sessionIdstring Yes Session to send input to eventobject Yes Input event object (see below)
The event object fields:
Field Type Description typestring Required. Event type: mousemove, mousedown, mouseup, click, dblclick, keydown, keyup, scroll xint Mouse X coordinate yint Mouse Y coordinate buttonstring Mouse button: left, right, middle keystring Key name for keyboard events deltaint Scroll delta modifiersstring[] Modifier keys: ctrl, alt, shift, meta
Param Type Range Description sessionIdstring Required Session to update qualityint 1-100 JPEG quality scaleFactorfloat 0.0-1.0 Image scale factor maxFpsint 1-30 Maximum frames per second
At least one of quality, scaleFactor, or maxFps must be provided.
Execute scripts on managed devices. Supports Bash, PowerShell, Python, and other interpreters. Both script and run_script invoke the same handler.
Action Description Key Payload Fields script / run_scriptExecute a script content, language, timeoutSeconds, runAs, parametersscript_cancelCancel a running script executionIdscript_list_runningList currently running scripts —
Param Type Default Description contentstring Required Script source code languagestring "bash"Script type: bash, powershell, python, cmd, etc. scriptIdstring ""Reference ID for tracking timeoutSecondsint 300Execution timeout (5 minutes default) runAsstring ""User context: "" (system), "user" (interactive user), or a specific username parametersobject {}Key-value map of script parameters
Note
When runAs is set to a username (or "user"), the agent forwards the script to the user-mode helper via IPC for execution in that user’s session. If no helper is connected, the script falls back to local (system) execution.
Param Type Required Description executionIdstring Yes Execution ID to cancel
No payload parameters. Returns { running: [...], count: N }.
Scan for, download, and install OS patches. Includes pre-flight checks for disk space, AC power, and maintenance windows.
Action Description Key Payload Fields patch_scanScan for available patches sourceinstall_patchesInstall pending patches patchIdsdownload_patchesDownload patches without installing patchIdsrollback_patchesRoll back installed patches patchIds
Param Type Default Description sourcestring ""Audit source identifier (for logging)
Returns { pendingCount, installedCount, warning }. Also sends full patch inventory to the API as telemetry.
Runs pre-flight checks (disk space, AC power, maintenance window, service health) before installation. Fails if any check does not pass.
Param Type Required Description patchIdsstring[] Yes Array of patch IDs to install
Downloads patches to local cache without installing. Runs a subset of pre-flight checks (disk space and service health, skips AC power and maintenance window).
Param Type Required Description patchIdsstring[] Yes Array of patch IDs to download
Returns { downloadedCount, failedCount, results[] } with per-patch status. Sends progress events via WebSocket during download.
Param Type Required Description patchIdsstring[] Yes Array of patch IDs to roll back
Schedule, cancel, and check the status of managed reboots (separate from the immediate reboot system command).
Action Description Key Payload Fields schedule_rebootSchedule a deferred reboot delayMinutes, reason, source, deadlinecancel_rebootCancel a scheduled reboot — get_reboot_statusGet current reboot schedule state —
Param Type Default Description delayMinutesint 60Minutes until reboot (1-10080, i.e. up to 7 days) reasonstring "Scheduled by administrator"Reboot reason for logging and user notification sourcestring "manual"Initiator: "manual", "patch", "policy", etc. deadlinestring — Optional RFC 3339 timestamp to override calculated deadline
No payload parameters. Returns { cancelled: true }.
No payload parameters. Returns the full RebootState object with schedule details.
Collect security status, run malware/threat scans, and manage quarantined threats.
Action Description Key Payload Fields security_collect_statusCollect security posture (AV, firewall, etc.) — security_scanRun a security/malware scan scanType, paths, scanRecordId, triggerDefendersecurity_threat_quarantineQuarantine a detected threat path, name, threatType, severity, quarantineDirsecurity_threat_removePermanently remove a threat path, name, threatType, severitysecurity_threat_restoreRestore a quarantined file quarantinedPath, originalPath
No payload parameters. Returns the device security status including antivirus, firewall, and encryption state.
Param Type Default Description scanTypestring "quick"Scan type: "quick", "full", or "custom" pathsstring[] — Paths to scan (required when scanType is "custom") scanRecordIdstring ""ID for tracking the scan in the dashboard triggerDefenderbool false(Windows only) Also trigger Windows Defender scan
Returns { scanRecordId, scanType, durationMs, threatsFound, threats[], status }.
Param Type Default Description pathstring Required Path of the threat file namestring ""Threat name threatTypestring "malware"Threat classification severitystring "medium"Threat severity quarantineDirstring Platform default Custom quarantine directory
Param Type Default Description pathstring Required Path of the threat file to permanently delete namestring ""Threat name threatTypestring "malware"Threat classification severitystring "medium"Threat severity
Param Type Required Description quarantinedPathstring Yes Path of the quarantined file originalPathstring Yes Original file path to restore to
Network discovery, SNMP polling, and connectivity checks for monitoring.
Action Description Key Payload Fields network_discoveryDiscover hosts on a network subnets, methods, portRanges, concurrencysnmp_pollPoll an SNMP device for metrics target, version, community, oidsnetwork_pingPing a host (ICMP with TCP fallback) target, count, timeoutnetwork_tcp_checkTCP port connectivity check target, port, expectBanner, timeoutnetwork_http_checkHTTP/HTTPS endpoint check url, method, expectedStatus, expectedBody, verifySslnetwork_dns_checkDNS record lookup check hostname, recordType, expectedValue, nameserver
Param Type Default Description subnetsstring[] — CIDR subnets to scan (e.g. ["192.168.1.0/24"]) excludeIpsstring[] — IP addresses to skip methodsstring[] — Scan methods: ping, arp, port portRangesstring[] — Port ranges for port scanning (e.g. ["22", "80", "443"]) snmpCommunitiesstring[] — SNMP community strings to try timeoutint 2Per-host timeout in seconds concurrencyint 128Max concurrent scan workers deepScanbool falseEnable deep scanning (more ports, slower) identifyOSbool falseAttempt OS fingerprinting resolveHostnamesbool falsePerform reverse DNS lookups jobIdstring ""Job ID for tracking
Param Type Default Description targetstring Required Target IP or hostname portint 161SNMP port versionstring "v2c"SNMP version: "v1", "v2c", "v3" communitystring "public"Community string (v1/v2c) usernamestring ""SNMPv3 username authProtocolstring ""SNMPv3 auth protocol authPasswordstring ""SNMPv3 auth passphrase privProtocolstring ""SNMPv3 privacy protocol privPasswordstring ""SNMPv3 privacy passphrase oidsstring[] — OIDs to poll timeoutint 2Request timeout in seconds retriesint 1Number of retries deviceIdstring ""Device ID for tracking
Param Type Default Description targetstring Required IP address or hostname monitorIdstring ""Monitor ID for tracking timeoutint 5Timeout in seconds countint 4Number of ping attempts
Falls back to TCP connect (ports 443, then 80) if ICMP fails (common when running without root).
Param Type Default Description targetstring Required IP address or hostname portint 443TCP port to check monitorIdstring ""Monitor ID for tracking timeoutint 5Connection timeout in seconds expectBannerstring ""Expected string in the service banner
Returns { status, responseMs } and optionally { banner } if expectBanner is set. Status is "degraded" if the banner does not match.
Param Type Default Description urlstring Required Full URL to check (e.g. https://example.com/health) methodstring "GET"HTTP method monitorIdstring ""Monitor ID for tracking expectedStatusint 200Expected HTTP status code expectedBodystring ""Expected string in response body verifySslbool trueVerify TLS certificate followRedirectsbool trueFollow HTTP redirects timeoutint 10Request timeout in seconds
Returns { status, statusCode, responseMs } plus { sslExpiry, sslDaysRemaining } for HTTPS endpoints.
Param Type Default Description hostnamestring Required Hostname to look up recordTypestring "A"Record type: A, AAAA, MX, CNAME, TXT, NS monitorIdstring ""Monitor ID for tracking expectedValuestring ""Expected value in results nameserverstring ""Custom DNS server (e.g. 8.8.8.8) timeoutint 5Lookup timeout in seconds
Run, list, stop, and verify backups using the configured backup provider.
Action Description Key Payload Fields backup_runStart a backup job — backup_listList backup snapshots — backup_stopStop a running backup — backup_verifyVerify backup integrity verificationTypebackup_test_restoreTest-restore a snapshot snapshotId, targetPathbackup_cleanupClean up expired snapshots —
No payload parameters. Requires backup to be configured on the agent. Returns { jobId, status, snapshotId, filesBackedUp, bytesBackedUp }.
{ "action" : " backup_run " , "payload" : {} }
No payload parameters. Returns { snapshots[], count }.
No payload parameters. Stops the currently running backup job.
Param Type Default Description verificationTypestring "integrity"integrity (checksum) or test_restore (extract to temp)
"action" : " backup_verify " ,
"payload" : { "verificationType" : " test_restore " }
Param Type Required Description snapshotIdstring Yes Snapshot to test-restore targetPathstring No Temporary restore destination
"action" : " backup_test_restore " ,
"snapshotId" : " snap-20260329-0200 " ,
"targetPath" : " /tmp/restore-test "
No payload parameters. Removes snapshots that exceed the configured retention policy.
Action Description Key Payload Fields collect_softwareCollect installed software inventory —
No payload parameters. Runs the software collector and returns the full list of installed applications with name, version, publisher, install date, and size.
Transfer files to/from managed devices.
Action Description Key Payload Fields file_transferInitiate a file transfer direction, path, transferIdcancel_transferCancel an in-progress transfer transferId
Payload is passed directly to the file transfer manager. Key fields include the transfer direction and file path.
"action" : " file_transfer " ,
"path" : " /var/log/application.log " ,
"transferId" : " xfer-a1b2c3d4 "
Param Type Required Description transferIdstring Yes Transfer ID to cancel
"action" : " cancel_transfer " ,
"payload" : { "transferId" : " xfer-a1b2c3d4 " }
These commands require the user-mode helper process to be running in a user’s session.
Action Description Key Payload Fields notify_userSend a desktop notification title, body, icon, urgency, username, actionstray_updateUpdate the system tray icon/menu status, tooltip, menuItems
Param Type Default Description titlestring "Breeze Agent"Notification title bodystring Required Notification body text iconstring ""Icon path or identifier urgencystring "normal"Urgency level: "low", "normal", "critical" usernamestring ""Target username (empty = first available session) actionsstring[] — Action button labels
Param Type Default Description statusstring "ok"Tray icon status indicator tooltipstring "Breeze Agent"Tooltip text menuItemsarray — Array of { id, label, enabled } menu items
sudo systemctl start breeze-agent
sudo systemctl stop breeze-agent
sudo systemctl restart breeze-agent
sudo systemctl status breeze-agent
sudo journalctl -u breeze-agent -f
sudo launchctl load /Library/LaunchDaemons/com.breeze.agent.plist
sudo launchctl unload /Library/LaunchDaemons/com.breeze.agent.plist
sudo log show --predicate ' process == "breeze-agent" ' --last 1h
Start-Service breeze - agent
Stop-Service breeze - agent
Restart-Service breeze - agent
Get-EventLog - LogName Application - Source breeze - agent - Newest 50
The API runs a stale command reaper every 2 minutes that cleans up commands stuck in pending or sent status. Each command type has a timeout tier that determines how long the system waits before marking it as failed:
Tier Duration Command types Short 5 min Process management, service management, event logs, scheduled tasks, registry, file operations, screenshots, computer actions, security status collection Medium 30 min Security scans, patch scans, software uninstall, filesystem analysis, safe mode reboot, self-uninstall, evidence collection, containment actions, reliability metrics, CIS remediation Long 2 hours Patch installation, backup verify/test-restore/cleanup, CIS benchmarks, sensitive data scans, file encryption/secure delete/quarantine Excluded Never reaped Terminal sessions (terminal_start, terminal_data, terminal_resize, terminal_stop)
Script commands use the script’s own timeoutSeconds value (default 300s) plus a 5-minute grace buffer, so the server timeout is always slightly longer than the agent-side timeout.
When a command times out, it is marked failed with timedOutBy: 'server' in the error message.
The agent sends a heartbeat every 60 seconds containing:
Field Description cpuCPU usage percentage memoryMemory usage (used/total) diskDisk usage per mount point networkNetwork interface stats uptimeSystem uptime osOS name and version hostnameCurrent hostname agentVersionRunning agent version
The agent includes a user-mode helper process for operations that require user-session context:
Desktop notifications (notify_user)
User-specific inventory (installed apps, browser extensions)
Session-aware remote desktop
Script execution as a specific user (runAs)
System tray icon updates (tray_update)
Install the user helper:
sudo make install-user-helper
systemctl --user enable breeze-agent-user
sudo make install-user-helper
# LaunchAgent auto-starts at login