Duck is a powerful, open-source, full-fledged Python-based web server, framework, and reverse proxy designed for building modern, customizable web applications — from small sites to large-scale platforms.
It simplifies web development with:
- Built-in HTTPS support for secure connections
- Native HTTP/2 support with HTTP/1 backward compatibility link
- Hassle-free free SSL certificate generation with automatic renewal link
- Lively Component System — with
VDom Diffing(support for fast UI's) - WebSocket support — modern websocket implementation with
per-message compression. - Built-in task automation — no need for cron jobs
- Automatic content compression using
gzip,deflateorbrotli - Support for chunked transfer encoding
- Easy integration with existing Django projects using
django-add - Organized routing with Duck
Blueprints - Full support for async views or asynchronous code even in
WSGIenvironment - Dynamic project generation with
makeproject(mini,normal, orfull) - Runs on both
WSGIandASGIenvironments, can even runasyncprotocols likeHTTP/2orWebSocketsonWSGI. - High-performance with low-latency response times
- Resumable downloads for large files
- Protection against DoS, SQL Injection, Command Injection, and other threats
- Auto-reload in debug mode for rapid development
- Free production SSL — no certificate costs
- Automatic SSL renewal using
certbotplus Duck automation system - Comes with built-in web development tools and helpers
- Log management with
duck logsand file-based logging by default - Real-time system monitoring for CPU, RAM, Disk usage, and I/O activity with
duck monitor - Easily generate app sitemap using command
duck sitemapor just use the builtin blueprintduck.etc.apps.essentials.blueprint.Sitemapfor dynamic cached sitemap serving. - Highly customizable to fit any use case
And more — see feature list
- HTTP/3 with QUIC – Faster, modern transport for improved performance.
- QUIC WebTransport – A next-gen alternative to WebSockets for real-time communication.
- Component Pre-rendering System – A system to preload components in the background thread to reduce initial load times of component trees.
- Customizable Dashboards – Tailor interfaces to your workflow and preferences.
- MQTT (Message Queuing Telementry Transport) Integration – Run your own broker and manage IoT devices with ease.
- Duck WebApp to APK – Easily convert a Duck web application to APK.
- DuckSight Hot Reload – Instead of full reload on file changes, implement hot reload for the DuckSight Reloader. This is faster and efficient than full reload.
- Internal Updates – Implement logic for listing and securely applying updates when available, utilizing cryptographic code signing (using standards like TUF) to verify GitHub-sourced updates, protecting against rollbacks, and man-in-the-middle exploits.
Worker Processes – Use of worker processes to utilize all available CPU cores for improved request handling.- Complete Reverse Proxy Server – Duck only acts as reverse proxy for Django only. Need to make Duck a full-fledged reverse proxy server with optional sticky sessions.
- ...and more – Request a feature
- The Duck official website is powered by the Duck framework itself—showcasing a true "dogfooding" approach!
- Duck's Lively components bring you a Lively UI that's exceptionally fast and responsive, eliminating slow page re-rendering for a seamless user experience.
- Also, Duck official site is hosted directly with
Duckitself, no NGINX or a reverse proxy is behind it. Duck handles everything including renewing expiredSSLcertificate & handleHTTP/2protocol!
It is recommended to use uv for installing Duck.
Install Duck using uv:
uv pip install git+https://github.com/duckframework/duck.gitOr using original pip:
pip install git+https://github.com/duckframework/duck.gitduck makeproject myprojectThis creates a normal project named myproject. You can also create other project types using:
--fullfor a full-featured project--minifor a simplified starter project
The full version includes everything Duck offers. Recommended for experienced developers.
duck makeproject myproject --fullBeginner-friendly. Lightweight version with essential functionality.
duck makeproject myproject --miniduck makeproject myproject
cd myproject
duck runserver # or: python3 web/main.pyThis starts the server at http://localhost:8000
Duck serves a basic site by default — explore more at Documentation
By default, Duck compresses streaming responses (like large downloads or video).
To disable this behavior, setcompress_streaming_responsestoFalse.
If you have an existing Django project and want production features like HTTPS, HTTP/2, and resumable downloads, Duck makes it easy.
Unlike nginx setups, Duck simplifies this with a few commands.
- Native HTTP/2 & HTTPS implementation.
- Extra built-in security middleware (DoS, SQLi, etc.)
- Duck and Django run in the same Python environment (faster communication)
- Auto-compressed responses
- Resumable large downloads
- Fast and Reactive Lively components - for beautiful & responsive UI.
- Free SSL with renewal
- and more
duck makeproject myproject
cd myproject
duck django-add "path/to/your/django_project"
duck runserver -dj- Follow instructions provided by
django-addcommand carefully - Make sure your Django project defines at least one
urlpattern - Once setup, you’re good to go!
Visit: https://duckframework.xyz
Docs: https://duckframework.xyz/documentation
All our UI components are currently free and open source. Stay tuned for upcoming Pro Packs featuring advanced dashboards, e-commerce, and integrations!
⭐ Star this repo to get notified on release!
Duck is open to all forms of contribution — financial or technical.
Support development at Open Collective
Use the GitHub Issues page
Duck is updated regularly — check the repo for improvements and bug fixes.