ASGI, Without the GIL
Free-threading native. Streaming-first. Pure Python.
Pounce is a pure-Python ASGI server designed from scratch for Python 3.14t. Instead of fork-based worker models, pounce runs N worker threads sharing a single interpreter — leveraging free-threading for true parallelism without memory duplication.
import pounce
pounce.run("myapp:app")
What's good about it
Real OS threads, not processes. N workers share one interpreter, one copy of the application, one set of frozen config — zero synchronization for immutable data.
The response pipeline sends body chunks immediately to the socket. Chunked HTML, event streams, AI token delivery — no buffering, instant delivery.
First ASGI server with zero-dependency zstd compression via Python 3.14's stdlib (PEP 784). Server-Timing headers auto-injected for built-in observability.
No Rust, no C extensions in the server core. One dependency (h11). Debuggable, hackable, readable. Optional extras for HTTP/2, WebSocket, and TLS.
Protocols
| Protocol | Backend | Install |
|---|---|---|
| HTTP/1.1 | h11 (pure Python, default) | built-in |
| HTTP/1.1 | httptools (C-accelerated) | pounce[fast] |
| HTTP/2 | h2 (stream multiplexing, priority) | pounce[h2] |
| WebSocket | wsproto (including WS over H2) | pounce[ws] |
| TLS | stdlib ssl + truststore | pounce[tls] |
| All | Everything above (except httptools) | pounce[full] |
The Bengal Ecosystem
A structured reactive stack — every layer written in pure Python for 3.14t free-threading.
| ᓚᘏᗢ | Bengal | Static site generator | Docs |
| ∿∿ | Purr | Content runtime | — |
| ⌁⌁ | Chirp | Web framework | Docs |
| =^..^= | Pounce | ASGI server ← You are here | Docs |
| )彡 | Kida | Template engine | Docs |
| ฅᨐฅ | Patitas | Markdown parser | Docs |
| ⌾⌾⌾ | Rosettes | Syntax highlighter | Docs |
Python-native. Free-threading ready. No npm required.