Windows
It is recommended that agents use the default screen resolution on their device.
| DNS / URL | Port | Reason for Whitelisting |
|---|---|---|
api-us3.pusher.com | 443 | Trigger start/stop recording events |
wss://ws-us3.pusher.com | 443 | Trigger start/stop recording events |
http-intake.logs.datadoghq.com | 443 | Send app activity logs to Datadog |
prod-api.thelevel.ai | 443 | Level API authorization |
screen-case.thelevel.ai | 443 | Start/stop recording controls |
screen.thelevel.ai | 1935 | Stream recording to Level servers |
https://screen-app.thelevel.ai | 443 | Network health checks |
https://sr-releases.thelevel.ai | 443 | Auto-update downloads |
https://screen-app-v3.thelevel.ai | 443 | App UI |
https://sr-platform.thelevel.ai | 443 | Organization-specific configuration |
https://launchdarkly.thelevel.ai | 443 | Feature flag configuration |
https://stream.launchdarkly.com | 443 | Feature flag streaming updates |
https://sdk.launchdarkly.com | 443 | Feature flag SDK access |
https://events.launchdarkly.com | 443 | Feature flag event reporting |
https://api.mixpanel.com | 443 | Analytics events |
https://api-eu.mixpanel.com | 443 | Analytics events |
https://api-in.mixpanel.com | 443 | Analytics events |
storage.googleapis.com | 443 | Update binary download storage |
For app versions <= 3.0.12, certain Optimizely URLs might also need to be whitelisted. For later versions, the list above is sufficient.
Windows
x86 and x64 are supported. The ARM version of Windows is not supported currently.Note: CPU usage may vary from 10% to 30% depending on the number and resolution of monitors being recorded.
Using GDI screen capture (gdiscreencapsrc)
Benefits of GDI fallback
Tradeoffs of GDI fallback
Note: This script should be executed with admin privileges in PowerShell. Running it via MDM is recommended.
Download file: cleanup-older-app-versions.ps1 — ⬇ Download
For enterprise rollout, run centrally in admin context on all endpoints:
powershell.exe -ExecutionPolicy Bypass -File "\\domain\NETLOGON\LevelRecorder\cleanup-older-app-versions.ps1"powershell.exe -ExecutionPolicy Bypass -File "C:\ProgramData\LevelRecorder\cleanup-older-app-versions.ps1"If running manually on a single endpoint, open PowerShell as Administrator and run:
powershell.exe -ExecutionPolicy Bypass -File "<path>\cleanup-older-app-versions.ps1"After execution, Add or remove programs should not list any item matching "Level Screen Recorder".

We offer two installation methodologies for Windows:
C:\Program Files\...). This is the recommended installation method because:%LOCALAPPDATA%) and is scoped to that user.Machine-Wide installation is an MSI-based deployment that installs software into a shared location (typically C:\Program Files or C:\Program Files (x86)) rather than an individual user profile. The application is then available to all users who sign in to that machine.
Key characteristics:
Installation steps:
The application runs in the user's context (both Machine-Wide and User-Profile). The following operations are used at runtime; endpoint policy (GPO/EDR/AppLocker) must allow them for the app to function fully.
| Command | Purpose | Privileges |
|---|---|---|
| whoami (or PowerShell as fallback) | Get current user SID to create the scheduled task (when not deployed via GPO/MDM). | Read current user identity. If PowerShell is used as fallback: PowerShell execution allowed. |
| schtasks (query / create / delete) | Check if keepalive task exists; create or delete the keepalive scheduled task. | Read, create, and delete own scheduled tasks. Can be restricted by policy. |
| PowerShell | Get user SID (fallback), enumerate processes (single-instance), get number of monitors. | PowerShell execution allowed. If blocked by policy, app uses fallbacks (weaker duplicate detection; monitor count may be unavailable). |
The app also uses taskkill (to terminate duplicate processes) and reg query/delete on HKCU (for DPI compatibility); these are normally allowed for the user and are not listed above.
Note: To reduce steps for the admin, ensure users have the above privileges so the app can create the scheduled task automatically. If these cannot be granted, follow the Scheduled Task section below to deploy the task (e.g. via GPO/MDM).
What it is and purpose
A per-user Windows scheduled task named LevelScreenRecorder_KeepAlive that runs in the logged-in user's context. It ensures the Screen Recording app is started (or restarted) when the user logs on, when the workstation is unlocked, and on a 1-minute heartbeat. This provides auto-launch and crash recovery without requiring the user to start the app manually. Even when the app is installed Machine-Wide (Program Files), it runs in the user session, so this user-level task is required.
Provided files (Machine-Wide only):
LevelScreenRecorder_KeepAlive-systemwide.xml.template — ⬇ Downloaddeploy-keepalive-task-machinewide.ps1 — ⬇ DownloadPolicy requirements
Allow scheduled task name LevelScreenRecorder_KeepAlive and launcher C:\Program Files\Level Screen Recorder\Level Screen Recorder.exe. The deploy script must run in user context at user logon (not as SYSTEM).
Deployment steps:
\\domain\NETLOGON\LevelRecorder\).powershell.exe -NoProfile -ExecutionPolicy Bypass -File "\\domain\NETLOGON\LevelRecorder\deploy-keepalive-task-machinewide.ps1"powershell.exe -NoProfile -ExecutionPolicy Bypass -File "<path-to-script>\deploy-keepalive-task-machinewide.ps1"LevelScreenRecorder_KeepAlive with triggers: logon, unlock, and every 1 minute (launcher: Machine-Wide exe).User-Profile installation installs the app into the active user directory (%LOCALAPPDATA%\LevelAI\) instead of Program Files. It is useful where local admin access is unavailable.
Key characteristics:
Installation steps:
The application runs in the user's context (both Machine-Wide and User-Profile). The following operations are used at runtime; endpoint policy (GPO/EDR/AppLocker) must allow them for the app to function fully.
| Command | Purpose | Privileges |
|---|---|---|
| whoami (or PowerShell as fallback) | Get current user SID to create the scheduled task (when not deployed via GPO/MDM). | Read current user identity. If PowerShell is used as fallback: PowerShell execution allowed. |
| schtasks (query / create / delete) | Check if keepalive task exists; create or delete the keepalive scheduled task. | Read, create, and delete own scheduled tasks. Can be restricted by policy. |
| PowerShell | Get user SID (fallback), enumerate processes (single-instance), get number of monitors. | PowerShell execution allowed. If blocked by policy, app uses fallbacks (weaker duplicate detection; monitor count may be unavailable). |
The app also uses taskkill (to terminate duplicate processes) and reg query/delete on HKCU (for DPI compatibility); these are normally allowed for the user and are not listed above.
Note: To reduce steps for the admin, ensure users have the above privileges so the app can create the scheduled task automatically. If these cannot be granted, follow the Scheduled Task section below to deploy the task (e.g. via GPO/MDM).
What it is and purpose
A per-user Windows scheduled task named LevelScreenRecorder_KeepAlive that runs in the logged-in user's context. It ensures the Screen Recording app is started (or restarted) when the user logs on, when the workstation is unlocked, and on a 1-minute heartbeat. This provides auto-launch and crash recovery without requiring the user to start the app manually.
Provided files (User-Profile only):
LevelScreenRecorder_KeepAlive-peruser.xml.template — ⬇ Downloaddeploy-keepalive-task-userprofile.ps1 — ⬇ DownloadPolicy requirements
Allow scheduled task name LevelScreenRecorder_KeepAlive and launcher %LOCALAPPDATA%\LevelAI\Update.exe. The deploy script must run in user context at user logon (not as SYSTEM).
Deployment steps:
\\domain\NETLOGON\LevelRecorder\).powershell.exe -NoProfile -ExecutionPolicy Bypass -File "\\domain\NETLOGON\LevelRecorder\deploy-keepalive-task-userprofile.ps1"powershell.exe -NoProfile -ExecutionPolicy Bypass -File "<path-to-script>\deploy-keepalive-task-userprofile.ps1"LevelScreenRecorder_KeepAlive with triggers: logon, unlock, and every 1 minute (launcher: User-Profile Update.exe).Note: Screenshots may differ slightly from the actual UI of the app.
level.



Note: Screenshots may differ slightly from the actual UI of the app.
level.

