What Gets Installed
This page enumerates every component the Waxell desktop endpoint agent lays down on macOS and Windows, what each one does, and where its files, state, and logs live. Use it to audit a managed deployment, scope a security review, or clean up a host.
Nothing on the endpoint terminates TLS or captures request payloads until an admin explicitly enables capture for a specific host. Out of the box the agent observes metadata flows only (process → destination host, timing, byte counts). See Turning capture on for the enable path.
macOS
The macOS agent ships as a single signed, notarized application bundle — Waxell Setup.app — distributed as a .dmg. The app embeds two network system extensions and a set of helper binaries; the helpers run as per-user LaunchAgents installed by the Setup UI at first run. All binaries are signed under Apple Developer Team ID 2RWC9968XY with the hardened runtime.
Components
| Component | Bundle / binary | Type | What it does |
|---|---|---|---|
| Waxell Setup | dev.waxell.setup | App (GUI) | The AppKit setup UI. Enrolls the device against the tenant CA, installs the system extensions and helper LaunchAgents, and surfaces status. Installs to /Applications. |
| FlowMonitor extension | dev.waxell.setup.flowmonitor | Network system extension (content filter) | Metadata flow observation. Sees every connection's process, destination host (SNI / QUIC), and timing — without terminating TLS. This is the always-on, default capability. |
| ProxyMonitor extension | dev.waxell.setup.proxymonitor | Network system extension (transparent proxy) | TLS-termination payload capture (L0). For admin-enabled AI hosts only, terminates TLS with a tenant-CA-chained leaf, DLP-redacts on-device, and uploads. Off until a host is enabled. |
| WaxellPolicyDaemon | dev.waxell.setup.policydaemon | Helper + LaunchAgent | Long-polls the control plane and applies guard / capture policy to the local extensions. |
| WaxellFlowUploader | dev.waxell.setup.flowuploader | Helper + LaunchAgent | Batches observed metadata flows and uploads them to the control plane. |
| WaxellCoworkWatcher | dev.waxell.setup.coworkwatcher | Helper + LaunchAgent | Watches Claude Cowork activity and emits the cowork audit event stream. |
| wax-hook | dev.waxell.setup.hook | Helper (no LaunchAgent) | Synchronous Claude Code hook, invoked per tool call. No daemon — the Setup UI wires it into ~/.claude/settings.json; the binary sits in the bundle awaiting invocation. |
The Setup app is ~3 MB. The Python wax CLI is no longer bundled — all endpoint operations run as native Swift Mach-O helpers. Power users who want the dev CLI install it separately via pipx install waxell-observe.
File locations (macOS)
- App bundle:
/Applications/Waxell Setup.app - Embedded helpers:
/Applications/Waxell Setup.app/Contents/Helpers/—WaxellPolicyDaemon,WaxellFlowUploader,WaxellCoworkWatcher,wax-hook - LaunchAgent templates:
/Applications/Waxell Setup.app/Contents/Resources/—policy-daemon.plist.template,flow-uploader.plist.template,cowork-watcher.plist.template(substituted and installed into~/Library/LaunchAgents/at first run) - System extensions: activated from inside the app bundle and registered with the OS; managed via
systemextensionsctl - Claude Code hook wiring:
~/.claude/settings.json - Managed config (MDM): delivered as a
.mobileconfigprofile (seeinstallers/macos/mdm/)
Windows
The Windows agent ships as a signed MSI (Waxell-<ver>.msi). The MSI installs the Setup GUI, several auto-start LocalSystem services, the synchronous hook binary, and — for L0 payload capture — the WinDivert kernel driver. Managed configuration is delivered out-of-band via HKLM\SOFTWARE\Waxell (typically pushed by Intune / MDM).
Components
| Component | Service / binary | Type | What it does |
|---|---|---|---|
| WaxellSetup | WaxellSetup.exe | App (GUI) | The Avalonia setup UI: service status, bridge status, enrollment. Also exposes --reset to clear persistent CNG keys + Waxell certs. |
| WaxellNetworkMonitor | WaxellNetworkMonitor | LocalSystem service (auto-start) | ETW flow observation (DNS + Schannel + Kernel-Network), PID/time correlation, metadata flow upload, and user-mode WFP blocking of disallowed processes. |
| WaxellCoworkWatcher | WaxellCoworkWatcher | LocalSystem service (auto-start) | Claude Cowork audit — emits the cowork event stream (parity with the macOS helper). |
| WaxellPolicyDaemon | WaxellPolicyDaemon | LocalSystem service (auto-start) | Long-polls the control plane and writes effective guard / capture policy to disk for the other services to read. |
| wax-hook | wax-hook.exe | Binary (no service) | Synchronous Claude Code hook, invoked per tool call. |
| WinDivert | WinDivert .sys driver | Kernel driver | Packet interception for L0 payload capture and HTTP/3 SNI extraction. Loaded only when capture is enabled. |
All three services boot at device startup and pick up the managed config (HKLM\SOFTWARE\Waxell) the moment it's present.
File locations (Windows)
- Program files:
%PROGRAMFILES%\Waxell\—Setup\(WaxellSetup.exe,waxell-diagnose.ps1) andService\(the services + WinDivert driver) - State + logs:
%PROGRAMDATA%\Waxell\(ACL'dBUILTIN\Users: Modifyso the policy bridge can write without elevation)policy.json— the local policy the services enforce (block lists, etc.)guard-effective.json— the resolved effective guard policy from the cascadeservice.log— teed service logsdevice-identity.json— the per-device enrollment identity (CSR → tenant intermediate)
- Managed config:
HKLM\SOFTWARE\Waxell—ApiUrl,ApiKey,CaptureEnabled,InterceptHosts,InterceptProcesses(ACL'd to SYSTEM + Administrators so ordinary users can't read the API key) - Tenant root CA: imported into
LocalMachine\Root - Diagnostic bundle:
"C:\Program Files\Waxell\Setup\waxell-diagnose.ps1"→%TEMP%\waxell-diag-<datestamp>.zip
Windows L0 (TLS-termination payload capture) is in progress. It depends on the WinDivert kernel driver, which is blocked by HVCI / Memory Integrity on Windows 11 — WinDivertOpen returns ERROR_DRIVER_BLOCKED (1275). On those hosts the service silently downgrades to metadata-only: every other capability (metadata flows, app discovery, hook governance, guard cascade, cowork audit) keeps working; L0 and HTTP/3 SNI extraction are unavailable until an attestation-signed driver ships. See the Memory Integrity (HVCI) section.
See also
- Deploy to a Windows fleet via Intune — the three MDM artifacts, managed config, and HVCI handling.
- Turning capture on — the default-OFF capture model and how to enable per-host.