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
Metadata
Release files for justapi 2.0.10
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| justapi-2.0.10-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.14 | CPython 3.14 free-threading | Linux glibc 2.17+ x86-64 | Details |
| justapi-2.0.10-cp311-abi3-win_amd64.whl | CPython 3.11 | abi3 | Windows x86-64 | Details |
| justapi-2.0.10-cp311-abi3-musllinux_1_2_x86_64.whl | CPython 3.11 | abi3 | Linux musl 1.2+ x86-64 | Details |
| justapi-2.0.10-cp311-abi3-musllinux_1_2_aarch64.whl | CPython 3.11 | abi3 | Linux musl 1.2+ ARM64 | Details |
| justapi-2.0.10-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.11 | abi3 | Linux glibc 2.17+ x86-64 | Details |
| justapi-2.0.10-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | CPython 3.11 | abi3 | Linux glibc 2.17+ ARM64 | Details |
| justapi-2.0.10-cp311-abi3-macosx_11_0_arm64.whl | CPython 3.11 | abi3 | macOS 11.0+ ARM64 | Details |
| justapi-2.0.10-cp311-abi3-macosx_10_12_x86_64.whl | CPython 3.11 | abi3 | macOS 10.12+ x86-64 | Details |
Total release size: 101.6 MB
Release files / justapi-2.0.10-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | justapi-2.0.10-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 13.2 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
22ba6df2b1fbbd446117c063688f4847cbab4403ebcc9448fb3b86c3428c8d66
|
|
BLAKE2b-256 checksum How to use checksums |
68c53143d5c2918c55c95b14ef6579b4d8feb02fa1db6ef1a9c7edad27ab1d24
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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}
|
Release files / justapi-2.0.10-cp311-abi3-win_amd64.whl
| Download URL | justapi-2.0.10-cp311-abi3-win_amd64.whl |
|---|---|
| Size | 11.3 MB |
| Tags | CPython 3.11 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
ff6941fe6d8bbf6ecb2bb87b41686a14bc835ab997d67a232a25b5349a64310e
|
|
BLAKE2b-256 checksum How to use checksums |
d13a52b547d9ec06c9fc08d9dc47666c3646d9aebdf57e0a58aed1b908ee2e59
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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}
|
Release files / justapi-2.0.10-cp311-abi3-musllinux_1_2_x86_64.whl
| Download URL | justapi-2.0.10-cp311-abi3-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 12.6 MB |
| Tags | CPython 3.11 Linux musl 1.2+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
b12e1b46a04e354df51f39f45d5b5a1575b3b4fe5c14aaee7e7edff5a04599c8
|
|
BLAKE2b-256 checksum How to use checksums |
6f5ca7e09c7f68f3e1a9627852e7abfa591a4a085b9a6f6978193b29334e9274
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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}
|
Release files / justapi-2.0.10-cp311-abi3-musllinux_1_2_aarch64.whl
| Download URL | justapi-2.0.10-cp311-abi3-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 11.5 MB |
| Tags | CPython 3.11 Linux musl 1.2+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
10d4c4cb21ea2ab3dd735ade1502c80158657f8a84e655405e9415e2ecb28acf
|
|
BLAKE2b-256 checksum How to use checksums |
904d7289ea52b3d028bd02f7c38c466aad4075f9a23c5ab5c09c53ae66420ffc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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}
|
Release files / justapi-2.0.10-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | justapi-2.0.10-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 12.6 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
343ba1dcc202968a35f80894c5f4c0fa753d6f3d264761be0a2d2fbb3829a3ea
|
|
BLAKE2b-256 checksum How to use checksums |
9ea2e677bd2a01db771b89f47b298639ddcf0b23297d9400db9b67a2b92d7c5b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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}
|
Release files / justapi-2.0.10-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | justapi-2.0.10-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 11.5 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
ba4e1c678031c050c1d24cf8eba89d57a1763881baa30cd6b0e0163098c334c2
|
|
BLAKE2b-256 checksum How to use checksums |
64d56082de16e37ab5635425a951f8b70c1422a5778fe21434cd7cbd31d77ce7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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}
|
Release files / justapi-2.0.10-cp311-abi3-macosx_11_0_arm64.whl
| Download URL | justapi-2.0.10-cp311-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 10.5 MB |
| Tags | CPython 3.11 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
8e98cb530d45d8cf3c77edb7f5452890e6d4f5ba5304708330ebe24b53d31868
|
|
BLAKE2b-256 checksum How to use checksums |
ea3abed91fa16e24bf9ce578b51c8739ddf162af73dc16fc2d6faf74b37af4a4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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}
|
Release files / justapi-2.0.10-cp311-abi3-macosx_10_12_x86_64.whl
| Download URL | justapi-2.0.10-cp311-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 18.2 MB |
| Tags | CPython 3.11 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
d2b2938616f5ddf68943416129bcbf9384fb59773f9848810bd73ac7ec759fa0
|
|
BLAKE2b-256 checksum How to use checksums |
338312fe7fb380be8f150a3f98631c9a6ad4cf479852d6177467e2e9b358a649
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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}
|