Renamed to iko-soy/airlock. That is where the repository lives now. It has not been published as a package under the new name.
Versions published as ilyakooo0/airlock still install under that name. 4 versions of 4 come from the new location (see their notes).
Rerouted (renamed, verified). The GitHub user or repository was renamed. The tag is still there, at the new name. The Lamdera package server serves a copy recovered from https://github.com/iko-soy/airlock.
What we checked: The repo moved to github.com/iko-soy/airlock. Rebuilt with git archive from commit 1086ce8d954f of https://github.com/iko-soy/airlock (zip prefix ilyakooo0-airlock-4f76b03/, America/Los_Angeles times): the zip is byte-identical to the one package.elm-lang.org recorded, SHA-1 c065fca7629d5164933a195740086c32edeaf556.
The Lamdera compiler uses this copy and prints a one-line notice saying so. elm itself fails to download this version.
Details · package.elm-lang.org's zip: https://github.com/ilyakooo0/airlock/zipball/1.0.1/

Urbit subscriptions require server-side event (SSE). Unfortunately, Elm does not provide a native implementation. This means that we will need to use JS FFI (aka ports).
You would need to declare two ports for Airlock to use:
port createEventSource : String -> Cmd msg This sets up the SSE channel.port onEventSourceMessage : (JD.Value -> msg) -> Sub msg
This recieves the actual messages from the SSE channel.These two functions need to be passed to one of the functions from Ur.Run module.
The functions in Ur.Run are the same as functions from Browser, but have a couple of extra urbit-specific fields.
The SSE JS code is neatly packed into example/fetch-event-source.js. All you need to do is pass them to Elm ports like in example/script.js.
You can see a full working example in example.