Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Django-Bolt

The fastest Python web framework — built on Django

Rust-powered HTTP, msgspec serialization, full type validation —
with the Django ORM, Django Admin, and every Django package you already use.

PyPI Python versions Django versions License
Downloads Discord Ask DeepWiki Sponsor

Documentation · Quick Start · Features · Benchmarks · Video Tutorial · Discord


Django-Bolt is the fastest Python web framework: 300k+ requests/second on a single 12-core desktop (8 processes, C=100, loopback), ahead of FastAPI and Robyn, and even of Bun-based JavaScript frameworks (Elysia, Hono) on JSON payloads. It is a fully typed API framework for Django. It serves your endpoints from a Rust HTTP server (Actix Web + Tokio), bridges to your Python handlers with PyO3, and serializes with msgspec — while everything you love about Django (ORM, Admin, auth, middleware, signals, third-party apps) keeps working out of the box.

Think Django REST Framework or Django Ninja, with a Rust engine underneath and no gunicorn or uvicorn required.

from django_bolt import BoltAPI

api = BoltAPI()

@api.get("/hello/{name}")
async def hello(name: str):
    return {"message": f"Hello, {name}!"}
python manage.py runbolt --dev

✨ Why Django-Bolt?

⚡ Rust speed, Python ergonomics HTTP parsing, routing, auth, guards, CORS, rate limiting, and compression run in Rust without touching the GIL. Your handlers stay plain Python.
🐍 100% Django Use your existing models, settings.py, INSTALLED_APPS, Django Admin, middleware, and signals. Migrate one endpoint at a time from DRF.
🧷 Fully typed Type hints drive path/query/header/cookie/form/body extraction and validation. msgspec.Struct and Bolt Serializer return types are validated on the way out.
🚀 Deploy directly runbolt is the production server: multi-process with SO_REUSEPORT, worker recycling, graceful shutdown, static & media serving.
📚 Batteries included OpenAPI docs (Swagger, ReDoc, Scalar, RapiDoc, Stoplight), JWT/API-key auth, guards, pagination, ViewSets, WebSockets, SSE, streaming, testing client, MCP servers.

🚀 Quick Start

1. Install

pip install django-bolt      # or: uv add django-bolt

2. Add to INSTALLED_APPS

# myproject/settings.py
INSTALLED_APPS = [
    ...,
    "django_bolt",
]

3. Write your first endpoint

Create an api.py next to your settings.py (or inside any Django app — Bolt autodiscovers them all):

# myproject/api.py
import msgspec
from django.contrib.auth import get_user_model
from django_bolt import BoltAPI

User = get_user_model()
api = BoltAPI()


class UserSchema(msgspec.Struct):
    id: int
    username: str


@api.get("/users/{user_id}")
async def get_user(user_id: int) -> UserSchema:   # response is type-validated
    user = await User.objects.aget(id=user_id)    # Django ORM, no extra setup
    return {"id": user.id, "username": user.username}

4. Run

python manage.py runbolt --dev              # auto-reload for development
python manage.py runbolt --processes 4      # production: multi-process, no gunicorn/uvicorn

Your API is live at http://localhost:8000/users/1 and interactive docs at http://localhost:8000/docs.

📖 Next: the Quick Start guide → Deployment → Topic guides.

🧭 A tour of the API

Request validation with type hints
import msgspec
from typing import Annotated
from django_bolt import BoltAPI
from django_bolt.param_functions import Header

api = BoltAPI()

class CreateUser(msgspec.Struct):
    username: str
    email: str

@api.post("/users", status_code=201)
async def create_user(
    user: CreateUser,                                     # JSON body → validated struct
    api_key: Annotated[str, Header("x-api-key")],         # header
    page: int = 1,                                        # query param with default
):
    return {"username": user.username, "page": page}
Authentication & guards (evaluated in Rust)
from django_bolt.auth import JWTAuthentication, IsAuthenticated, Requires

IsStaff = Requires("is_staff", True)

@api.get("/admin/stats", auth=[JWTAuthentication()], guards=[IsAuthenticated(), IsStaff])
async def admin_stats(request):
    return {"user_id": request.user.id}

JWT signature checks, expiry, API-key lookup, and guard evaluation all happen before the GIL is ever taken.

Serializers & ModelViewSet
from django_bolt import ModelViewSet, PageNumberPagination
from django_bolt.serializers import Serializer
from myapp.models import Article

class ArticleSchema(Serializer):
    id: int
    title: str
    content: str

    class Config:
        field_sets = {"list": ["id", "title"]}

@api.viewset("/articles")
class ArticleViewSet(ModelViewSet):
    queryset = Article.objects.all()
    serializer_class = ArticleSchema
    pagination_class = PageNumberPagination

One Serializer class, many projections — no more UserListSerializer / UserDetailSerializer / UserAdminSerializer sprawl.

WebSockets & Server-Sent Events
from django_bolt import WebSocket, StreamingResponse

@api.websocket("/ws/echo")
async def echo(websocket: WebSocket):
    await websocket.accept()
    async for message in websocket.iter_text():
        await websocket.send_text(f"Echo: {message}")

@api.get("/events")
async def events():
    async def stream():
        for i in range(10):
            yield f"data: tick {i}\n\n"
    return StreamingResponse(stream(), media_type="text/event-stream")
MCP servers for LLM clients
from bolt_mcp import MCP          # pip install "django-bolt[mcp]"

mcp = MCP("my-server")

@mcp.tool
async def add(a: int, b: int) -> dict:
    return {"sum": a + b}

api.mount_mcp(mcp)

Expose tools, resources, and prompts over MCP Streamable HTTP, backed by the official Rust SDK.

Middleware: CORS, rate limiting, compression
from django_bolt.middleware import cors, rate_limit

@api.get("/public")
@cors(origins=["https://example.com"])
@rate_limit(rps=100, burst=200)
async def public():
    return {"ok": True}

Django middleware (sessions, messages, CSRF, your own) is supported too.

📦 Features

Feature Description
⚡ High Performance Actix Web + Tokio + PyO3, zero-copy routing, sync-dispatch bypass for simple handlers
🔐 Authentication JWT, API key, and Django session auth — validated in Rust
🛡️ Permissions & Guards IsAuthenticated, AllowAny, and claim-based Requires(...) guards
🎛️ Middleware CORS, rate limiting, compression, Django middleware integration
📦 Serializers msgspec-based validation with field sets, computed fields, and model integration
🗄️ Async ORM Return QuerySets from async handlers; bounded, vendor-aware ORM executor
📡 Responses JSON, HTML, redirects, files, streaming, SSE
🔌 WebSockets FastAPI-style WebSocket handlers on Rust infrastructure
📚 OpenAPI Auto-generated schema with Swagger, ReDoc, Scalar, RapiDoc, and Stoplight UIs
🧱 Class-Based Views APIView, ViewSet, ModelViewSet, @action
📄 Pagination PageNumber, LimitOffset, and Cursor pagination
💉 Dependency Injection Depends(...) with registration-time graph resolution
🤖 MCP Servers Tools, resources, prompts, and streaming over MCP Streamable HTTP
🗂️ Static & Media Files Native Rust static/media serving — no WhiteNoise needed
🔗 ASGI Mounts Mount existing ASGI apps under a prefix
🩺 Health, Logging, Lifespan Health endpoints, structured logging, lifespan hooks, signals
🧪 Testing In-process TestClient that runs the full Rust pipeline
🧬 Nanodjango Single-file Django apps

All runtime settings and environment variables are listed in the Settings reference.

Measured performance, conditions, and reproduction steps are on the Benchmarks page.

🏗️ How it works

HTTP request
   │
   ▼
Actix Web (Rust) ── routing (matchit) ── CORS · rate limit · compression
   │
   ▼
Auth & guards (Rust, no GIL) ── JWT / API key / session · IsAuthenticated · Requires(...)
   │
   ▼
Dispatch ── sync fast path (single GIL block)  or  async path (persistent worker loop)
   │
   ▼
Your handler ── typed params · Depends(...) · Django ORM
   │
   ▼
msgspec serialization ── zero-copy body ── HTTP response

🚢 Deployment

python manage.py runbolt --host 0.0.0.0 --port 8000 --processes 4
python manage.py runbolt --processes 4 --max-rss 512   # recycle workers above 512 MB

Multi-process scaling uses SO_REUSEPORT for kernel-level load balancing. Worker recycling, crash respawn, graceful shutdown, and WebSocket drain are built in. See the Deployment guide for systemd, supervisor, and reverse-proxy setups.

🤝 Contributing

Contributions are welcome! See CONTRIBUTING.md for the development setup (Rust toolchain, uv, just), the test workflow, and pull request guidelines.

git clone https://github.com/dj-bolt/django-bolt.git && cd django-bolt
uv sync && just build && just test-py

💬 Community

💖 Sponsors

Support Django-Bolt's development by becoming a sponsor. Your logo will appear here with a link to your website.

Backers

🙏 Acknowledgments

Django-Bolt stands on the shoulders of giants:

  • Django REST Framework — ViewSet patterns, permission system, and overall API philosophy
  • FastAPI — dependency injection, parameter extraction, and type-hint-driven design
  • Litestar — OpenAPI plugin architecture, middleware and guard design
  • Robyn — proved the potential of Rust-powered Python web frameworks with PyO3
  • Actix Web, PyO3, msgspec, matchit — the foundations that make the speed possible

📄 License

Django-Bolt is released under the MIT License.

Metadata

Release files for django-bolt 0.12.0rc4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-bolt 0.12.0rc4
File Size Uploaded
django_bolt-0.12.0rc4.tar.gz 1.9 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for django-bolt 0.12.0rc4
File
django_bolt-0.12.0rc4-cp314-cp314t-win_amd64.whl CPython 3.14 CPython 3.14 free-threading Windows x86-64 Details
django_bolt-0.12.0rc4-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
django_bolt-0.12.0rc4-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64 Details
django_bolt-0.12.0rc4-cp314-cp314t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl CPython 3.14 CPython 3.14 free-threading macOS 10.12+ x86-64, macOS 10.12+ universal2 (ARM64, x86-64), macOS 11.0+ ARM64 Details
django_bolt-0.12.0rc4-cp312-abi3-win_amd64.whl CPython 3.12 abi3 Windows x86-64 Details
django_bolt-0.12.0rc4-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 abi3 Linux glibc 2.17+ x86-64 Details
django_bolt-0.12.0rc4-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.12 abi3 Linux glibc 2.17+ ARM64 Details
django_bolt-0.12.0rc4-cp312-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl CPython 3.12 abi3 macOS 11.0+ ARM64, macOS 10.12+ x86-64, macOS 10.12+ universal2 (ARM64, x86-64) Details

Total release size: 55.2 MB

Release files / django_bolt-0.12.0rc4.tar.gz

Download URL django_bolt-0.12.0rc4.tar.gz
Size 1.9 MB
Tags Source
SHA-256 checksum
How to use checksums
2b3e249193bc5f021130ada4cb35dee51fcc86ddff975527c225296aaad8e81a
BLAKE2b-256 checksum
How to use checksums
cb9e9ab6a4800a60fcdb784acfb7ff388628fdd1fb50ab685d069ed1671c9d3b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","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 / django_bolt-0.12.0rc4-cp314-cp314t-win_amd64.whl

Download URL django_bolt-0.12.0rc4-cp314-cp314t-win_amd64.whl
Size 5.1 MB
Tags CPython 3.14 CPython 3.14 free-threading Windows x86-64
SHA-256 checksum
How to use checksums
7a8434cee260bd8d105ddd73f2501f4eb24def91c97326e2b92aa77cd06c0e56
BLAKE2b-256 checksum
How to use checksums
2792aa2eb2a574a6ac57b7230dca4eb63be3a55f7e6be530aa87040c18c4c7f8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","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 / django_bolt-0.12.0rc4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL django_bolt-0.12.0rc4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 5.8 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
42ee44c5741189e6d08aa21f1046edc3b1b30f071e6c6f64dd09a921278657a1
BLAKE2b-256 checksum
How to use checksums
fed471da6c14d511aec9b50cb0c4fb72579ef3d8e025cfbed26ca3ce62d179c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","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 / django_bolt-0.12.0rc4-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL django_bolt-0.12.0rc4-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 5.5 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
25fffc79df92820bb51308af6b56b585b32680c4cf29e490f5f495abc4fcc08a
BLAKE2b-256 checksum
How to use checksums
0334292e63568b4d5bd344a00328fc524dc6aef2fbc50a16d4160f28c6925786
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","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 / django_bolt-0.12.0rc4-cp314-cp314t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl

Download URL django_bolt-0.12.0rc4-cp314-cp314t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Size 10.3 MB
Tags CPython 3.14 CPython 3.14 free-threading macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
3b917fcb65d01b2ed52d2869ab883e3d39f00dba38c9f6c91062fa48034fe499
BLAKE2b-256 checksum
How to use checksums
e4ce47ec6b112e4d31a0cefbf2f5e5e8a98605a7e1a11bd1c6127292fbe04345
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","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 / django_bolt-0.12.0rc4-cp312-abi3-win_amd64.whl

Download URL django_bolt-0.12.0rc4-cp312-abi3-win_amd64.whl
Size 5.1 MB
Tags CPython 3.12 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
ac5f4b05947992a937ccee0f3c4de3d965ad215d03137a3878f91ec1acc66cd1
BLAKE2b-256 checksum
How to use checksums
a5b18e17dfcb1277e2793ba40b9501d3a3e6ddf53c168ee56a0589dedf9343a8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","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 / django_bolt-0.12.0rc4-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL django_bolt-0.12.0rc4-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 5.8 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
75c55347eb63a98bc2e180f079345212b205b45c9b4fbc6178b4f22636a2df2c
BLAKE2b-256 checksum
How to use checksums
abbe5c4e050a3c06a2f0b86ec02aecb0566116e1e2b35d1c7924d2c9fe64f707
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","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 / django_bolt-0.12.0rc4-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL django_bolt-0.12.0rc4-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 5.5 MB
Tags CPython 3.12 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
a8d347c8c96931e2266f5f769df2e96361dfcc63174d91619e1d0e707ac2d683
BLAKE2b-256 checksum
How to use checksums
d357bc343bc40cbbc0f852b406c94079abe5df88214c90ea4118d6c017db4909
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","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 / django_bolt-0.12.0rc4-cp312-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl

Download URL django_bolt-0.12.0rc4-cp312-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Size 10.3 MB
Tags CPython 3.12 abi3 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f9dfd48dad047b8c80404b326c4f1cdb1e0fbccfeccd9ae157efe9cace402333
BLAKE2b-256 checksum
How to use checksums
bf08d676de694c086c8b4b096b6530fd7fe7fe0fc5f09d28880ae8fd3da4da99
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","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 history Release notifications | RSS feed

This release

0.12.0rc4 This release

9 release files

0.11.0

5 release files

0.10.3

5 release files

0.10.2

5 release files

0.10.1

5 release files

0.9.1

5 release files

0.9.0

4 release files

0.8.4

4 release files

0.8.3

4 release files

0.8.2

4 release files

0.8.1

4 release files

0.8.0

4 release files

0.7.6

4 release files

0.7.5

4 release files

0.7.4

4 release files

0.7.3

4 release files

0.7.2

4 release files

0.7.1

4 release files

0.7.0

4 release files

0.6.7

4 release files

0.6.6

4 release files

0.6.5

4 release files

0.6.4

4 release files

0.6.3

4 release files

0.6.2

4 release files

0.6.1

4 release files

0.6.0

4 release files

0.5.1

4 release files

0.5.0

4 release files

0.4.8

4 release files

0.4.7

4 release files

0.4.6

4 release files

0.4.5

4 release files

0.4.4

4 release files

0.4.3

4 release files

0.4.2

4 release files

0.4.1

4 release files

0.4.0

4 release files

0.3.13

4 release files

0.3.9

4 release files

0.3.8

4 release files

0.3.7

4 release files

0.3.6

4 release files

0.3.5

4 release files

0.3.4

4 release files

0.3.3

4 release files

0.3.2

4 release files

0.3.1

4 release files

0.3.0

4 release files

0.2.9

4 release files

0.2.8

4 release files

0.2.7

4 release files

0.2.6

4 release files

0.2.5

4 release files

0.2.4

4 release files

0.2.3

4 release files

0.2.2

4 release files

0.2.0

4 release files

0.1.2

4 release files

0.1.1

4 release files

0.1.0

4 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page