Regions
Corvus metros and which products run in each: Solana RPC in five, Falcon, aRPC and Shredstream in all nine.
Falcon, aRPC and Shredstream run in all nine Corvus metros. Solana RPC (JSON-RPC, WebSocket and Yellowstone gRPC) is offered in five of them.
Product availability by metro
| Metro | Code | Solana RPC | Falcon | aRPC | Shredstream |
|---|---|---|---|---|---|
| ๐ฉ๐ช Frankfurt | fra | โ | โ | โ | โ |
| ๐ณ๐ฑ Amsterdam | ams | โ | โ | โ | โ |
| ๐ฌ๐ง London | lon | โ | โ | โ | โ |
| ๐บ๐ธ New York | nyc | โ | โ | โ | โ |
| ๐ฏ๐ต Tokyo | tyo | โ | โ | โ | โ |
| ๐ฎ๐ช Dublin | dub | โ | โ | โ | โ |
| ๐ธ๐ฌ Singapore | sgp | โ | โ | โ | โ |
| ๐บ๐ธ Salt Lake City | slc | โ | โ | โ | โ |
| ๐ฑ๐น ล iauliai | sqq | โ | โ | โ | โ |
Submission and reads don't have to share a metro, so a submitter in sgp reading from tyo is a normal arrangement.
Choosing a region
Measure from the host that's actually going to run the client:
curl --silent --output /dev/null \
--write-out 'connect=%{time_connect}s total=%{time_total}s\n' \
--header 'content-type: application/json' \
--data '{"jsonrpc":"2.0","id":1,"method":"getSlot"}' \
'http://fra.corvus-labs.io:8899'Sample it under traffic that looks like yours, and read time_connect against time_total before you pick a metro.
Regional failover
Failover is built into the endpoint. We health-check every regional host's backends, and when they degrade we serve you from the nearest healthy region instead: same hostname, same credentials, nothing to do on your side, whether or not you rent the region that steps in. Expect the extra round trip while it lasts.
Renting a second region yourself buys your own redundancy, a separate network path from your infrastructure or a warm standby for the metro your traffic depends on. Access stays per endpoint either way, so dialing the hostname of a region you haven't rented gets 401 / -32002 Unauthorized.
Live connections don't survive a backend switch: sockets, Yellowstone channels and aRPC streams all reconnect and re-register every filter. On Yellowstone gRPC you can replay the gap with from_slot (replay on reconnect); WebSocket and aRPC have no replay, and aRPC's sequence is connection-local and restarts from zero. For a transaction in flight, check the signature before you resend (Transactions).