Open Source · AGPL-3.0

Every MCP tool call runs unchecked. Until now.

No AI decides what's allowed — your CEL policies do.

MCP proxy with CEL policies — single binary, full control.

Single binary · Zero config · Full audit trail

0ms Policy eval
0μs Proxy overhead

Benchmarked on M4 Pro MacBook · full interceptor chain

One proxy. Total control.

SentinelGate sits between AI agents and upstream MCP servers. Every action passes through a deterministic policy engine before reaching anything.

MCP Proxy

Aggregates multiple upstream MCP servers into a single endpoint. Hot-pluggable — add or remove upstreams without restart. Connected clients are notified automatically.

Policy Engine

CEL-powered deterministic enforcement. deny delete_* means denied. Always. No probabilistic filtering, no drift. Same engine as Kubernetes and Envoy.

Security Suite

Content scanning, outbound control, response scanning for prompt injection, and tool drift detection with quarantine. Defense in depth without runtime hacks.

Every call. Every time.

Watch the 11-step interceptor chain evaluate tool calls in real time. Allowed actions reach the upstream. Denied actions are blocked at the gate.

Tool call: "read_file"
Processing...
Agent
Validate
Auth
Policy
Audit
Upstream
Audit Log

Everything you need. Nothing you don't.

Built for security teams and developers who need deterministic control over AI agent actions.

MCP-Native Proxy

Aggregates multiple upstream MCP servers. Per-tool policies. Single endpoint for your agent. Hot-pluggable upstreams.

CEL Policy Engine

Common Expression Language — the same engine behind Kubernetes, Firebase, and Envoy. Simple patterns for simple rules. CEL for the rest.

7 Policy Templates

Safe Coding, Read Only, Research, Full Lockdown, Audit Only, Data Protection, Anti-Exfiltration. One click to apply.

Full Audit Trail

Every action logged with identity, decision, timestamp, and arguments. Live SSE stream, filters, CSV export.

Admin UI

8-page browser interface. Policy editor, test playground, security settings, audit viewer, session replay. No config files.

Identity & RBAC

API keys, roles, per-identity policies. Each agent session gets isolated credentials and separate audit trails.

Budget & Quota

Per-identity limits: max calls, writes, deletes per session. Rate limiting per minute. Deny or warn when reached.

Response Transforms

5 types: redact, truncate, inject, dry-run, mask. Applied to responses before they reach the agent. Test in built-in sandbox.

Session Recording

Record every tool call with full payloads. Timeline replay in the UI, JSON/CSV export, configurable retention, privacy mode.

Session-Aware Policies

CEL functions using session history: call counts, write counts, action sequences, time windows. Detect read-then-exfiltrate patterns.

Content Scanning

Detect secrets, credentials, API keys in payloads. Monitor or enforce mode. Response scanning for prompt injection.

Tool Drift Detection

Baseline snapshots of tool definitions. Alert on unexpected changes. Quarantine suspicious tools until resolved.

Explicit rules. Not AI judgment.

Simple tool patterns for common cases. CEL expressions when you need full power. Same engine as Kubernetes, Firebase, and Envoy.

DENY Block destructive operations
# Tool pattern — matches all delete tools
tool_match: "delete_*"
action: "deny"

# CEL — block by content
action_arg_contains(arguments, "secret")
ALLOW Role-based access control
# Only admins can run shell commands
action_name == "bash"
  && !("admin" in identity_roles)

# Block outbound to exfiltration services
dest_domain_matches(dest_domain, "*.ngrok.io")
SESSION Session-aware detection
# Deny send after read (anti-exfiltration)
session_sequence("read_file", action_name)

# Rate-limit within session window
session_count_window("write_file", 60) > 10

Three steps. Zero friction.

Install, configure, connect. Your agents are protected in minutes.

Install and start SentinelGate

Single binary, zero dependencies. Install with one command, start with another.

Terminal
# Install (macOS / Linux)
$ curl -sSfL https://raw.githubusercontent.com/Sentinel-Gate/Sentinelgate/main/install.sh | sh

# Start the server
$ sentinel-gate start

SentinelGate v1.1.0 started
Admin UI:  http://localhost:8080/admin
MCP proxy: http://localhost:8080/mcp

Configure in the Admin UI

Add upstream MCP servers, create identities and API keys, set policies or apply templates. Everything from the browser.

1
Add Upstream MCP Servers Tools & Rules → Add Upstream. Stdio or HTTP servers.
2
Create Identity & API Key Access → Create identity with roles, generate API key.
3
Set Policies Use a template (one click) or write custom CEL rules.

Connect your AI agent

Configure SentinelGate as an MCP server in your agent's settings. Every agent connects the same way.

Terminal
$ claude mcp add -s user sentinelgate \
    --transport http http://localhost:8080/mcp \
    -H "Authorization: Bearer <your-api-key>"
~/.gemini/settings.json
{
  "mcpServers": {
    "sentinelgate": {
      "uri": "http://localhost:8080/mcp",
      "headers": {
        "Authorization": "Bearer <your-api-key>"
      }
    }
  }
}
~/.codex/config.toml
[mcp_servers.sentinelgate]
type = "http"
url = "http://localhost:8080/mcp"

[mcp_servers.sentinelgate.headers]
Authorization = "Bearer <your-api-key>"
IDE MCP Settings
{
  "mcpServers": {
    "sentinelgate": {
      "url": "http://localhost:8080/mcp",
      "headers": {
        "Authorization": "Bearer <your-api-key>"
      }
    }
  }
}
Python MCP Client
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client

async with streamablehttp_client(
    "http://localhost:8080/mcp",
    headers={"Authorization": "Bearer <your-api-key>"}
) as (read, write, _):
    async with ClientSession(read, write) as session:
        await session.initialize()
        tools = await session.list_tools()
        result = await session.call_tool("read_file", {"path": "/tmp/test.txt"})
Node.js MCP Client
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";

const transport = new StreamableHTTPClientTransport(
  new URL("http://localhost:8080/mcp"),
  { requestInit: { headers: { "Authorization": "Bearer <your-api-key>" } } }
);
const client = new Client({ name: "my-agent", version: "1.0" });
await client.connect(transport);

const tools = await client.listTools();
const result = await client.callTool({ name: "read_file", arguments: { path: "/tmp/test.txt" } });
Terminal
# List available tools
$ curl -X POST http://localhost:8080/mcp \
  -H "Authorization: Bearer <your-api-key>" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}'

# Call a tool
$ curl -X POST http://localhost:8080/mcp \
  -H "Authorization: Bearer <your-api-key>" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc": "2.0", "id": 2, "method": "tools/call",
    "params": {"name": "read_file", "arguments": {"path": "/tmp/test.txt"}}}'

Connect any MCP client.

One proxy, every agent. Configure SentinelGate as an MCP server — your agent doesn't need to know it's there.

Claude Code

CLI or settings.json

Gemini CLI

settings.json

Codex CLI

config.toml

Cursor / IDE

MCP settings

Python

MCP client library

Node.js

MCP client library

cURL / HTTP

Direct API calls

Open source at the core.

Everything you need to secure AI agents. Free forever. Enterprise features when you need them.

Core

Free forever · AGPL-3.0
  • MCP Proxy & Tool Discovery
  • CEL Policy Engine
  • 7 Policy Templates
  • Full Audit Trail & CSV Export
  • Admin UI (8 pages)
  • Identity & RBAC
  • Budget & Quota
  • Response Transforms
  • Session Recording & Replay
  • Content & Response Scanning
  • Tool Drift Detection
  • Multi-Agent Sessions
Get Started
Enterprise

Pro

Contact us custom licensing
  • Everything in Core, plus:
  • SSO / SAML 2.0
  • SIEM Integration
  • Human-in-the-Loop Approval
  • Multi-Tenancy
  • Compliance Reports
  • Priority Support & SLA
Contact Sales

Secure your AI agents today.

Single binary. Zero config. Full control.