Skip to main content
ThorNode provides location-specific Yellowstone Dragon’s Mouth endpoints compatible with geyser.Geyser/Subscribe. The dashboard labels this product Yellowstone DM. Copy the target and token from the same location. Send the token as x-token request metadata when you open a subscription.

Filtered Geyser streams

Yellowstone delivers long-lived, server-filtered Solana updates over gRPC. Use ThorEdge RPC for request-response calls and WebSocket subscriptions. Use Pulse Decoded Shreds for a sig-first or full-transaction feed over QUIC.

Quick reference

Open a subscription

1

Choose a location

Open Endpoints, keep the Endpoints tab selected, choose the access, network, and location. Copy the token from the location token row and the target from Yellowstone DM in the Streaming section of Token & Endpoints.
2

Configure the client

Use a Yellowstone client built from the geyser.proto in the upstream repository.
3

Open the gRPC channel

Configure the copied target as a plaintext gRPC (h2c) channel.
4

Attach the token

Add the location token to the gRPC request metadata with the exact key x-token.
5

Subscribe

Start with a slot filter, or an account or transaction filter containing an explicit public key. Add more keys only after the first stream returns updates.
The current Yellowstone target uses plaintext gRPC, so x-token metadata is not encrypted in transit. Connect through a trusted private network, VPN, or encrypted tunnel. Keep the token out of the target, query string, source code, and logs.
The subscription is running when it returns SubscribeUpdate messages whose filters field contains your filter name.

Test a slot subscription

Follow the Yellowstone quickstart to stream slots with grpcurl, then narrow to a transaction filter. The Subscribe reference lists every request field and what it returns on ThorNode.

Run in production

  • Keep receive-path work small and move expensive processing to bounded worker queues.
  • Monitor stream count, filter usage, queue depth, and consumer lag.
  • Reconnect with bounded exponential backoff and jitter.
  • Recreate subscriptions after reconnecting.
  • Detect gaps and reconcile through RPC when application correctness requires it.
  • Close unused streams instead of leaving idle subscriptions open.

Troubleshooting

Next steps