Features
Project and client-config detection is always enabled after AI Watch is installed. Endpoint behavior is selected withMode; Sessions and optional runtime discovery are controlled independently. One organization API key authenticates AI Watch scans, hooks, session events, and macOS updates; no enrollment keys are required.
- Running-process and container discovery are disabled by default. Set their macOS/Linux keys to
trueor Windows properties to1to opt in. - Monitor is the default mode.
- Sessions is enabled by default. Set
Sessions=false(macOS) orAIWATCH_SESSIONS=0(Windows) to skip the full event/session hook set.
Mode overrides the legacy Enforcement boolean when it contains a valid value. If Mode is absent or invalid, Enforcement=true maps to Enforce and Enforcement=false or absent maps to Monitor. Generated deployment artifacts still include Enforcement for older AI Watch versions: Monitor writes false, while Protect and Enforce write true. Mode-aware clients apply the exact selected mode; an older client receiving Protect falls back to Enforce rather than silently monitoring, but does not have Protect’s exact direct-MCP scanner path.
Hook installation follows the combined capability state: AI Watch installs hook configs when Mode is Protect/Enforce or Sessions is enabled. Detect-only uses Monitor with Sessions disabled; omitting Sessions uses the default enabled state and installs hooks for Monitor telemetry.
On current macOS and Windows packages, admins can change Mode, Sessions, process/container discovery, project depth, and project timeout from Settings → MDM configuration → Manage settings. Devices fetch the complete settings snapshot during the privileged hook reconcile, typically within an hour, without an MDM policy update. The tenant host, organization API key, AutoUpdate, CPU/memory limits, and browser-extension settings remain MDM-owned.
Advanced scan tuning (optional). Detect scans walk each user’s home directory to a bounded depth within a per-scan time budget, and a cooperative in-process governor keeps CPU and memory use within soft caps. The defaults fit most fleets — override them only if scans miss deeply-nested project configs (raise depth), run out of time on very large home directories (raise timeout), or you want to constrain the scan’s footprint on constrained hosts (lower the CPU / memory caps).
All are integers — macOS
<integer> in the tenant-config profile, Windows REG_DWORD via the matching MSI AIWATCH_* property. Omit the keys to keep the defaults. Values outside the range are clamped into it; non-integer or non-positive values are ignored and the default applies. The CPU / memory caps are best-effort: the governor throttles the scan to hold the CPU duty cycle (max(0.05, min(cpu_cores, MaxCpuPercent% × logical_cores)) cores) and aborts the scan if its Python-heap high-water mark exceeds the memory ceiling.
Package and platform support
Is the package custom-built per organization?
Is the package custom-built per organization?
No. The signed
.pkg / .msi is the same artifact for every customer — nothing tenant-specific is compiled into it. Your tenant host and organization API key are supplied separately through MDM configuration (the macOS Configuration Profile, or the Windows MSI properties / registry), not baked into the binary. That means the package can be verified once (signature, notarization) and reused unchanged across all of your configurations.Is Python, the Runlayer CLI, or any other runtime a prerequisite?
Is Python, the Runlayer CLI, or any other runtime a prerequisite?
No. The MDM package is fully self-contained: it installs a single signed
aiwatch binary with its runtime bundled. There is no Python, uv, or separate CLI install required on managed devices. The uv tool install runlayer CLI path documented on Detect and Enforce is only for manual, single-device testing.Which operating systems and architectures are supported?
Which operating systems and architectures are supported?
macOS and Windows have feature parity — Detect, Monitor/Protect/Enforce, and Sessions are available on both, with the same package configuration keys (see Features). Linux is Detect only: deploy as native
.deb / .rpm packages (cron-scheduled scans) or as a container image — see Linux (Detect only) or Container. The signed MDM package currently ships for Apple Silicon Macs and 64-bit Windows. For Intel Macs or other architectures, use the cross-platform uv tool install runlayer CLI path, or contact your Runlayer account team. AI Watch runs on managed-device hardware; it is not installed inside the AI assistant’s containers.What outbound network access does AI Watch need?
What outbound network access does AI Watch need?
Outbound HTTPS (443) to your Runlayer tenant host only — the same hostname configured in your MDM profile (for example
runlayer.dev.company.com or *.runlayer.com). Scans, hook decisions, session events, and macOS update checks all use that one endpoint, and no inbound ports are opened. If your Runlayer instance is self-hosted (including air-gapped networks), AI Watch only needs to reach that internal tenant host — no public-internet egress is required. Behind a TLS-inspection proxy, exempt the tenant hostname or install the corporate root CA in the OS trust store — see Troubleshooting.Package configuration
Use Settings → MDM configuration to create an AI Watch deployment. The wizard picks your MDM, mints a single organization API key, and puts the tenant host, key, initial behavior, and platform settings into the downloaded artifacts. After deployment, select Manage settings on the deployment card to changeMode, Sessions, DetectProcesses, DetectContainers, ProjectDepth, or ProjectTimeout. Current macOS and Windows packages fetch these settings during the privileged hook reconcile, typically within an hour; the complete backend snapshot overrides those six values from the original profile or MSI. If a fetch fails or returns invalid data, AI Watch keeps the last valid snapshot and otherwise falls back to the MDM values.
The tenant host, organization API key, identity overrides, AutoUpdate, CPU/memory limits, and browser-extension settings remain MDM-owned. Re-deploy the profile or MSI/registry values to change them. No behavior change requires reinstalling the package itself. The root updater installs the backend-selected binary on its own schedule; holding a version requires AutoUpdate=false or a matching backend rollout target.
macOS artifacts
The macOS package is a signed and notarized.pkg plus three MDM Configuration Profiles:
Deploy the three Configuration Profiles before the
.pkg so tenant config and TCC grants are present before the first scan tick.
If you need multiple configurations, deploy one com.runlayer.aiwatch.config.mobileconfig per group. The .pkg, PPPC profile, and Login Items profile are universal and can be reused unchanged across all configurations.
Jamf Pro
Upload Configuration Profiles and the
.pkg via Policy.Workspace ONE
Use Custom Attributes for tenant host and organization API key.
Iru / Kandji
Edit the tenant profile and deploy through Blueprints.
SimpleMDM
Upload profiles and package through device groups.
Mosyle
Deploy profiles and package through Mosyle device groups.
Other macOS MDM
Use any MDM with Custom App and Custom Profile support.
Migrating from the legacy script-based macOS Detect rollout? Run Legacy macOS Detect Cleanup before rolling out the
.pkg.Windows artifacts
The Windows package is a signed MSI wrapped for Intune. The MSI writes tenant config toHKLM\Software\Runlayer\AIWatch and registers device-local Scheduled Tasks that run scans (all real user profiles) and assert hooks (SYSTEM) on a recurring schedule — no Intune Remediations required.
Intune
Deploy the MSI and configure capability properties — scans and hooks schedule themselves on the device.
Linux artifacts (Detect only)
The Linux deployment bundle (aiwatch-<version>-linux-x86_64.zip) contains a .deb and an .rpm (both named runlayer-aiwatch), SHA256SUMS, and the config templates. The package installs the aiwatch binary plus a cron entry that scans all users every 15 minutes. Linux is Detect-only — the device’s Protect, Enforce, and Sessions features show Disabled in the dashboard by design.
Linux
Install the
.deb / .rpm via configuration management and configure the two files under /etc/runlayer/aiwatch/.SaltStack
Roll out and continuously assert the Detect-only scanner from a Salt master — package from
salt://, config from pillar.Container
Run the scanner as a container over bind-mounted host homes — standalone
docker run or a Kubernetes DaemonSet / CronJob.Manual and custom workflows
For individual test devices, use the feature pages:Run Detect manually
Install the Runlayer CLI and run
runlayer scan.Install Enforce manually
Install client hooks with
runlayer setup hooks.User and Identity Mapping
Understand how device usernames map to Runlayer users.
Remove AI Watch
Remove package-based and legacy script-based deployments.
Mode, Sessions, and optional process/container discovery to the desired values. Omit Mode only when intentionally relying on the legacy Enforcement fallback.
Related Resources
Detect
What scans read and how discovery works
Endpoint modes
Monitor, Protect, and Enforce configuration
FAQ
Pre-deployment, platform, and network questions
Troubleshooting
Common issues and solutions