Skip to main content

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

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

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

justapi-2.0.10-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.2 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64

justapi-2.0.10-cp311-abi3-win_amd64.whl (11.3 MB view details)

Uploaded CPython 3.11+Windows x86-64

justapi-2.0.10-cp311-abi3-musllinux_1_2_x86_64.whl (12.6 MB view details)

Uploaded CPython 3.11+musllinux: musl 1.2+ x86-64

justapi-2.0.10-cp311-abi3-musllinux_1_2_aarch64.whl (11.5 MB view details)

Uploaded CPython 3.11+musllinux: musl 1.2+ ARM64

justapi-2.0.10-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.6 MB view details)

Uploaded CPython 3.11+manylinux: glibc 2.17+ x86-64

justapi-2.0.10-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (11.5 MB view details)

Uploaded CPython 3.11+manylinux: glibc 2.17+ ARM64

justapi-2.0.10-cp311-abi3-macosx_11_0_arm64.whl (10.5 MB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

justapi-2.0.10-cp311-abi3-macosx_10_12_x86_64.whl (18.2 MB view details)

Uploaded CPython 3.11+macOS 10.12+ x86-64

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

Hashes for justapi-2.0.10-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 22ba6df2b1fbbd446117c063688f4847cbab4403ebcc9448fb3b86c3428c8d66
MD5 9412a7b8151a620f79ca081164359717
BLAKE2b-256 68c53143d5c2918c55c95b14ef6579b4d8feb02fa1db6ef1a9c7edad27ab1d24

See more details on using hashes here.

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

Hashes for justapi-2.0.10-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 ff6941fe6d8bbf6ecb2bb87b41686a14bc835ab997d67a232a25b5349a64310e
MD5 841df567a8dd2a4c000824cfd05a922b
BLAKE2b-256 d13a52b547d9ec06c9fc08d9dc47666c3646d9aebdf57e0a58aed1b908ee2e59

See more details on using hashes here.

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

Hashes for justapi-2.0.10-cp311-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b12e1b46a04e354df51f39f45d5b5a1575b3b4fe5c14aaee7e7edff5a04599c8
MD5 60e6559349858e3137c78cf49a325f90
BLAKE2b-256 6f5ca7e09c7f68f3e1a9627852e7abfa591a4a085b9a6f6978193b29334e9274

See more details on using hashes here.

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

Hashes for justapi-2.0.10-cp311-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 10d4c4cb21ea2ab3dd735ade1502c80158657f8a84e655405e9415e2ecb28acf
MD5 9e3b6a612090463c3f41f89ec3a59c34
BLAKE2b-256 904d7289ea52b3d028bd02f7c38c466aad4075f9a23c5ab5c09c53ae66420ffc

See more details on using hashes here.

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

Hashes for justapi-2.0.10-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 343ba1dcc202968a35f80894c5f4c0fa753d6f3d264761be0a2d2fbb3829a3ea
MD5 3cd544e29933fd959790571201de6350
BLAKE2b-256 9ea2e677bd2a01db771b89f47b298639ddcf0b23297d9400db9b67a2b92d7c5b

See more details on using hashes here.

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

Hashes for justapi-2.0.10-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ba4e1c678031c050c1d24cf8eba89d57a1763881baa30cd6b0e0163098c334c2
MD5 da37bc9a67717b089a576182e03a4b14
BLAKE2b-256 64d56082de16e37ab5635425a951f8b70c1422a5778fe21434cd7cbd31d77ce7

See more details on using hashes here.

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

Hashes for justapi-2.0.10-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8e98cb530d45d8cf3c77edb7f5452890e6d4f5ba5304708330ebe24b53d31868
MD5 e24dde2cc6cf9d94b783077f9333ba7a
BLAKE2b-256 ea3abed91fa16e24bf9ce578b51c8739ddf162af73dc16fc2d6faf74b37af4a4

See more details on using hashes here.

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

Hashes for justapi-2.0.10-cp311-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d2b2938616f5ddf68943416129bcbf9384fb59773f9848810bd73ac7ec759fa0
MD5 d728a3d945a33b08d111f7f072febd92
BLAKE2b-256 338312fe7fb380be8f150a3f98631c9a6ad4cf479852d6177467e2e9b358a649

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

2.0.10 This release

8 files

2.0.9

8 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page