SentinelX Core runs on your server as a dedicated service user and exposes a token-authenticated local HTTP API. AI agents and automation scripts get controlled access — only the commands you allow, nothing more.
SentinelX is split into an agent layer and an MCP/OAuth bridge layer. Deploy both together, or just the agent if you have your own integration.
Runs on your server as a sentinelx system user. Exposes a local HTTP API (port 8091). Only executes commands from an explicit allowlist. Handles file edits, uploads, temporary scripts, and service management.
Sits in front of the agent. Validates OAuth Bearer tokens via JWKS. Exposes the agent as MCP tools with per-tool scope enforcement. This is what Claude, ChatGPT and other MCP clients connect to.
Edit ALLOWED_COMMANDS and SERVICE_ACTIONS in agent.py to match exactly what you want to expose. Add your own services, extend the playbooks, tune the sudoers policy.
Keycloak, Auth0, Authentik, Zitadel — any OIDC-compatible provider works. Configure the issuer and JWKS URI in the env file and you're set.
The agent exposes a small, deliberate API surface. No hidden behavior, no magic.
Every security decision in SentinelX is intentional and explicit. No magic, no implicit trust.
/exec only runs commands explicitly in ALLOWED_COMMANDS. Any command not in the list is rejected before execution.
The agent runs as a system user named sentinelx with no login shell. Privileged operations require explicit sudoers rules — no blanket sudo.
The MCP bridge validates OAuth JWT tokens from your identity provider. The agent validates a static Bearer token. Both are independent.
Each MCP tool requires a specific OAuth scope (sentinelx:exec, sentinelx:edit, etc.). Clients only access what their token allows.
Every command execution is logged to /var/log/sentinelx/exec.log with command, output, return code, and timestamp. Blocked commands too.
The agent binds to 127.0.0.1 by default. The MCP bridge handles external exposure with HTTPS and OAuth.
sentinelx-core-mcp turns the agent into a proper MCP server. OAuth Bearer tokens are validated against your JWKS endpoint — no long-lived API keys handed to AI tools.
The MCP endpoint at /mcp implements the full MCP protocol over Streamable HTTP. Connect it behind a reverse proxy with HTTPS and it works with any MCP-compatible client.
Keycloak is a well-tested reference, but any OIDC-compatible provider works: Auth0, Authentik, Zitadel, or your own.
Both components include an install.sh that handles everything: system user, directories, virtualenv, systemd unit.
The agent. Install this first on every server you want to control.
The MCP/OAuth bridge. Install once per server where you want MCP clients to connect.