Manage allowlisted Linux and macOS host operations through MCP with audited actions and an outbound WebSocket connection.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
One-click editor setup isnβt available for this listing yet β we donβt have a confirmed install command, and weβd rather show nothing than point your editor at the wrong package or host. Follow the projectβs own setup instructions, linked above.
Inspect callable tools, capabilities, and parameters exposed to AI agents by SentinelX.
sentinel_execRun an allowlisted shell command
sentinel_script_runRun a one-off bash or python3 script
sentinel_editStructured file edit (replace, regex, replace-block, write, append, prepend)
sentinel_moveMove/rename a file or directory
sentinel_copyCopy a file or directory
sentinel_deleteDelete a file or directory
Operate your Linux, macOS, and Windows servers from Claude.ai or ChatGPT β safely. SentinelX gives your LLM an allowlisted, auditable shell: it can only run commands you've explicitly permitted, filesystem access is gated by a per-path allowlist, and every action is recorded. No inbound ports β just a single outbound WebSocket.
The security model is the point. Handing an LLM unrestricted shell on a server you care about is the thing SentinelX is designed to avoid: the allowlist is the real trust boundary, so the agent can't run β or invent β anything you didn't allow. This is the agent you install on the host; structured file edits and service management come with it.
SentinelX in ChatGPT β it reads the allowlist, runs only what's permitted (df -h, /proc/meminfo), and reports back.
Most people start with the one-liner β it auto-detects Linux or macOS:
Windows (PowerShell β needs Python 3.12+ and git on PATH):
Service install β runs as LocalSystem at boot; needs an elevated PowerShell:
Per-user install β no admin; runs as you at logon (locked-down machines):
The installer clones this repo into a virtualenv, registers the agent as a
service (systemd / launchd / Windows service), and walks you through enrollment.
On networks that block PyPI, add -Bundle <zip-or-url> for an offline install
from the wheel bundle on the latest release; the agent uses the OS trust store
(truststore) so a TLS-inspecting proxy's CA is accepted. Full options β
per-user vs service, offline bundle, all flags, uninstall β live in
sentinelx-cloud-installer.
SentinelX is also listed in the ChatGPT app directory β ChatGPT users can connect it in one click, no custom MCP URL required.
This repo is also the agent's source β read on if you want to audit or contribute.
The agent is the box on the right. It opens one outbound WebSocket to the hub at install time (after enrollment) and stays connected. No inbound ports, no port-forwarding, no reverse tunnel.
| Component | Where | What it does |
|---|---|---|
sentinelx-cloud-core (this repo) | /opt/sentinelx-cloud-core on your host | Receives MCP tool calls from the hub, executes them locally, returns output |
| Hub | mcp.sentinelx.app (operated by Pensa) | Auth, multi-host routing, MCP transport |
| Config | /etc/sentinelx/config.yaml | Allowlist: which commands, services, and paths the agent will accept |
| Identity | /etc/sentinelx/identity.json | The agent's enrollment JWT, used to authenticate the WebSocket handshake |
Supported platforms: any modern Linux distribution with systemd
(tested on Ubuntu 22.04 / 24.04 and Debian 12), macOS with launchd
(Intel and Apple Silicon), and Windows β as a service (WinSW, admin) or
as a no-admin per-user Scheduled Task (-User); see Install on Windows
below. The one-line installer auto-detects Linux and macOS; Windows uses a
PowerShell installer. The agent also runs unmodified inside WSL2.
The agent exposes its host's operations as MCP tools to your LLM via the hub:
| Tool | What it does |
|---|---|
sentinel_exec | Run an allowlisted shell command |
sentinel_script_run | Run a one-off bash or python3 script |
sentinel_edit | Structured file edit (replace, regex, replace-block, write, append, prepend) |
sentinel_edit_upload_* | Three-step upload for large file edits |
sentinel_move | Move/rename a file or directory |
sentinel_copy | Copy a file or directory |
sentinel_delete | Delete a file or directory |
sentinel_chmod | Change file permissions |
sentinel_chown | Change file owner/group |
sentinel_service | systemctl start/stop/restart/reload/status |
sentinel_restart | Shortcut for sentinel_service with action=restart |
sentinel_upload_file | Single-shot file upload to the host |
sentinel_upload_* | Three-step chunked upload for large files |
sentinel_read | Read a file's contents, with optional line-range slicing |
sentinel_list | Structured directory listing (name, type, size, mtime) |
sentinel_search | Recursive content search with regex and glob filters |
sentinel_capabilities | Host policy/capabilities; optional bounded summary projection |
sentinel_help | Rich orientation/help; optional topic/path/single-playbook projections |
sentinel_state | Internal agent state, for debugging |
sentinel_ping | Cheap connectivity check |
The agent-side help and capabilities operations also support optional
narrow-response selectors. A Hub/MCP profile may expose these fields through
whatever model-facing tool shape it uses; the selectors are backend-operation
semantics and do not depend on full vs compact tool names.
help({"topic":"index"}) β small topic + paged playbook index.help({"topic":"security"}) β one broad help section.help({"path":"security_model.permission_errors"}) β one exact leaf from
the existing help tree.help({"playbook":"update_sentinelx_code"}) β one playbook only; optional
path, offset, and limit can select/page a subfield such as steps.capabilities({"detail":"summary"}) β host/operation/limit metadata and
policy counts without command/service/location/playbook bodies.Progressive help/playbook responses normalize explicit full-profile
sentinel_* references to op:<name> canonical operation hints so the same
guidance can be routed through compact or full presentation without teaching a
playbook two sets of MCP tool names.
For compatibility, empty help({}) and capabilities({}) requests retain the
legacy full responses. A Hub that wants compact-first behavior should map its
compact help/capabilities branches to the narrow selectors rather than changing
the agent's legacy empty-payload semantics.
sentinel_read, sentinel_list, and sentinel_search are read-only
filesystem primitives. sentinel_edit and the mutating primitives
(sentinel_move, sentinel_copy, sentinel_delete, sentinel_chmod,
sentinel_chown) write. All of them give the LLM structured access to
the filesystem without shelling out to cat/ls/mv/rm through exec,
and all of them are gated by the same path allowlist (file_ops in the
config, see below), not the command allowlist. Each path in that allowlist
declares an access level: r (read-only ops) or rw (read-only ops plus
the writing ops). Destructive operations that overwrite or remove an existing
target make a timestamped backup first.
The hub additionally exposes a handful of hub-side integrations (Cloudflare DNS, Resend email, Telegram) as MCP tools your LLM can use alongside the agent's tools β those live on the hub, not in this repo. See the integrations table on sentinelx.app.
/etc/sentinelx/config.yaml)A starter config is generated at install time. Editable. Reloaded when the service restarts. Schema:
Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/sentinelx)<a href="https://allmcps.com/mcp/sentinelx"><img src="https://allmcps.com/api/badge/sentinelx?style=directory" alt="SentinelX on AllMCPs" /></a>