systempromptLABSCO SUMMARY
The point is not what it can do for one agent — it is that you own the audit trail for all of them.
Any client that speaks MCP or the Anthropic Messages API can point at it, and from there the policy follows the user rather than the client. The property worth checking against your own requirements is where secrets live: they are decrypted into the tool subprocess environment, so the process holding the model context never writes the value.
What it is
A self-hosted governance layer for AI clients, shipped as one Rust binary against PostgreSQL. It fronts model providers behind a single endpoint, hosts MCP servers as isolated OAuth resource servers, and writes every request to your own database.
What you get
- A gateway that routes by model id to Anthropic, OpenAI, Gemini, Bedrock, Vertex or any compatible upstream, from one endpoint
- Per-user model permissions evaluated live: disable a model for a user and their next call is refused with a structured reason, no restart
- A governance pipeline on every tool call — JWT validation, RBAC scope check, secret detection, a blocklist of destructive operations, and rate limiting
- Credentials decrypted from a ChaCha20-Poly1305 store and injected into the tool subprocess environment only, never into the context the model sees
- MCP servers hosted per-tenant, each an isolated OAuth2 resource server with its own scopes, connected over Streamable HTTP
- systemprompt plugins mcp list, status and tools — enumerate configured servers, their health, and the tools each one exposes
- An audit row per request with identity, session, model, provider, tokens in and out, cost and the policy decisions that ran
Requirements
Rust 1.75+ and PostgreSQL 18+ if you build it, or one of the published deploy paths — a container image, Helm, Homebrew, Nix, or a one-click template on Railway, Render, Northflank or Zeabur. Clone the template, run the local setup task with a provider key, and it serves governance, agents, MCP and the admin UI on port 8080. Clients connect to the MCP path over Streamable HTTP, with OAuth in production.
Setup effort
Build from source — git clone https://github.com/systempromptio/systemprompt-template
USE CASES
Governing an agent you did not write
Point a third-party coding agent at the gateway and have its calls attributed, policy-checked and logged without modifying it.
Turning a model off for one person
Disable a model for a specific user and have the next call refused, with the reason recorded.
Keeping API keys out of the model's context
Store credentials encrypted and let the governance process inject them into the tool subprocess only.
Answering "what did the agent do?"
Query the audit table for a request id and read identity, tools called, model output and cost in one row.
Publishing MCP servers to your teams
List the configured servers, check their health, and see which tools each one exposes before granting scopes.
1 tool
Listed in project docs. Your client may show a different list.
BEFORE YOU INSTALL
What to know first
Tools you get
1 tool named in the project's documentation.
INSTALLATION
Connect your client
This one is built from source rather than installed with a single command.
Server setup
git clone https://github.com/systempromptio/systemprompt-template
cd systemprompt-template
just setup-local # prompts: pick a provider (Gemini/Anthropic/OpenAI), enter its key
just start # serves governance + agents + MCP + admin on :8080The MCP server is then reachable at http://localhost:8080/api/v1/mcp/systemprompt/mcp over Streamable HTTP
MCP Clients
Pi
With the server built and running, install Pi and wire it to the gateway:
examples/pi/setup.shAdd the per-model gateway routes once, then restart the server:
examples/pi/routes.shChoose the user Pi acts as (run with no arguments for a menu of existing users):
examples/pi/new-user.shRun pi and send a prompt; every call goes through the governed /v1/messages endpoint.