Documentation Index
Fetch the complete documentation index at: https://docs.runlayer.com/llms.txt
Use this file to discover all available pages before exploring further.
Prerequisites
- Iru/Kandji admin access
- At least one Blueprint configured with enrolled devices
- Devices enrolled via Automated Device Enrollment (for Full Disk Access)
Deployment Steps
Deploy PPPC Profile
Detect needs to read MCP config files in TCC-protected directories (Desktop, Documents, Application Support). Without a PPPC profile, macOS shows a permission dialog on every scan.Download the PPPC profile from the Detect configuration page in the Runlayer dashboard (Settings → Shadow MCPs), or use the button below:
The profile targets a dedicated
runlayer-scan wrapper binary so that Full Disk Access is scoped to the scan process only — not to general-purpose tools like uvx.- Navigate to Library in Iru/Kandji
- Click Add New → Custom Profile → Add & Configure
- Upload the downloaded
.mobileconfigfile, select Mac as the device family - Assign to your target Blueprint(s)
- Click Save
Get Deployment Artifacts
In the Runlayer dashboard, go to Settings → Shadow MCPs. Under the Detect section, click Configure and select your MDM platform. This opens a setup dialog that auto-generates an API key and renders the deployment script.
Add a Custom Script Library Item
- Navigate to the Library section in Iru/Kandji
- Click Add New → Custom Script → Add & Configure
- Provide a Name (e.g., “AI Watch Detect”)
- Assign to your target Blueprint(s)
- Set Execution Frequency to Run daily (recommended) or Run every 15 minutes for more frequent scans
- Paste the generated script into the Audit Script field
- Click Save
Verification
Verify in Runlayer
Navigate to Shadow in the Runlayer dashboard and confirm devices appear in the Detect data.
Log Locations
| Platform | Log Location |
|---|---|
| macOS | /var/log/runlayer/ai_watch_detect.log |
| macOS (fallback) | /tmp/runlayer-ai_watch_detect.log |
The fallback log location is used when the primary path (
/var/log/runlayer/) cannot be written to due to permissions.Exit Codes
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | General failure (no user logged in, missing config, credential storage failed) |
| 2 | Network failure (cannot reach PyPI) |
| 3 | Installation failure (uv or CLI install failed) |