Praxis AI is an AI gateway built on Praxis. It brings provider-aware routing, protocol translation, stateful OpenAI APIs, and agent traffic into a configurable proxy. Clients keep their API shape while the gateway selects backends and applies policy.
- Route by what a request contains. Classify OpenAI Responses, Chat Completions, and Anthropic Messages traffic; select backends by API format, model, or MCP tool name. See the unified gateway and intelligent routing examples.
- Proxy or translate provider APIs. Forward native provider traffic or serve Anthropic Messages and OpenAI Responses clients from Chat Completions-compatible backends, including streaming responses. See the Anthropic and Responses examples.
- Code harness support. Run Codex through OpenAI Responses and Claude Code through Anthropic Messages. The coding client guide shows both clients reaching native vLLM endpoints or Chat Completions through translation.
- Manage OpenAI response state. Persist and rehydrate Responses history, serve Conversations endpoints locally, and use PostgreSQL or SQLite for storage. See the response store guide and Conversations example.
- Connect tools and agents. Run Responses tool loops with MCP, web search, and file search; route stateless MCP calls and A2A task follow-ups. See the agentic Responses, MCP broker, and A2A routing examples.
- Apply policy and measure usage. Inject upstream credentials, enrich prompts, call external guardrails, expose token usage, and report metering data. See the feature overview for details.
- Extend the pipeline with custom Rust filters built on Praxis's
HttpFilterinterface.
See the complete feature overview and filter reference for the full list.
Clients keep their provider-native protocols while Praxis AI classifies, transforms, and routes traffic through one policy-driven gateway.
Praxis supplies the proxy runtime, listeners, TLS, load balancing, and filter framework. Praxis AI packages the AI-specific filters and server on top of it. Keeping them in separate repositories lets the AI integrations evolve independently while Praxis remains useful for general proxy workloads. See our conventions for the project structure and development practices.
Build and start the gateway with its built-in configuration:
make release
./target/release/praxis-aimake release builds the full feature set. A plain
cargo build -p praxis-ai-proxy builds the smaller standard set, which
leaves out the stateful OpenAI filter groups and their dependencies; see
Cargo features.
Then check that it is running:
curl http://127.0.0.1:8080/{"status": "ok", "server": "praxis-ai"}Ready to connect a backend? Follow the quickstart, or choose from the example configurations for OpenAI, Anthropic, MCP, A2A, routing, guardrails, token usage, and more.
| If you want to… | Start here |
|---|---|
| Run Praxis AI locally | Quickstart |
| Browse supported capabilities | Feature overview |
| Configure a filter | Filter reference |
| Understand the design | Architecture docs |
| Build or test the workspace | Development guide |
| Add a new filter | Adding filters |
Praxis AI handles the AI-specific layer. For listeners, TLS, load balancing, rate limiting, health checks, and other core proxy features, visit the Praxis repository.
Important
Praxis AI is alpha software. APIs, configuration, and operational
behavior may change before v1.0.0. See the security policy
for the supported release line.
Released container images are available from
ghcr.io/praxis-proxy/ai. Source builds and local
development instructions are in the development guide.
docker pull ghcr.io/praxis-proxy/ai:latestPodman can pull the same OCI image. See the quickstart for a source build
and the release documentation for image contents and tagging. A FIPS 140-3
build for Red Hat Enterprise Linux hosts is published under the same tags
with a -fips suffix (for example latest-fips); see
FIPS 140-3.
Contributions are welcome, from bug reports and documentation fixes to new filters and protocol support. Before opening a pull request, please read the contributing guide and development setup.
For larger changes, open a feature request and follow the proposal process so we can shape the idea together.
Open an issue · Request a feature · Open a pull request
Apache 2.0