Skip to main content
Ultra uses a YAML configuration file to define upstream servers, observability settings, and Hub connection details.

Config Search Order

Ultra searches for configuration files in this order (first match wins):
  1. ultra.yaml or ultra.yml (current directory)
  2. .ultra.yaml or .ultra.yml (current directory)
  3. $XDG_CONFIG_HOME/ultra/config.yaml (default: ~/.config/ultra/config.yaml)
  4. $XDG_CONFIG_HOME/ultra/config.yml
  5. ~/.ultra.yaml or ~/.ultra.yml
If no config file is found, Ultra uses sensible defaults.

Show Config Path

ultra config path

Default Config Path

~/.config/ultra/config.yaml

Full Example

version: "1"

server:
  name: ultra
  log_level: info    # debug, info, warn, error

upstream:
  filesystem:
    command: npx
    args: ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
    enabled: true
    description: "Local filesystem access"

  github:
    command: npx
    args: ["-y", "@modelcontextprotocol/server-github"]
    env:
      GITHUB_TOKEN: "ghp_xxxxxxxxxxxx"
    enabled: true

  notion:
    url: "https://mcp.notion.so"
    headers:
      Authorization: "Bearer secret_xxxxxxxxxxxx"
    enabled: true

policy:
  enabled: false     # Not yet implemented
  path: ""

observability:
  enabled: false     # Set to true for OTLP export
  endpoint: ""       # e.g., "localhost:4317"
  service_name: ultra

hub:
  enabled: false
  url: "https://hub.ultra.security"
  sync_interval: "60s"
  offline_mode: false

Configuration Reference

server

FieldTypeDefaultDescription
namestring"ultra"Server name advertised to MCP clients
log_levelstring"info"Logging level: debug, info, warn, error

upstream

A map of named upstream MCP servers. Each server uses either stdio transport (command) or HTTP transport (url).
FieldTypeRequiredDescription
commandstringFor stdioCommand to execute
argsstring[]NoCommand arguments
envmapNoEnvironment variables
urlstringFor HTTPHTTP URL for remote servers
headersmapNoHTTP headers (e.g., auth tokens)
enabledboolNoWhether this server is active (default: false)
descriptionstringNoHuman-readable description
Each upstream must specify either command or url, not both.

observability

FieldTypeDefaultDescription
enabledboolfalseEnable OTLP telemetry export
endpointstring""OTLP endpoint (e.g., localhost:4317)
service_namestring"ultra"Service name for telemetry

hub

FieldTypeDefaultDescription
enabledboolfalseEnable Hub sync
urlstring"https://hub.ultra.security"Hub API URL
gateway_idstringAssigned by Hub during linking
sync_intervalstring"60s"Sync frequency (e.g., "60s", "5m")
offline_modeboolfalseAllow operation without Hub connectivity
deploy_keystringStatic API key for CI/headless deployments
Hub authentication tokens (access_token, refresh_token, token_expiry) are managed automatically by ultra login and should not be edited manually.

policy

FieldTypeDefaultDescription
enabledboolfalseEnable policy evaluation
pathstring""Path to policy files
The policy engine is not yet implemented. This config block exists as a placeholder. See Roadmap: Policy Engine.

File Permissions

The config file is saved with 0600 permissions (owner read/write only) because it may contain authentication tokens and API keys.

Programmatic Config Management

Use ultra config subcommands to modify configuration:
# Set an auth token for a server
ultra config set-token github-mcp-server YOUR_TOKEN

# Set a custom header
ultra config set-header my-server X-API-Key YOUR_KEY

# Show config file path
ultra config path