SentinelX gives Claude, ChatGPT, or any MCP client an allowlisted, auditable shell on your Linux, macOS, and Windows hosts — over a single outbound WebSocket, no inbound ports. This is the short manual: install the agent, connect the hub, operate.
Run this on each host you want to operate. It builds a virtualenv, registers a service (systemd / launchd / Windows service), writes a starter config, and starts enrollment.
Linux / macOS — one command, auto-detects your OS:
Windows — PowerShell (Python 3.12+ and git on PATH). Service install, in an elevated shell:
…or a no-admin, per-user install (locked-down machines):
Prerequisites — Linux: root + git, python3, systemd. macOS: none (Python via uv). Windows: Python 3.12+ and git. Behind a corporate proxy / blocked PyPI: add -Bundle <zip-or-url>. Every flag and the uninstall steps live in the installer repo.
The installer prints an enrollment URL. Open it, sign in at mcp.sentinelx.app with Google, click Enroll a new host, and paste the token back into the terminal. The host binds to your account and appears in the dashboard within seconds.
Point your assistant at the hub — once per account, not per host. The connector URL is the same everywhere:
ChatGPT — install SentinelX from the app directory, click Connect, sign in. No URL to paste.
Claude.ai — Settings → Connectors → Add custom connector → paste the URL above, then authorize with Google.
VS Code, Cursor, Cline & other JSON clients — drop this into the client's MCP config (mind the transport key: VS Code uses "type": "http", Cline uses "type": "streamableHttp", Cursor needs only the URL):
Per host, the AI is handed a fixed set of tools — nothing else:
sentinel_state host factssentinel_capabilities what's allowedsentinel_exec run an allowlisted commandsentinel_edit structured file editssentinel_script_run temp bash / python scriptsentinel_service start / stop / restart / reloadsentinel_upload_file upload to hostsentinel_list_hosts multi-host fleet viewThen drive it in plain language:
Everything is deny-by-default. The agent runs only what /etc/sentinelx/config.yaml permits (next to the install on macOS/Windows). Edit it to widen or narrow the agent's reach:
The allowlist — not the model's good behavior — is the trust boundary. Blocked attempts are refused and logged. Full schema & examples: config.example.yaml.