A (hopefully) nice, basic gleam web server


This package can be added to your Gleam project:

gleam add dew

and its documentation can be found at


Just some basic handler examples that do also exist in this repo, but probably won’t once it’s actually in better shape.

HTTP Hello World

pub fn ok(_msg: HandlerMessage, sock: Socket) -> actor.Next(Socket) {
  assert Ok(resp) =
    "hello, world!"
    |> bit_string.from_string
    |> http_response(200, _)
    |> bit_string.to_string

  |> charlist.from_string
  |> send(sock, _)


Full HTTP echo handler

pub fn handler(req: Request(BitString)) -> Response(BitString) {
  |> response.set_body(req.body)
pub fn main() {
  assert Ok(socket) = dew.listen(8000, [])
  try _ = dew.start_acceptor_pool(socket, make_handler(handler), 10)



This is still very rough. There are no tests, and as noted above you can’t just send where you implement it.

In some not-very-scientific benchmarking, it seemed to do roughly as well as ThousandIsland. I am just using that as a reference point, certainly not trying to draw any comparisons any time soon!