Active development — APIs and configuration may change between releases as AURA evolves. Issues and feature requests are welcome — we’d love your feedback.
Part of the AURA Project - A production-ready framework for building AI agents with declarative TOML configuration.
When to run the server
The CLI starts an agent per terminal session, which suits interactive work. Runningaura webserver instead keeps agents resident behind an HTTP API, so a caller that isn’t a person at a keyboard can start a run: an alert pipeline reacting to a firing monitor, a scheduled job, a CI step, or a chat client such as LibreChat or OpenWebUI.
Requests arrive as OpenAI chat completions, so any system that already speaks that format can call AURA directly. The server exposes no alert-specific receiver, so a monitoring tool that posts its own schema (Alertmanager and PagerDuty webhooks, for example) needs a small adapter to translate its payload into a chat completion request. Long-running investigations can stream progress back over SSE; see the Streaming API Guide.
Features
- OpenAI Compatible: Implements
/v1/chat/completionsendpoint following OpenAI’s API schema - Multi-Turn Conversations: Maintains conversation context across requests
- Full Tool Integration: Supports all MCP transports (HTTP, SSE, STDIO) and client-side tool passthrough
- Health Monitoring:
/healthendpoint for container health checks - Production Ready: Stateless processing with pre-built agent, Docker-ready
Quick Start
API Endpoints
Health Check
List Models (Agents)
alias (or name if no alias is set) is its model id. The owned_by field defaults to the underlying LLM provider (e.g. "openai", "anthropic") and can be overridden with model_owner in the agent config. Clients like LibreChat and OpenWebUI use this endpoint to populate their model picker.
Each entry can also carry a description, a human-readable summary sourced from the agent’s [agent].description config (see the configuration reference). This extends the OpenAI model object. The key is omitted when [agent].description is unset, so strict OpenAI clients can ignore it.
The /aura/info endpoint reports this same per-agent description; both read the agent’s [agent].description config value rather than computing it independently. /v1/models alone is enough to populate a model picker in an OpenAI-compatible client.
Response:
Chat Completions
model field selects which agent handles the request by matching against agent alias or name. Agent selection follows this order:
- If only one config is loaded, it is always used (the
modelfield is ignored) - Otherwise,
modelis matched first, thenDEFAULT_AGENTifmodelis absent - Returns a 400 error if multiple configs are loaded and neither
modelnorDEFAULT_AGENTis supplied at all - Returns a 404 error if a
modelorDEFAULT_AGENTvalue is supplied but matches no loaded config
Testing with curl
Configuration
The server uses the AURA TOML configuration system. See the configuration reference for:- LLM provider configuration (OpenAI, Anthropic, Bedrock, Gemini, Ollama, OpenRouter)
- MCP server setup (HTTP, SSE, STDIO)
- Vector store and RAG integration
- Agent settings and prompts
examples/ directory — see Example Configs.
Architecture
- Multi-Agent Serving: Load multiple agents from a config directory, selectable via the
modelfield - Stateless Requests: Each HTTP request is processed independently
- Multi-Turn Support: Conversation history passed via messages array
- OpenAI Compatible: Request/response schemas match OpenAI’s format
- Error Handling: Proper HTTP status codes and error responses
Deployment
Environment Variables:See Also
- AURA on GitHub — source, issues, and contributing

