llm.enfors.ai directly.)
Install
- macOS
- Windows (PowerShell)
Requirements — macOS or Windows, and Python 3 (installed automatically if missing —
via Homebrew on macOS, via winget on Windows). The watcher is a single
file with no third-party dependencies. The installer is idempotent, and detects and
supersedes any earlier proxy-based install. On macOS, the optional
menu bar indicator additionally needs the Xcode Command Line
Tools — without them it is skipped and the watcher installs normally. On Windows, the
tray indicator compiles unconditionally (the .NET Framework compiler ships with Windows).
What it does
1
Installs Python 3
Detected, or installed automatically if missing (Homebrew on macOS, winget on
Windows).
2
Installs the watcher
enfors_watcher.py is installed to ~/.enfors/hooks/ and registered to run at
login — a LaunchAgent (ai.enfors.watcher) on macOS, a Scheduled Task
(EnforsWatcher) on Windows — restarting only on a crash, never on a clean stop.3
Signs you in with SSO
A browser-based Cognito OAuth2 + PKCE flow (callback on
localhost:8765). Tokens are
cached to ~/.enfors/hooks/tokens.json and refreshed automatically.4
Registers the Enfors MCP
Adds the Enfors MCP server to Claude Code and Claude Desktop.
5
Compiles the menu bar / tray indicator
A small app that shows the Enfors mark while monitoring is active.
- macOS
- Windows
Built locally with
swiftc when the Xcode Command Line Tools are present;
skipped with a warning otherwise (re-run the installer after
xcode-select --install to add it).Installer — SSO sign-in step
The enfors CLI
The installer adds an enfors command for managing the watcher — identical on macOS and
Windows:
The menu bar and tray indicator
The installer sets up a disclosure indicator — the Enfors mark in the macOS menu bar or the Windows system tray, visible exactly while monitoring is active. Clicking it shows “enfors workforce intelligence is active” (macOS) or a matching context menu (Windows) listing what’s currently being captured. The indicator is spawned and owned by the watcher itself — there is no separate LaunchAgent or Scheduled Task for it. If the watcher stops (enfors stop, crash,
logout), the icon disappears within seconds; when the watcher runs again, it comes back.
Icon on screen ⇔ transcripts are being captured — it cannot show a stale state.
On macOS, compiling the indicator requires the Xcode Command Line Tools. On machines
without them the installer prints a warning and skips it — monitoring itself is
unaffected. Install them with
xcode-select --install and re-run the installer to add
the indicator. On Windows, the tray indicator compiles unconditionally — there’s nothing
extra to install.Files it touches
Security
The watcher reads Claude Code and Claude Desktop’s local transcripts and uploads completed turns over HTTPS — there is no proxy, no TLS interception, and no root certificate installed. See Deployment & Security for the full IT/CISO detail.Uninstall
- macOS
- Windows (PowerShell)