ar.io Logoar.io Documentation

Gateway Providers

Gateway providers supply the list of gateways for routing. By default, createWayfinderClient uses a cached TrustedPeersGatewaysProvider.

ProviderDescriptionUse Case
NetworkGatewaysProviderReturns gateways from AR.IO NetworkLeverage AR.IO Network with quality filtering
TrustedPeersGatewaysProviderFetches from trusted gateway's peersDynamic gateway discovery (default)
StaticGatewaysProviderReturns a static list of gatewaysTesting or specific gateways
SimpleCacheGatewaysProviderIn-memory caching wrapperReduce API calls (used by default)
LocalStorageGatewaysProviderBrowser localStorage cachingPersistent caching (used by default in browsers)
CompositeGatewaysProviderChains multiple providers with fallbackMaximum resilience with multiple sources

NetworkGatewaysProvider

Returns a list of gateways from the ARIO Network based on on-chain Gateway Address Registry. You can specify on-chain metrics for gateways to prioritize the highest quality gateways. This requires installing the @ar.io/sdk package and importing the ARIO object.

import { NetworkGatewaysProvider } from '@ar.io/wayfinder-core';
import { ARIO } from '@ar.io/sdk';

const gatewayProvider = new NetworkGatewaysProvider({
  ario: ARIO.mainnet(),
  sortBy: 'operatorStake',
  sortOrder: 'desc',
  limit: 10,
  filter: (gateway) => gateway.status === 'joined',
});

TrustedPeersGatewaysProvider

Fetches a dynamic list of trusted peer gateways from an AR.IO gateway's /ar-io/peers endpoint. This provider is useful for discovering available gateways from a trusted source.

import { TrustedPeersGatewaysProvider } from '@ar.io/wayfinder-core';

const gatewayProvider = new TrustedPeersGatewaysProvider({
  trustedGateway: 'https://turbo-gateway.com',
});

CompositeGatewaysProvider

Chains multiple gateway providers together, trying each in sequence until one succeeds. This is useful for building resilient gateway discovery with fallbacks.

How it works:

  1. Tries each provider in the order they're provided
  2. If a provider returns a non-empty list of gateways, those gateways are used
  3. If a provider throws an error or returns an empty list, moves to the next provider
  4. If all providers fail, throws an error
import {
  CompositeGatewaysProvider,
  NetworkGatewaysProvider,
  StaticGatewaysProvider,
  TrustedPeersGatewaysProvider,
} from '@ar.io/wayfinder-core';
import { ARIO } from '@ar.io/sdk';

// Example: Network-first with static fallback
const gatewayProvider = new CompositeGatewaysProvider({
  providers: [
    // Try fetching from AR.IO network first
    new NetworkGatewaysProvider({
      ario: ARIO.mainnet(),
      sortBy: 'operatorStake',
      limit: 10,
    }),
    // Fallback to trusted peers if network fetch fails
    new TrustedPeersGatewaysProvider({
      trustedGateway: 'https://turbo-gateway.com',
    }),
    // Final fallback to static list
    new StaticGatewaysProvider({
      gateways: ['https://turbo-gateway.com', 'https://g8way.io'],
    }),
  ],
});

How is this guide?