ol.busker
Busker is a Clojure web server that plays live on the open web
ol.busker is a Clojure web server built on libh2o (the web server core that powers Fastly’s global CDN).
Busker provides:
-
modern HTTP support, including HTTP/1.1, HTTP/2, HTTP/3, 103 Early Hints, 0-RTT TLS, etc.
-
automatic HTTPS certificate obtaining and renewal
-
simplified deployment by letting you deploy an uberjar directly with
systemd, without nginx, Caddy, or Docker -
predictable performance under load with production-ready defaults
Platform requirements
Busker requires JDK 25 or later.
Pre-built jars containing native binaries are available for Linux and macOS on aarch64 and x86-64.
Project status: Experimental.
Usage
Add the Busker git dependency to deps.edn:
com.outskirtslabs/busker {:git/url "https://github.com/outskirtslabs/busker"
:git/sha "0e2ead5507b03d18fa94c01647a37188b37b25f6" }
When using Busker as a git dependency, run clj -X:deps prep after bumping the git sha.
Add at least one native dependency for your target platform:
;; Choose at least one of the following.
com.outskirtslabs.busker/linux-x86-64 {:mvn/version "0.0.4" }
com.outskirtslabs.busker/linux-aarch64 {:mvn/version "0.0.4" }
com.outskirtslabs.busker/macos-x86-64 {:mvn/version "0.0.4" }
com.outskirtslabs.busker/macos-aarch64 {:mvn/version "0.0.4" }
If you include multiple native dependencies, Busker chooses the one matching the current platform. Including extra native dependencies increases uberjar size.
Examples
See the example projects in examples/:
-
quickstartshows a small server with HTTP, TLS, hello, echo, and streaming routes -
early-hintsshows how to emit103 Early Hintsbefore a final response -
sseshows a long-lived Server Sent Events stream with optional Brotli compression
Roadmap
The project description above is aspirational. Busker is still a work in progress.
See Roadmap for current roadmap ideas.
Changelog
See Changelog for notable changes.
Security
See Security for security reporting and policy links.