A minimalist, high-performance event-driven HTTP client and server for Clojure, fully Ring-compatible.
http-kit is a minimalist, high-performance HTTP client and server library for Clojure, built with an event-driven architecture. It serves as a drop-in replacement for the Ring Jetty adapter, enabling highly concurrent web applications with support for WebSockets and HTTP long-polling/streaming.
Clojure developers building web applications, APIs, or real-time services who need a lightweight, high-concurrency HTTP server and client.
Developers choose http-kit for its exceptional performance, minimal footprint (~90kB JAR, zero dependencies), and ability to handle massive concurrent connections efficiently, all while maintaining full Ring compatibility.
Simple, high-performance event-driven HTTP client+server for Clojure
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Acts as a drop-in replacement for the Ring Jetty adapter, ensuring seamless integration with existing Clojure web ecosystems and middleware without code changes.
Uses an event-driven architecture similar to nginx, capable of handling over 600k concurrent connections with minimal RAM, as demonstrated in benchmark tests linked in the README.
The entire library is packaged in a ~90kB JAR with zero dependencies and ~3k lines of code, making it lightweight and easy to deploy without bloat.
Offers a simple API that supports both blocking and non-blocking operations, along with built-in WebSocket and HTTP long-polling/streaming for real-time applications.
The README strongly recommends using a reverse proxy like nginx in production, indicating it lacks built-in features for security, load balancing, and other production-ready optimizations.
Does not natively support HTTP/2 or HTTP/3, which might require additional setup or limit performance for applications needing modern web standards.
Currently maintained by the community rather than the original author, which can lead to slower response times, less predictable updates, and potential gaps in long-term support.