Production infrastructure for AI agents. Self-hosted or cloud.
The missing layer between AI frameworks and production deployment. Not another SDK — complete infrastructure with authentication, permissions, and multi-agent orchestration built on open standards (MCP, A2A, OAuth2).
Core Features
Agent Registry
Define, deploy, and manage AI agents as config. Each agent gets an A2A-compliant card, OAuth2 security, and a discoverable endpoint — no code changes required.
/.well-known/agent-card.json # Default agent card
/.well-known/agent-cards # List all agents
/.well-known/agent-cards/{name} # Specific agent card
/api/v1/agents/registry # Full registry with status
Agents are defined in YAML with granular permissions:
# services/agents/welcome.yaml
agents:
welcome:
name: "welcome"
enabled: true
card:
protocolVersion: "0.3.0"
capabilities:
streaming: true
security:
- oauth2: ["anonymous"]
MCP Server Registry
Host MCP (Model Context Protocol) servers with built-in auth, discovery, and HTTP-native transports. Every MCP server is accessible to any compliant client — Claude Code, Claude Desktop, ChatGPT, and more.
/api/v1/mcp/registry # All MCP servers with endpoints
/api/v1/mcp/{name}/mcp # Streamable HTTP transport
MCP servers are also config-driven:
# services/mcp/systemprompt.yaml
mcp_servers:
systemprompt:
binary: "systemprompt-mcp"
port: 5010
endpoint: "http://localhost:8080/api/v1/mcp/systemprompt/mcp"
enabled: true
oauth:
required: true
scopes: ["admin"]
Config as Code
Your entire infrastructure lives in the services/ directory:
| Directory | Purpose |
|---|---|
services/agents/ |
Agent definitions with OAuth scopes and A2A cards |
services/mcp/ |
MCP servers with per-tool permissions |
services/skills/ |
Reusable agent capabilities |
services/content/ |
Markdown content (blog, docs, legal) |
services/scheduler/ |
Cron jobs and background tasks |
services/web/ |
Theme, branding, navigation |
All config changes deploy instantly — no code changes or rebuilds required.
Built-in Platform Services
Everything you need, out of the box:
- Authentication — OAuth2/OIDC + WebAuthn passwordless auth
- Permissions — Role-based, per-agent, per-tool scopes
- File Storage — Upload, serve, and manage files with metadata
- Content Management — Markdown ingestion, search, and publishing
- AI Integration — Multi-provider LLM support (Anthropic, OpenAI, Gemini)
- Analytics — Session tracking, metrics, and usage reporting
- Scheduling — Cron-based deterministic job execution
CLI Quick Start
The systemprompt CLI is the universal interface for managing agents, MCP servers, content, and infrastructure. The same CLI works locally during development and in production on your cloud instance.
Install
# From crates.io
cargo install systemprompt-cli
# Or build from source
git clone https://github.com/systempromptio/systemprompt-core
cd systemprompt-core && cargo build --release -p systemprompt-cli
Setup (Local)
# Start PostgreSQL
docker run -d --name systemprompt-db \
-e POSTGRES_DB=systemprompt \
-e POSTGRES_USER=systemprompt \
-e POSTGRES_PASSWORD=systemprompt \
-p 5432:5432 postgres:16
# Authenticate (free account)
systemprompt cloud auth login
# Create a local tenant and profile
systemprompt cloud tenant create --type local
systemprompt cloud profile create local
# Migrate and start
systemprompt infra db migrate
systemprompt infra services start --all
Setup (Cloud)
# Authenticate
systemprompt cloud auth login
# Create a cloud tenant (provisions managed DB + VM)
systemprompt cloud tenant create --region iad
# Create profile and deploy
systemprompt cloud profile create production
systemprompt cloud deploy --profile production
Your platform will be available at your tenant URL (e.g., https://my-tenant.systemprompt.io). Point your own domain via CNAME.
Common Commands
# Services
systemprompt infra services start # Start all services
systemprompt infra services status # Check status
# Agents
systemprompt admin agents list --enabled # List active agents
systemprompt admin agents message welcome -m "Hello" # Message an agent
# Content
systemprompt core content list # List all content
systemprompt core content ingest --source blog ./services/content/blog
# MCP
systemprompt plugins mcp # List MCP servers
# Database
systemprompt infra db status # DB health
systemprompt infra db tables # List tables
# Logs
systemprompt infra logs stream --level error
Playbooks
The CLI includes 19 built-in playbooks for step-by-step guidance:
systemprompt_help { "command": "playbook" } # List all playbooks
systemprompt_help { "command": "playbook session" } # Specific playbook
Available: agents, analytics, build, cloud, config, content, contexts, database, deploy, files, jobs, logs, plugins, services, session, skills, sync, users, web.
Connect Your MCP Client
systemprompt MCP servers work with any client that supports streamable HTTP transport. No local process management needed — connect directly over HTTP.
Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"systemprompt": {
"url": "https://your-tenant.systemprompt.io/api/v1/mcp/systemprompt/mcp",
"transport": "streamable-http"
}
}
}
Claude Code
claude mcp add systemprompt \
--transport http \
https://your-tenant.systemprompt.io/api/v1/mcp/systemprompt/mcp
Local Development
When running locally, connect to the local endpoint:
{
"mcpServers": {
"systemprompt": {
"url": "http://localhost:8080/api/v1/mcp/systemprompt/mcp",
"transport": "streamable-http"
}
}
}
Discovery
Use the registry endpoint to discover all available MCP servers and their connection details:
curl https://your-tenant.systemprompt.io/api/v1/mcp/registry
Each entry includes the server name, endpoint URL, description, and required OAuth scopes.
Architecture
systemprompt uses a layered crate architecture where dependencies flow downward only:
┌───────────────────────────────────────────────────────┐
│ ENTRY: api, cli │
├───────────────────────────────────────────────────────┤
│ APP: runtime, scheduler, generator, sync │
├───────────────────────────────────────────────────────┤
│ DOMAIN: users, oauth, ai, agent, mcp, files, content │
├───────────────────────────────────────────────────────┤
│ INFRA: database, events, security, config, logging │
├───────────────────────────────────────────────────────┤
│ SHARED: models, traits, identifiers, extension │
└───────────────────────────────────────────────────────┘
Extensions plug into the core without modifying it — implement Rust traits, register at runtime, and your code runs alongside the platform.