Skip to main content
An OHTTP relay forwards encrypted requests from clients to relayers. It sees client IP addresses but cannot read requests; relayers read requests but only see the relay’s address. It is only useful if it is run by someone other than the relayer operators, which makes it a good way for another team to contribute to the network.

Run it

It holds no keys and no state, and writes nothing to Arkiv. Put it behind HTTPS.

What it forwards

The relay accepts POST /ohttp with an x-arkognito-target header naming a relayer, and forwards only the encrypted body to <target>/v1/ohttp. It forwards to a target only if:
  • the target is announced in a live arkognito.relayer heartbeat on Arkiv that publishes a gateway key;
  • the target uses https on a public host (loopback, private and link-local addresses are refused);
  • the target answers /v1/info with the heartbeat creator’s address and the same gateway key;
  • no redirects are followed.
A fake heartbeat naming an internal address (for example a cloud metadata endpoint) therefore cannot turn the relay into a proxy into your network.

Configuration

Operating it

  • GET /healthz returns { ok, role, targets }, where targets is the number of verified relayers.
  • The relay keeps no logs. Disable access logs in any proxy in front of it.
  • Request bodies are limited to 128 KB.
Last modified on October 12, 2026