PRAXIS / v0.7.2 DOCUMENTATION

Praxis docs.
From setup to runtime.

Install, configure, and operate this release. Explore filters, architecture, and exact settings when you need them.

Release indexv0.7.2 / Source documentation
On this page

Praxis is a high-performance, security-first proxy framework with a composable filter pipeline for routing, load balancing, and security. AI Gateway docs live in praxis-ai overview.

Getting started

Operating Praxis

Contributing

Architecture

Filter Development

Reference


Adding a Built-in Filter

Review the HTTP filter tutorial and extensions guide first.

Adding a Protocol

Protocols translate between external network protocols and the internal filter pipeline.

Architecture Overview

How Praxis combines protocol handling, filter pipelines, and upstream binding to build a configurable proxy.

Benchmarks

Praxis benchmark suites measure proxy throughput and latency alongside the cost of filter pipeline operations.

Body Buffering and StreamBuffer

How body chunks flow through the filter pipeline, how delivery modes interact, and how size limits layer.

Build features

Praxis is composed at build time with Cargo features.

Capacity Planning: File Descriptors

Estimate file descriptor use from client and upstream connections, subrequests, DNS lookups, and configured connection limits before deployment.

Configuration

Configure listeners, filter chains, upstream clusters, limits, administration, and runtime behavior with Praxis’s YAML file.

Connection Lifecycle

Follow a client connection through accept, TLS setup, HTTP decoding, filter execution, and response delivery.

Crate Layout

praxis : Binary entry point. Loads YAML config, resolves per-listener filter chains into pipelines, registers protocol handlers, starts the server.

Deep Review Criteria

This document lists the criteria that matter most when deeply analyzing the Praxis codebase to find improvements.

Dependency Policy & Review

Praxis keeps its dependency tree small, pinned, and auditable. This page documents the policy, the enforcement tooling, and a provenance review of every direct workspace dependency.

Development Conventions

default unit of organization. Split code into small files with focused responsibilities.

Examples

Browse 128 tracked YAML configurations for Praxis, organized by task and setup needs.

Features

general-purpose provided builds, or extend your own custom proxy server using the Praxis framework.

Filters

Filters are the core processing units in Praxis. Each filter is a small (preferably), composable function that inspects or transforms traffic at a single point in the request/response lifecycle.

FIPS 140-3

Praxis does all of its cryptography in the system OpenSSL library.

FIPS Tooling

Local checks that a praxis build is on track for FIPS 140-3 on Red Hat Enterprise Linux.

Getting Started

signature verification and Red Hat’s scanner need Podman on Linux)

Health Checking

Praxis monitors upstream endpoint availability using active probes and passive observation. Unhealthy endpoints are automatically removed from load balancer rotation and restored when they recover.

HTTP Correctness

A proxy must enforce HTTP invariants that upstream servers and downstream clients may not. These are critical correctness and security concerns.

Life of a Request

This document traces a single HTTP request from arrival to response through the Praxis proxy.

Load Balancing

Praxis distributes requests across upstream endpoints using configurable load-balancing strategies.

Observability

Praxis exposes Prometheus metrics, structured access logs, and health endpoints for monitoring proxy behavior. This guide covers setup, metric reference, logging configuration, and usage patterns.

Payload Processing

Filters declare body access needs at construction time via request_body_access(), response_body_access(), and the corresponding _body_mode() methods.

Pingora Handler Lifecycle

This document describes how Praxis implements Pingora’s ProxyHttp trait to bridge the hook-based HTTP lifecycle into the Praxis filter pipeline.

Pipeline Concepts

This document covers the pipeline system: how YAML configuration becomes a running filter pipeline, how filters communicate, and how conditional branching works.

Project Management

All repositories in the praxis-proxy organization use a consistent workflow for planning, prioritizing, and tracking work.

Quickstart

Build Praxis from source for local development, then route a request to an upstream backend.

Release Process

Praxis uses Semantic Versioning. The workspace version is the single source of truth, defined in workspace.package.version in the root Cargo.toml. All workspace crates inherit this version.

Security Hardening Guide

Security is a primary motivation of Praxis, not an afterthought. This guide covers the secure defaults and operational hardening for production deployments.

TCP Proxy

Design of the raw TCP/L4 bidirectional forwarding protocol adapter.

TLS

Configure downstream and upstream TLS for common listener and backend scenarios.

Type Design

Make invalid states unrepresentable. The type system and serde should enforce constraints at parse time, not at runtime.

Upstream Binding

A logical upstream binding pins one cluster to a request for the whole downstream request, so later filters can act on that cluster without running a second router.