Quickstart
Build Praxis from source for local development, then route a request to an upstream backend.
On this page
Quick Test Servers
For rapid experimentation without building or configuring, use the xtask utilities:
Echo server (static responses):
cargo xtask echo
curl http://127.0.0.1:8080/
# {"status": "ok"}
Customize responses:
cargo xtask echo --status 201 --body '{"created": true}' --header "X-Custom: value"
Debug server (run with dev settings):
cargo xtask debug
# Runs with debug logging, admin API on :9090, single-threaded
Pass a config file:
cargo xtask debug examples/configs/traffic-management/basic-reverse-proxy.yaml
Build and Run
Build the release binary:
make release
Start Praxis:
./target/release/praxis
The server starts on 127.0.0.1:8080 with a built-in
default configuration. Verify it:
curl http://127.0.0.1:8080/
{"status": "ok", "server": "praxis"}
Proxy to a backend
Create praxis.yaml:
# The backend below is on loopback, which the SSRF endpoint check
# rejects unless you opt in. Drop this block once your backends are
# on real addresses.
insecure_options:
allow_private_endpoints: true
listeners:
- name: web
address: "127.0.0.1:8080"
filter_chains: [main]
filter_chains:
- name: main
filters:
- filter: router
routes:
- path_prefix: "/"
cluster: backend
- filter: load_balancer
clusters:
- name: backend
endpoints:
- "127.0.0.1:3000"
Note: Praxis rejects upstream endpoints that resolve to loopback, link-local, or cloud-metadata addresses by default, as an SSRF guard.
insecure_options.allow_private_endpoints: trueopts a config into using them — appropriate for local development, not for production configs pointing at real backends.
Start Praxis with your config:
./target/release/praxis -c praxis.yaml
Requests to port 8080 are now forwarded to your backend on port 3000:
curl http://127.0.0.1:8080/
Next steps
- Configuration: filter chains, routing, load balancing, TLS, and all options.
- Example configs: working YAML for every feature.
- Filters: built-in filters and how to write your own.
- HTTP Filter Tutorial: build and run a custom filter from scratch.