Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/outray-tunnel/outray/llms.txt

Use this file to discover all available pages before exploring further.

UDP tunnels expose local services that communicate over UDP — DNS resolvers, VoIP endpoints, TFTP servers, game servers, and more. OutRay forwards each datagram from the remote port to your local service and relays the response back to the sender.

Basic usage

outray udp 53
Once the tunnel is open, you’ll see output like:
Connecting to OutRay (UDP mode)...
Linked to your local port 53
✨ UDP Tunnel ready: udp.outray.app:53000
Remote port: 53000
Keep this running to keep your tunnel active.
Clients that send UDP packets to udp.outray.app:53000 will have those packets forwarded to your local service on port 53.

Flags

FlagTypeDescription
--remote-port <port>numberRequest a specific remote port instead of a randomly assigned one.
--org <slug>stringOpen the tunnel under a different organization without switching your active org.
--key <token>stringOverride the auth token. Useful for CI/CD or scripted environments.
--no-logsbooleanSuppress per-packet log output in the terminal.

How UDP tunneling works

UDP is a stateless protocol — there are no persistent connections. OutRay handles this by:
  1. Receiving a datagram on the remote port.
  2. Forwarding the raw bytes to your local service on the configured port.
  3. Waiting up to 5 seconds for your local service to send a response back.
  4. Relaying that response to the original sender.
Because UDP has no connection state, each packet is handled independently. This makes it well-suited for request-response protocols like DNS, but less suited for high-throughput streaming where ordering and delivery guarantees matter.

Requesting a specific remote port

By default, OutRay assigns a random available port. Use --remote-port to request a specific one:
outray udp 53 --remote-port 53000
If the requested port is already in use, the tunnel will fail with an error.
Specific port availability is not guaranteed. If the port is taken, choose a different one or omit --remote-port to get a randomly assigned port.

Example use cases

DNS

Expose a local DNS resolver or testing server so remote clients can query it over UDP port 53.

VoIP

Forward RTP or SIP audio streams to a local VoIP application or softphone.

TFTP

Serve firmware or configuration files via TFTP to remote devices during testing.

Game servers

Expose a locally running UDP game server so players can connect without configuring port forwarding.

Stopping the tunnel

Press Ctrl+C to stop the tunnel. The remote port is released and no more packets will be forwarded.