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.9-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.9-cp311-abi3-win_amd64.whl (11.3 MB view details)

Uploaded CPython 3.11+Windows x86-64

justapi-2.0.9-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.9-cp311-abi3-musllinux_1_2_aarch64.whl (11.5 MB view details)

Uploaded CPython 3.11+musllinux: musl 1.2+ ARM64

justapi-2.0.9-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.9-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.9-cp311-abi3-macosx_11_0_arm64.whl (10.5 MB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

justapi-2.0.9-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.9-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: justapi-2.0.9-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.9-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 62c3730d3ae4fddc8ec201eaf933be4e6c2f0ba863314d0e1d510046933137ca
MD5 c7adce7ab9bcaa93e1dfb2af944143ee
BLAKE2b-256 bcc3bc9bdca029bea8d6ac1f56815d4c3def5d0f6acf0972eb87116c9e5e59de

See more details on using hashes here.

File details

Details for the file justapi-2.0.9-cp311-abi3-win_amd64.whl.

File metadata

  • Download URL: justapi-2.0.9-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.9-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 a500253a6408208fe341bcca97456426a4a215c4e38f42410d7d490039b0d152
MD5 f7214bdf0c613a2c4d9865333e89b563
BLAKE2b-256 9ca22e6ccfda44042c650587db3c3e76a0a73c5c956519e5011e16cd5cf4f1fc

See more details on using hashes here.

File details

Details for the file justapi-2.0.9-cp311-abi3-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: justapi-2.0.9-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.9-cp311-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b1f71851db52a9c9affe528a8ec41102ccdad97a210b24262a00fb482939b5c8
MD5 7cfebaf70349bf263c67b55aa5f00b5e
BLAKE2b-256 eaf8c814666b16752159007c017dce9b52034daf69626698bdc42274e7942128

See more details on using hashes here.

File details

Details for the file justapi-2.0.9-cp311-abi3-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: justapi-2.0.9-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.9-cp311-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6862718bb9286e05d27b577caf34ad5239d406752499581e6273b1088aab5330
MD5 6ae28e3e109c02b7ed456788eefc0513
BLAKE2b-256 68e51bf91ffb16b611c112e8016d4127c119a4aee99d2218297adae937b4dfe4

See more details on using hashes here.

File details

Details for the file justapi-2.0.9-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: justapi-2.0.9-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.9-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9da67b44fb12c1d41231c3b2843849d4cd44aebcd781313f935ffff32e9a9d83
MD5 ab260e5f74c6311f5abaf73881383e50
BLAKE2b-256 0c22df9e91e7a2538afab134aec9043762304ece9f2a4261ace26cf647736039

See more details on using hashes here.

File details

Details for the file justapi-2.0.9-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: justapi-2.0.9-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.9-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 770ebac71a89c11c7a0f11097c25af838c038569851bb5c3f288dccf11e3d10a
MD5 ef198a855f92cb4e042ce64760a9a529
BLAKE2b-256 2865488d4e725b53936a09e672074d427aec8b53a9c79a8d47ecf21377e23aa5

See more details on using hashes here.

File details

Details for the file justapi-2.0.9-cp311-abi3-macosx_11_0_arm64.whl.

File metadata

  • Download URL: justapi-2.0.9-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.9-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 34ef959b7c50abb9310fbf7c2d51d43cbb8b44689df7ae5637afd1515a0953b5
MD5 ef4fa6b0407e13fe160a6930fb0b8d37
BLAKE2b-256 fb1471bb4b4326a997659a392f160c9b098fbc3082beea23e1b1e5bf55e09f1b

See more details on using hashes here.

File details

Details for the file justapi-2.0.9-cp311-abi3-macosx_10_12_x86_64.whl.

File metadata

  • Download URL: justapi-2.0.9-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.9-cp311-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 fc5e5944e8fddd7de0e89a4aae73537fadb4edfec25e72e7ac42cfd043a99f05
MD5 a18ec5c3c8a75ddda75f2339cf4d749a
BLAKE2b-256 a03d6cff46f0ce64b5ef718d76e17d077b051e4cc18b5f275d96707fe01e5805

See more details on using hashes here.

Release history Release notifications | RSS feed

2.0.10

8 files

This release

2.0.9 This release

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