Midgard Erlang SDK

Build Erlang workers for Midgard with framework request/response records. The SDK handles the midgard.bytes.v1 wire format; your application owns its routes and response behavior.

Midgard is a tech demo. It requires OTP 29.

Install

Add the SDK to rebar.config:

{deps, [{midgard, "0.3.0", {pkg, midgard_erlang}}]}.

The Hex package is named midgard_erlang; the Erlang application and module remain midgard.

Use

Export a binary entrypoint that hands each request to your handler:

-module(hello_worker).
-include_lib("midgard/include/midgard.hrl").
-export([handle/1]).

handle(Input) -> midgard:serve(Input, fun handle_request/1).

handle_request(#midgard_request{method = <<"GET">>, path = <<"/">>}) ->
    #midgard_response{status = 200, body = <<"Hello Joe!">>};
handle_request(_Request) ->
    #midgard_response{status = 404, body = <<"Not found\n">>}.

midgard:serve/2 decodes the midgard.bytes.v1 request frame, calls your handler, and encodes the response. Malformed frames receive a 400 response. midgard:decode_request/1 and midgard:encode_response/1 are also available if you want to own the entrypoint yourself. The package does not provide an HTTP server or router; routes and application behavior stay in your worker.

See the Erlang worker example and Erlang project guide.