Livery

Livery

One handler set. Every version of HTTP.

Website · Docs · Design


Livery is a BEAM-native web framework that serves the same router and middleware over HTTP/1.1, HTTP/2, and HTTP/3 from a single runtime. WebSocket, WebTransport, Server-Sent Events, OpenAPI, MCP, and OpenTelemetry-style observability are built-in modules. It is written in the spirit of Axum + Tower + Hyper, on Erlang/OTP.

Router = livery_router:compile([
{<<"GET">>, <<"/">>, fun(_Req) ->
livery_resp:text(200, <<"hello from livery">>)
end},
{<<"GET">>, <<"/users/:id">>, {users, show}}
]),
livery:start_service(#{
http => #{port => 80, redirect => https},
https => #{port => 443, cert => Cert, key => Key, alpn => [h2, http1]},
http3 => #{port => 443, cert => Cert, key => Key},
router => Router,
middleware => [{livery_request_id, undefined}, {livery_access_log, #{}}],
alt_svc => advertise
}).

Install

%% rebar.config
{deps, [{livery, {git, "https://github.com/benoitc/livery.git", {branch, "main"}}}]}.

Features

Documentation

Full guides, tutorials, and the generated API reference live at https://benoitc.github.io/livery/. For contributors, see AGENTS.md.

License

Apache-2.0.