Skip to main content

What is direct data rate?

When two iroh endpoints connect, traffic either flows directly between them (peer-to-peer) or gets routed through a relay server. Direct connections are faster and cheaper. Relayed traffic adds latency and burns relay bandwidth. Direct data rate is the percentage of your network’s traffic flowing directly. A high rate means NAT traversal is working and your users are getting the best possible connection. A low rate means too much traffic is falling back to relays, which is worth investigating. Direct data rate metric This guide walks you through hooking up your first endpoint to Iroh Services so you can see direct data rate and other connectivity metrics for your own network. You’ll need an Iroh Services account with an API key.

Add the Iroh Services Client

In Rust, add the iroh-services crate to your Cargo.toml:
cargo add iroh-services
The Python, Swift, and Kotlin bindings ship the services client as part of iroh-ffi, with no extra dependency needed.

Connect Your Endpoint

Then, in your code, create a client and connect your endpoint to Iroh Services. Giving the endpoint a name makes it easy to identify on the dashboard; unnamed endpoints are harder to distinguish from each other.
use iroh::{Endpoint, endpoint::presets};
use iroh_services::Client;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    // Create an iroh endpoint
    let endpoint = Endpoint::bind(presets::N0).await?;

    // Wait for the endpoint to be online
    endpoint.online().await;

    // Create the Iroh Services client with your API key.
    let client = Client::builder(&endpoint)
        .api_secret_from_str("YOUR_API_KEY")?
        .name("my-endpoint")?
        .build()
        .await?;

    // Your endpoint is now reporting metrics to Iroh Services!

    Ok(())
}

View Your Endpoint on the Dashboard

Go to your project’s Endpoints page. You should see your endpoint listed as online. Click on it to view details.

Next steps

Diagnose a connectivity issue

Run remote diagnostic reports on your users’ endpoints to find out why connections fail.

Add a relay

Configure dedicated relays for your endpoints and learn why they matter for production.

Build a chat app

Build a peer-to-peer chat application from scratch using the iroh gossip protocol.