justapi Runtime
A production-grade Python web framework written in Rust. Rust owns the network/protocol stack; Python executes only application logic.
10-20x faster than FastAPI — see BENCHMARKS.md.
Project Status
Phase 40 — The JustAPI 2.0 "Singularity" Release (ready for publish)
All 39 prior phases complete. CI/CD pipeline overhauled: uv-based builds, cargo-deny security audit, Miri memory safety, OIDC trusted publishing to PyPI. See PLAN.md for the full roadmap.
Architecture
Kernel → epoll/io_uring → Connection Manager → tokio task
→ TLS (rustls) → HTTP parse (hyper) → Router (matchit)
→ Middleware chain (Rust: auth/CORS/rate-limit/compression)
→ Python boundary (typed, zero-copy request view via PyO3)
→ Application code (native Python handler)
→ Rust serializer (serde_json/simd-json)
→ Response write → Socket
justapi provides a single native Python API (Tier B) — the FastAPI replacement that runs entirely in Rust with zero-copy Python integration.
Quick Start
Python Native API
from justapi import JustAPIApp
app = JustAPIApp()
@app.get("/hello/{name}")
async def hello_handler(request):
name = request["path_params"]["name"]
return {"message": f"Hello {name}!"}
app.run("127.0.0.1:8080")
Install the package:
pip install justapi # via pip
uv pip install justapi # via uv (recommended)
uvx justapi create my_app # no install needed
Or build from source with maturin:
cd crates/justapi-py
maturin develop --release
CLI
# Run server with Rust-defined routes
justapi serve --addr 127.0.0.1:8080
# Generate a client SDK from your API
justapi gen-client --lang python
Features
| Area | Status |
|---|---|
| HTTP/1.1 & HTTP/2 | ✅ 324k req/s hello-world |
| WebSocket & SSE | ✅ Streaming, token-generation optimized |
| TLS (rustls) | ✅ 10.7% overhead |
| Middleware | ✅ CORS, SecurityHeaders, JWT, RateLimiter |
| JWT Auth | ✅ RS256/ES256, per-route roles/scopes |
| Serialization | ✅ serde_json, simd-json optional |
| Request Validation | ✅ JSON Schema, Pydantic bridge |
| OpenAPI Generation | ✅ Auto-generated /docs and /redoc |
| Database ORM | ✅ SQLite/PostgreSQL/MySQL via sqlx |
| gRPC | ✅ Native Tonic integration |
| GraphQL | ✅ async-graphql, Apollo Federation |
| Observability | ✅ OTel tracing, Prometheus metrics, structured logging |
| Resilience | ✅ Circuit breakers, retry, fallback, bulkhead |
| Rate Limiting | ✅ GCRA algorithm, Redis-backed |
| WASM Middleware | ✅ wasmtime embedded plugins |
| Agent DAG Engine | ✅ DAG orchestration in Rust |
| Background Tasks | ✅ Thread-safe task scheduling |
| Dependency Injection | ✅ Litestar-style tiered DI |
| Snapshot Testing | ✅ Built-in test utilities |
| Static Files | ✅ Range requests, MIME detection |
| Compression | ✅ gzip/deflate/brotli/zstd |
| Plugin System | ✅ Third-party plugin API |
| Memory Safety | ✅ Miri-verified unsafe blocks, 6 fuzz targets |
| Supply Chain Security | ✅ cargo-deny v0.20 — advisories, bans, licenses, sources |
Development
Prerequisites
- Rust 1.85+ (edition 2021)
- Python 3.11+
Building
cargo build --workspace # debug build
cargo build --workspace --release # release build
cargo test --workspace # run all tests (493+)
cargo clippy --workspace --tests -- -D warnings # lint
cargo fmt --check # format check
cargo deny check # supply chain security audit
cargo miri test -p justapi-core # memory safety (nightly)
Benchmarking
See BENCHMARKS.md for methodology and results.
# Install load generator
cargo install oha
# Run baseline benchmarks
bash benchmarks/run_baselines.sh
Project Structure
crates/
justapi-core/ — networking, protocol, scheduler, memory
justapi-py/ — PyO3 bindings, native Python API
justapi-cli/ — `justapi` CLI binary
justapi-bench/ — internal benchmark harness
python/
justapi/ — pip-installable Python package
fuzz/ — cargo-fuzz targets (6 targets)
docs/ — documentation
skills/ — reusable knowledge modules for development
benchmarks/ — workload scripts for performance testing
Documentation
- PLAN.md — Living roadmap and current status
- AGENTS.md — Development rules and conventions
- DECISIONS.md — Architecture decision records
- BENCHMARKS.md — Performance results ledger
- docs/security/ — Security policies and pentest guide
- docs/plugins.md — Plugin development guide
License
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file justapi-2.0.10-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: justapi-2.0.10-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 13.2 MB
- Tags: CPython 3.14t, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
22ba6df2b1fbbd446117c063688f4847cbab4403ebcc9448fb3b86c3428c8d66
|
|
| MD5 |
9412a7b8151a620f79ca081164359717
|
|
| BLAKE2b-256 |
68c53143d5c2918c55c95b14ef6579b4d8feb02fa1db6ef1a9c7edad27ab1d24
|
File details
Details for the file justapi-2.0.10-cp311-abi3-win_amd64.whl.
File metadata
- Download URL: justapi-2.0.10-cp311-abi3-win_amd64.whl
- Upload date:
- Size: 11.3 MB
- Tags: CPython 3.11+, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ff6941fe6d8bbf6ecb2bb87b41686a14bc835ab997d67a232a25b5349a64310e
|
|
| MD5 |
841df567a8dd2a4c000824cfd05a922b
|
|
| BLAKE2b-256 |
d13a52b547d9ec06c9fc08d9dc47666c3646d9aebdf57e0a58aed1b908ee2e59
|
File details
Details for the file justapi-2.0.10-cp311-abi3-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: justapi-2.0.10-cp311-abi3-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 12.6 MB
- Tags: CPython 3.11+, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b12e1b46a04e354df51f39f45d5b5a1575b3b4fe5c14aaee7e7edff5a04599c8
|
|
| MD5 |
60e6559349858e3137c78cf49a325f90
|
|
| BLAKE2b-256 |
6f5ca7e09c7f68f3e1a9627852e7abfa591a4a085b9a6f6978193b29334e9274
|
File details
Details for the file justapi-2.0.10-cp311-abi3-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: justapi-2.0.10-cp311-abi3-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 11.5 MB
- Tags: CPython 3.11+, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
10d4c4cb21ea2ab3dd735ade1502c80158657f8a84e655405e9415e2ecb28acf
|
|
| MD5 |
9e3b6a612090463c3f41f89ec3a59c34
|
|
| BLAKE2b-256 |
904d7289ea52b3d028bd02f7c38c466aad4075f9a23c5ab5c09c53ae66420ffc
|
File details
Details for the file justapi-2.0.10-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: justapi-2.0.10-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 12.6 MB
- Tags: CPython 3.11+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
343ba1dcc202968a35f80894c5f4c0fa753d6f3d264761be0a2d2fbb3829a3ea
|
|
| MD5 |
3cd544e29933fd959790571201de6350
|
|
| BLAKE2b-256 |
9ea2e677bd2a01db771b89f47b298639ddcf0b23297d9400db9b67a2b92d7c5b
|
File details
Details for the file justapi-2.0.10-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: justapi-2.0.10-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 11.5 MB
- Tags: CPython 3.11+, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ba4e1c678031c050c1d24cf8eba89d57a1763881baa30cd6b0e0163098c334c2
|
|
| MD5 |
da37bc9a67717b089a576182e03a4b14
|
|
| BLAKE2b-256 |
64d56082de16e37ab5635425a951f8b70c1422a5778fe21434cd7cbd31d77ce7
|
File details
Details for the file justapi-2.0.10-cp311-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: justapi-2.0.10-cp311-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 10.5 MB
- Tags: CPython 3.11+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e98cb530d45d8cf3c77edb7f5452890e6d4f5ba5304708330ebe24b53d31868
|
|
| MD5 |
e24dde2cc6cf9d94b783077f9333ba7a
|
|
| BLAKE2b-256 |
ea3abed91fa16e24bf9ce578b51c8739ddf162af73dc16fc2d6faf74b37af4a4
|
File details
Details for the file justapi-2.0.10-cp311-abi3-macosx_10_12_x86_64.whl.
File metadata
- Download URL: justapi-2.0.10-cp311-abi3-macosx_10_12_x86_64.whl
- Upload date:
- Size: 18.2 MB
- Tags: CPython 3.11+, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d2b2938616f5ddf68943416129bcbf9384fb59773f9848810bd73ac7ec759fa0
|
|
| MD5 |
d728a3d945a33b08d111f7f072febd92
|
|
| BLAKE2b-256 |
338312fe7fb380be8f150a3f98631c9a6ad4cf479852d6177467e2e9b358a649
|