systemprompt.io
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).
Table of Contents
Why systemprompt.io?
Frameworks give you building blocks. We give you the building.
| Problem | How others solve it | systemprompt.io |
|---|---|---|
| Agent auth | Build it yourself | OAuth2/OIDC + WebAuthn built-in |
| User permissions | Build it yourself | Role-based, per-agent, per-tool scopes |
| MCP hosting | Run locally only | Production deployment with auth |
| Multi-agent | Orchestration libraries | A2A protocol with shared state |
| Deployment | Figure it out | One command to cloud or self-host |
Core capabilities:
- Complete Runtime: Web API + agent processes + MCP servers with shared auth and database
- Open Standards: MCP, A2A, OAuth2, WebAuthn - no vendor lock-in
- Agent-Executable CLI: Your AI manages infrastructure directly via the same CLI you use
- Native Rust: Async-first on Tokio, zero-cost abstractions
- Self-Hosted or Cloud: Docker locally, or deploy to isolated VM with managed database
- 100% Extensible: Build proprietary Rust extensions on the open core
What You Get
A complete platform with built-in:
- User Authentication: OAuth2/OIDC, sessions, roles, and permissions
- File Storage: Upload, serve, and manage files with metadata
- Content Management: Markdown ingestion, search, and publishing
- AI Integration: Multi-provider LLM support with request logging
- Analytics: Session tracking, metrics, and usage reporting
- Agent Orchestration: A2A protocol for agent-to-agent communication
- MCP Servers: Tool and resource providers for AI clients
Quick Start
Prerequisites
- Rust 1.75+
- Docker (for local PostgreSQL) OR systemprompt.io Cloud account
Install the CLI
Option A: Install from crates.io
Option B: Build from source
Setup
All setup is done through the CLI. Choose your database option:
Option 1: Local PostgreSQL (Free)
# Start PostgreSQL in Docker
# Login to systemprompt.io Cloud (free account - enables CLI profile management)
# Create a local tenant with your Docker database
# Create and configure your profile
# Run database migrations
# Start services
Option 2: systemprompt.io Cloud (Paid)
Production-ready agentic mesh served over the web. Cloud deployment includes your code and managed PostgreSQL running together as a complete platform. Point your DNS and deploy your web frontend chained to your agents.
# Login to systemprompt.io Cloud
# Create a cloud tenant (provisions your full platform instance)
# Create and configure your profile
# Deploy to cloud
Your agentic mesh will be deployed in the region of your choice and available at your tenant URL (e.g., https://my-tenant.systemprompt.io). This can be easily used (CNAME) to run your own web accessible agent mesh and domain.
Native MCP Client Support
Works out of the box with any MCP client - Claude Code, Claude Desktop, ChatGPT, and more. All transports are HTTP-native, supported by modern MCP clients.
// claude_desktop_config.json
Your AI can now manage your entire infrastructure: deploy updates, query analytics, manage users, and orchestrate agents - all through natural conversation.
Discovery API
Get agent and MCP connection details from the API at any time:
| Endpoint | Description |
|---|---|
/.well-known/agent-card.json |
Default agent card |
/.well-known/agent-cards |
List all available agents |
/.well-known/agent-cards/{name} |
Specific agent card |
/api/v1/agents/registry |
Full agent registry with status |
/api/v1/mcp/registry |
All MCP servers with endpoints |
Config as Code
Define your entire infrastructure in the services/ directory - granular permissions for agents, MCP tools, and users backed by production-grade OAuth2 and WebAuthn:
services/
├── agents/ # Agent definitions with OAuth scopes
│ └── blog.yaml # security: [oauth2: ["admin"]]
├── mcp/ # MCP servers with per-tool permissions
│ └── content.yaml # oauth: { required: true, scopes: ["admin"] }
├── skills/ # Reusable agent capabilities
├── ai/ # Provider configs (Anthropic, OpenAI, Gemini)
├── content/ # Markdown content sources
├── scheduler/ # Cron jobs and background tasks
└── web/ # Theme, branding, navigation
Granular Security:
- Agents: OAuth2 scopes define who can interact with each agent
- MCP Tools: Per-tool OAuth requirements and audience restrictions
- Users: WebAuthn passwordless auth with role-based permissions
- All config changes deploy instantly - no code changes required
CLI - Universal Agent Interface
The CLI executes any task, sends messages to agents, and invokes MCP tools in any environment. Enable local-to-remote and remote-to-remote agentic flows:
# Send a message to an agent
# List available MCP tools
# Execute from local to remote, or remote to remote
The same CLI runs locally during development and in production on your cloud instance - your AI can manage infrastructure from anywhere.
Scheduling - Deterministic Tasks
Run scheduled jobs when you need predictable, time-based execution:
# services/scheduler/daily-analytics.yaml
jobs:
daily_report:
cron: "0 9 * * *"
task: "analytics:generate_daily_report"
enabled: true
# List scheduled jobs
# Run a job manually
# View execution history
Scheduling complements agentic flows - use agents for dynamic reasoning and schedulers for deterministic tasks.
Building Your Own Project
Use the systemprompt-template to create a new project with the recommended structure for agents, MCP servers, and content.
Using as a Library
Build your own extensions by adding the facade to your Cargo.toml:
[]
= { = "0.0.1", = ["full"] }
Architecture
systemprompt.io uses a layered crate architecture:
┌─────────────────────────────────────────────────────────┐
│ 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 │
└─────────────────────────────────────────────────────────┘
Dependencies flow downward only. Domain crates communicate via traits and events, not direct dependencies.
See full architecture documentation for details on all 25+ crates.
Extension Framework
Extensions enable downstream projects to extend core functionality without modifying it.
use *;
;
register_extension!;
register_api_extension!;
Available extension traits:
| Trait | Purpose |
|---|---|
Extension |
Base trait - ID, name, version, dependencies |
SchemaExtension |
Database table definitions |
ApiExtension |
HTTP route handlers |
ConfigExtensionTyped |
Config validation at startup |
JobExtension |
Background job definitions |
ProviderExtension |
Custom LLM/tool provider implementations |
Extensions are discovered at runtime via the inventory crate.
Versioning
Follows Semantic Versioning:
- Major: Breaking API changes
- Minor: New features, backward compatible
- Patch: Bug fixes, backward compatible
Current version: 0.0.1
License
FSL-1.1-ALv2 (Functional Source License) - see LICENSE for details.