UDP packet relay
Add note about -timeout parsing specifics
Allow peers to send an optional payload with udprelay!channel commands
Add plaintext man page output to .gitignore



You can also use your local clone with git send-email.


udprelay \- server to relay UDP connections to connected peers.


udprelay [option...] port


udprelay accepts UDP connections on port and relays all incoming data to every peer which it has received data from within a certain timeframe defined by the -timeout option. When it hasn't received a packet from a peer in that time, it quietly drops all internal state related to that peer and stops relaying packets to it until it receives a packet from it again.

udprelay also features an optional command protocol that allows for more advanced functionality such as channels. This protocol is documented in udprelay(7) and may be enabled by passing the -protocol flag.



Enables the udprelay command protocol. When enabled, packets beginning with the string udprelay! will not be relayed and will instead be handled by udprelay in accordance with the protocol defined in udprelay(7). When unset, all packets will always be relayed.

-timeout duration

Set the amount of time to leave connections open without receiving any packets from a peer. duration is a sequence of decimal numbers with unit suffixes, such as 10m, 120s, and 5m48s.

For specifics on the parsing of this value, see the documentation for time.ParseDuration in the Go standard library.


Prints the version of udprelay to stdout and exits with a code of 0.




udprelay is maintained by Katie Wolfe <wolfe@katie.host>. Its source is located at https://git.sr.ht/~kt/udprelay. Questions about the project, bugs, and patches may be submitted to the mailing list at ~kt/udprelay@lists.sr.ht or directly to the author at wolfe@katie.host.