Run your servers from an AI, safely.

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.

1 Install the agent

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:

$ curl -fsSL https://get.sentinelx.app | bash

Windows — PowerShell (Python 3.12+ and git on PATH). Service install, in an elevated shell:

iwr -useb https://get.sentinelx.app/install.ps1 -OutFile "$env:TEMP\sx.ps1" powershell -ExecutionPolicy Bypass -File "$env:TEMP\sx.ps1"

…or a no-admin, per-user install (locked-down machines):

iwr -useb https://get.sentinelx.app/install.ps1 -OutFile "$env:TEMP\sx.ps1" powershell -ExecutionPolicy Bypass -File "$env:TEMP\sx.ps1" -User

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.

2 Enroll the host

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.

3 Connect your LLM

Point your assistant at the hub — once per account, not per host. The connector URL is the same everywhere:

https://mcp.sentinelx.app/mcp/mcp

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):

{ "mcpServers": { "sentinelx": { "url": "https://mcp.sentinelx.app/mcp/mcp" } } }

4 Operate

Per host, the AI is handed a fixed set of tools — nothing else:

sentinel_state host facts
sentinel_capabilities what's allowed
sentinel_exec run an allowlisted command
sentinel_edit structured file edits
sentinel_script_run temp bash / python script
sentinel_service start / stop / restart / reload
sentinel_upload_file upload to host
sentinel_list_hosts multi-host fleet view
…and more — see the agent's docs

Then drive it in plain language:

Restart nginx on the VPS.
How much disk is left on the storage box?
Which services are down across the fleet?
Edit the config and reload the service.
Tail the error log and tell me what broke.
Resolve the merge conflict in this repo.

5 Configure the allowlist

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:

# /etc/sentinelx/config.yaml exec: allow: # commands (prefix-matched) - systemctl status - docker ps - df -h services: allow: # units it may manage nginx: [status, restart, reload] paths: allow_edit: # files it may read / write - /etc/nginx/sites-available

The allowlist — not the model's good behavior — is the trust boundary. Blocked attempts are refused and logged. Full schema & examples: config.example.yaml.

Reference