Configuration Reference

Complete reference for all SystemPrompt configuration options

Complete reference for all SystemPrompt configuration files and options.

Configuration Files

File Purpose
~/.config/systemprompt/profiles/*.yaml Profile configuration
~/.config/systemprompt/secrets.yaml Encrypted secrets
services/config/*.yaml Service configuration
services/agents/*.yaml Agent definitions
services/mcp/*.yaml MCP server definitions
services/web/config.yaml Web configuration
services/content/config.yaml Content sources

Profile Configuration

Location: ~/.config/systemprompt/profiles/<name>.yaml

name: local
tenant_id: abc123

database:
  type: postgres          # postgres, sqlite
  host: localhost
  port: 5432
  database: systemprompt
  username: systemprompt
  pool:
    max_connections: 10   # Connection pool size
    min_connections: 1
    idle_timeout: 600     # Seconds

api:
  host: 0.0.0.0
  port: 3000
  base_url: http://localhost:3000
  cors:
    allowed_origins:
      - http://localhost:3000
    allowed_methods:
      - GET
      - POST
      - PUT
      - DELETE

logging:
  level: info             # trace, debug, info, warn, error
  format: pretty          # pretty, json
  file: null              # Optional log file path

features:
  mcp: true               # Enable MCP servers
  agents: true            # Enable agents
  scheduler: true         # Enable job scheduler
  analytics: true         # Enable analytics

Service Configuration

AI Providers

Location: services/config/ai.yaml

providers:
  anthropic:
    model: claude-sonnet-4-20250514
    max_tokens: 4096
    temperature: 0.7
    # API key loaded from secrets

  openai:
    model: gpt-4o
    max_tokens: 4096
    temperature: 0.7

  gemini:
    model: gemini-pro
    max_tokens: 4096

default_provider: anthropic

rate_limits:
  requests_per_minute: 60
  tokens_per_minute: 100000

Scheduler

Location: services/config/scheduler.yaml

enabled: true
timezone: UTC

defaults:
  timeout: 300            # Job timeout in seconds
  retries: 3
  retry_delay: 60

jobs:
  daily_cleanup:
    cron: "0 0 * * *"     # Daily at midnight
    task: "maintenance:cleanup"
    enabled: true
    timeout: 600

  hourly_sync:
    cron: "0 * * * *"     # Every hour
    task: "sync:content"
    enabled: true

OAuth

Location: services/config/oauth.yaml

issuer: https://your-domain.com
token_lifetime: 3600        # Access token lifetime (seconds)
refresh_lifetime: 604800    # Refresh token lifetime (seconds)
code_lifetime: 600          # Auth code lifetime (seconds)

clients:
  - id: web-app
    name: Web Application
    secret_hash: null       # Public client
    redirect_uris:
      - http://localhost:3000/callback
      - https://your-domain.com/callback
    scopes:
      - openid
      - profile
      - chat
    grant_types:
      - authorization_code
      - refresh_token

  - id: service-account
    name: Service Account
    # Secret loaded from secrets
    scopes:
      - admin
    grant_types:
      - client_credentials

scopes:
  openid:
    description: OpenID Connect
  profile:
    description: User profile
  chat:
    description: Chat with agents
  admin:
    description: Administrative access

Agent Configuration

Location: services/agents/<name>.yaml

name: blog
display_name: Blog Assistant
description: Helps create and manage blog content

# A2A Protocol Card
a2a:
  version: "1.0"
  capabilities:
    - chat
    - tools
  transport:
    type: http
    endpoint: /api/v1/agents/blog

# Security
security:
  oauth:
    required: true
    scopes:
      - chat
      - admin

# System prompt
system_prompt: |
  You are a helpful blog assistant. Help users create,
  edit, and publish blog content.

# Skills assigned to this agent
skills:
  - content_writing
  - general_assistance

# LLM configuration
llm:
  provider: anthropic
  model: claude-sonnet-4-20250514
  max_tokens: 4096
  temperature: 0.7

# MCP servers this agent can access
mcp_servers:
  - content-manager
  - file-manager

# Runtime configuration
runtime:
  enabled: true
  auto_start: true
  restart_on_failure: true

MCP Server Configuration

Location: services/mcp/<name>.yaml

name: content-manager
display_name: Content Manager
description: Tools for content management

# Binary to run
binary: mcp-content-manager

# Endpoint configuration
endpoint:
  path: /api/v1/mcp/content-manager/mcp
  transport: streamable-http

# OAuth requirements
oauth:
  required: true
  scopes:
    - admin

# Tool permissions
tools:
  create_content:
    description: Create new content
    oauth:
      scopes:
        - admin

  list_content:
    description: List all content
    oauth:
      scopes:
        - chat

# Resource permissions
resources:
  content:
    description: Access content
    oauth:
      scopes:
        - chat

Web Configuration

Location: services/web/config.yaml

branding:
  name: "SystemPrompt"
  title: "SystemPrompt - AI Infrastructure"
  description: "Production infrastructure for AI agents"
  themeColor: "#f79938"

colors:
  dark:
    primary:
      hsl: "hsl(28, 91%, 60%)"
    background:
      hsl: "hsl(0, 0%, 7%)"
    surface:
      hsl: "hsl(0, 0%, 10%)"
    text:
      primary: "hsl(0, 0%, 95%)"
      secondary: "hsl(0, 0%, 70%)"

typography:
  fontFamily:
    heading: "'Inter', sans-serif"
    body: "'Inter', sans-serif"
    mono: "'SF Mono', monospace"

navigation:
  header:
    - path: /documentation
      label: Docs
    - path: /blog
      label: Blog
  footer:
    resources:
      - path: /documentation
        label: Documentation
      - path: /blog
        label: Blog
    company:
      - path: /legal/privacy
        label: Privacy
      - path: /legal/terms
        label: Terms

content:
  config_file: services/content/config.yaml
  sources:
    - blog
    - docs
    - legal

seo:
  site_name: SystemPrompt
  locale: en_US
  twitter_handle: "@systemprompt"

Content Configuration

Location: services/content/config.yaml

content_sources:
  blog:
    path: content/blog
    source_id: blog
    category_id: blog
    enabled: true
    description: Blog posts
    allowed_content_types:
      - article
      - tutorial
      - guide
    branding:
      name: Blog
      description: Technical articles
    indexing:
      recursive: true
    sitemap:
      enabled: true
      url_pattern: "/blog/{slug}"
      priority: 0.8
      changefreq: weekly

  docs:
    path: content/docs
    source_id: docs
    category_id: documentation
    enabled: true
    description: Documentation
    allowed_content_types:
      - guide
      - reference
      - tutorial
    sitemap:
      enabled: true
      url_pattern: "/documentation/{slug}"
      priority: 0.7

categories:
  blog:
    name: Blog
    slug: blog
  documentation:
    name: Documentation
    slug: documentation

Environment Variables

While profiles are preferred, these environment variables are supported:

Variable Description
SYSTEMPROMPT_PROFILE Active profile name
SYSTEMPROMPT_LOG_LEVEL Override log level
DATABASE_URL Full database URL
RUST_LOG Rust logging filter

Secrets

Secrets are stored encrypted at ~/.config/systemprompt/secrets.yaml.

Set secrets via CLI:

systemprompt admin config set-secret database.password "secret"
systemprompt admin config set-secret anthropic.api_key "sk-..."
systemprompt admin config set-secret openai.api_key "sk-..."

Available secret paths:

Path Description
database.password Database password
anthropic.api_key Anthropic API key
openai.api_key OpenAI API key
google.api_key Google API key
oauth.client_secret.* OAuth client secrets