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.

Release files for django-bolt 0.12.0rc3

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.0rc3
File Size Uploaded
django_bolt-0.12.0rc3.tar.gz 1.7 MB Details

Built distributions (wheels)

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

Release files / django_bolt-0.12.0rc3.tar.gz

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

Download URL django_bolt-0.12.0rc3-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
17b2ca014c7b5aa3d651f1177d40aa76367ddcf0c71b81e6bd1129f68ddd9efc
BLAKE2b-256 checksum
How to use checksums
e790eff165f9306ac0064086eaa0ca284f36699da9b271ed92105f215745780b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","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.0rc3-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL django_bolt-0.12.0rc3-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
48db65d0e29d5a8e6d032564a6e5fbb558cf754a8ab47d85c8896e1799b5dd2f
BLAKE2b-256 checksum
How to use checksums
66dee71e01b7b363133954170bc0068df81aef7d12c9ac34c73704758eb36ff3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","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.0rc3-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL django_bolt-0.12.0rc3-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
233aab54597d3ac85b6248975725de5c48518a379b2c1eb8ee0b1e94cfd48659
BLAKE2b-256 checksum
How to use checksums
656f86da7d869234cfe2ca51687e96516101c4d51188539a216889480a87f6ff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","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.0rc3-cp314-cp314t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl

Download URL django_bolt-0.12.0rc3-cp314-cp314t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Size 10.2 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
8a52940253d318ca00cf2a78b431d508348b8994ecee3034902f8a7b49cbcd38
BLAKE2b-256 checksum
How to use checksums
f73b0b6f2fac5f81b07d658d85b307e5136611fb7a09c3be6d95440895b5f25c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","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.0rc3-cp312-abi3-win_amd64.whl

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

Download URL django_bolt-0.12.0rc3-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
9ef7a8e395422d052bdf49df31dc69a73ae4d1c714b48dcc75926a4b71c94412
BLAKE2b-256 checksum
How to use checksums
52c535f34ba373ac75c45d0f13d2c087f1059a6c07d9bcab432fb55b0d9df247
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","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.0rc3-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL django_bolt-0.12.0rc3-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
e2fb33a12f7828b0bb64e78d21891619e7e847b857a3b3e91613969e30224ebe
BLAKE2b-256 checksum
How to use checksums
146bcceb564673c378fd79080685a69456eaa13539eabc1015c032845bf4359b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","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.0rc3-cp312-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl

Download URL django_bolt-0.12.0rc3-cp312-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Size 10.2 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
ba76d0a8ba4eb5de6e6aefbd3b46690f485eb6e9b0ef445e8d524ef5396b063e
BLAKE2b-256 checksum
How to use checksums
d15b6bee8b3fdf2df743eb197f3faad5de0abab78e79f3636c47f8c9c1e33513
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","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.0rc3 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