Direct Shreds - UDP Forwarding Standard (Raw Shreds)
UDP Forwarding Standard forwards raw Shreds over UDP to the public IPv4 address and port configured for your subscription. Select an available region during initial configuration, then save a non-empty valid public IPv4 address and port as the destination. The selected region remains fixed after setup; the destination can be updated later. ERPC applies the forwarding configuration on its 30-second refresh cycle, and no heartbeat activation is required.
How UDP forwarding works
- ERPC forwards raw Shreds to the configured destination over UDP.
- UDP does not provide connection setup, retransmission, or ordering; your receiver should handle the packets accordingly.
Note: the shared Shreds gRPC endpoint runs over TCP, so it’s slower than UDP Shreds.
Try it with Solana Stream SDK
- Sample code (
shreds-udp-rs, Rust): new-token detection is just a common example—swap in your own target.
https://github.com/ValidatorsDAO/solana-stream/tree/main/temp-release/shreds-udp-rs - Configure your receiver with the destination
ip:portsaved for UDP Forwarding Standard. - Not on UDP yet? Run it locally or on your own server to explore logs and customize hooks.
UDP packets are not arriving
UDP forwarding starts automatically after the destination is configured. No heartbeat activation is required; an
UNIMPLEMENTED heartbeat response does not mean forwarding is disabled.First, capture traffic at the host network interface. Replace the placeholders with the ERPC source IP shown for your stream and your configured destination port.
Linux (
tcpdump):bash
sudo tcpdump -ni any 'udp dst port <DESTINATION_PORT> and src host <ERPC_SOURCE_IP>'sudo tcpdump -ni any 'udp dst port <DESTINATION_PORT> and src host <ERPC_SOURCE_IP>'Windows (
Pktmon, run as Administrator):powershell
pktmon filter add ERPC-UDP -t UDP -i <ERPC_SOURCE_IP> -p <DESTINATION_PORT>
pktmon start --capture --comp nics --log-mode real-timepktmon filter add ERPC-UDP -t UDP -i <ERPC_SOURCE_IP> -p <DESTINATION_PORT>
pktmon start --capture --comp nics --log-mode real-time- If the capture remains at zero, check both the OS firewall and firewalls outside the OS. Hetzner may filter traffic in Cloud Firewall or the Robot firewall at the switch port. On AWS, check the Security Group and the subnet Network ACL.
- Allow inbound UDP from
<ERPC_SOURCE_IP>/32to destination port<DESTINATION_PORT>. Keep the source port unrestricted because ERPC uses dynamic UDP source ports. - If packets appear in the capture but not in your application, bind the receiver to
0.0.0.0:<DESTINATION_PORT>rather than localhost, then check the local firewall and socket/process settings.
If no packets arrive after the rules are updated, send Support the capture duration, packet count, source IP, destination IP, and destination port.
Provider references: Hetzner Cloud Firewall, Hetzner Robot Firewall, AWS Security Groups, AWS Network ACLs, and Microsoft Pktmon.
Resources
- All code and README docs are in the Solana Stream SDK repo:
https://github.com/ValidatorsDAO/solana-stream






