diff --git a/concepts/relays.mdx b/concepts/relays.mdx
index b117e52..0531949 100644
--- a/concepts/relays.mdx
+++ b/concepts/relays.mdx
@@ -2,74 +2,77 @@
title: "Relays"
---
-Relays are servers that temporarily route encrypted traffic until a direct, P2P connection is
-feasible. Once this direct path is set up, the relay server steps back, and the
-data flows directly between devices. This approach allows Iroh to maintain a
-secure, low-latency connection, even in challenging network situations.
+Relays are servers that temporarily route encrypted traffic until a direct, P2P connection is feasible. Once this direct path is set up, the relay server steps back, and the data flows directly between devices. This approach allows Iroh to maintain a secure, low-latency connection, even in challenging network situations.
+There are situations where a direct connection can’t be established, and in those cases traffic falls back to running through the relay. Relay servers do not have access to the data being transmitted, as it’s encrypted end-to-end.
-There are situations where a direct connection _can't_ be established, and in
-those cases traffic falls back to running through the relay. Relay servers **do
-not** have access to the data being transmitted, as it's encrypted end-to-end.
+Relays serve two roles in iroh:
-We're working on formally collecting the direct connection rate from production
-iroh networks. Anecdotal evidence points to roughly 9 out of 10 networking conditions we see in practice allowing a direct connection to be established. Our holepunching implementation is deterministic - if it works between two devices once, it should continue to work as long as their networking setup remains stable.
+1. **Holepunching assistance.** When two endpoints first connect, they exchange network information through the relay to attempt a direct P2P connection.
+2. **Encrypted traffic fallback.** If a direct connection can't be established (due to strict NATs, firewalls, or other network conditions), traffic flows through the relay instead.
-## Public relays
+Once a direct path is established, the relay steps back and data flows peer-to-peer. Relay servers **cannot read** any of the traffic they handle — it's encrypted end-to-end.
-iroh is configured with a set of public relays provided by [n0.computer](https://n0.computer) that are free to use. The public relays rate-limit
-traffic that flows through the relay. This is to prevent abuse, and ensure the
-relays are available to everyone. There are no guarantees around uptime or
-performance when using the public relays.
+In practice, roughly 9 out of 10 networking conditions allow a direct connection. iroh's holepunching implementation is deterministic: if it works between two devices once, it will continue to work as long as their networking setup stays stable.
-We recommend using the public relays for development and testing, as they are
-free to use and require no setup. However, for production systems, we recommend
-using dedicated relays instead.
+## Deploy your own relay
+
+
+ Sign up for Iroh Services and spin up a managed relay for your project in minutes.
+
-## Dedicated relays
-For production use, we recommend using dedicated relays. Dedicated relays are relay
-servers that are either self-hosted or provided as a managed service. Dedicated
-relays provide better performance, security, and uptime guarantees compared to
-the public relays.
+## Why relays are better
-## Why this architecture is powerful
+Unlike traditional servers, relay servers are **stateless**. They don't store your application data — they just facilitate connections.
-This approach makes uptime management significantly easier compared to
-traditional client-server architectures:
+- **No database synchronization.** Nothing to replicate across relay instances.
+- **No state migration.** When a relay goes down, clients reconnect to another with no data loss.
+- **Simple scaling.** Spin relay instances up or down like any lightweight service.
+- **Automatic failover.** Iroh can attempt to connect to multiple relays automatically; as long as one is reachable, your peers find each other.
-**Stateless servers, stateful clients**
-Unlike traditional servers that store your application's data and state, relay
-servers are just connection facilitators. All your business logic and data lives
-in your clients. This means:
+This inverts the traditional model: relays are disposable connection facilitators, while your clients own all the application state and logic.
-- **No database synchronization** - You don't need to worry about keeping multiple server databases in sync or handling data replication
-- **No state migration** - When a relay goes down, clients simply reconnect to another relay without any data loss or state transfer
-- **Simple server management** - Relay servers are lightweight and easy to spin up or down. No complex deployment procedures or data migration steps
+## Public relays
-**Automatic failover**
-iroh clients automatically try multiple relays when connecting. If one relay is unavailable, clients seamlessly fall back to another relay in your list without application-level retry logic. Your peers will find each other as long as at least one relay is reachable.
+Iroh hardcodes a set of public relays provided by
+[n0.computer](https://n0.computer), free to use.
-**Multi-cloud resilience**
-For even better guarantees, you can distribute relays across multiple cloud providers. If one provider experiences an outage, your application keeps running on relays hosted elsewhere. Since relays don't store state, you can freely mix providers without worrying about cross-cloud data consistency.
+Public relays:
-**Cost-effective scaling**
-Adding capacity means spinning up more lightweight relay instances, not provisioning databases or managing complex stateful server infrastructure. You can easily scale up for peak usage and scale down during quiet periods.
+- Rate-limit traffic to prevent abuse
+- Carry no uptime or performance guarantees
+- Are shared across all iroh developers worldwide
-This architecture inverts the traditional model: instead of treating servers as precious stateful resources and clients as disposable, relay-based architectures treat relays as disposable connection facilitators while clients own the application state and logic.
+**Public relays are suitable for development and testing.** For production, use dedicated relays.
-## Connection Changes
+## Dedicated relays
-During the lifespan of a connection, networking conditions can change, for
-example when a user switched from 5G to WiFi, plugs in an ethernet cable, or a
-sysadmin modifies router configurations. The connection may change from direct
-to relayed, or even a mixed combination of the two. Iroh will automatically
-switch between direct and relayed connections as needed, without any action
-required from the application.
+Dedicated relays are relay servers provisioned exclusively for your project — either managed through Iroh Services or self-hosted.
-## Read more
+They offer:
+
+- **Isolation** — no noisy neighbors; your traffic is yours alone
+- **Uptime guarantees** — SLAs available via [Iroh Services](/iroh-services/relays)
+- **Version locking** — stay on a specific iroh version or run blue/green deployments
+- **Multi-region & multi-cloud** — deploy relays across regions and providers for resilience
+
+## Deploy your own relay
+
+
+ Sign up for Iroh Services and spin up a managed relay for your project in minutes.
+
+
+Or self-host using the open-source relay binary:
-- [Dedicated infrastructure guide](/deployment/dedicated-infrastructure)
- [Relay source code](https://github.com/n0-computer/iroh/tree/main/iroh-relay)
- [Relay binary releases](https://github.com/n0-computer/iroh/releases)
-- [Managed relay service](/iroh-services/relays)
+- [Dedicated infrastructure guide](/deployment/dedicated-infrastructure)
diff --git a/deployment/dedicated-infrastructure.mdx b/deployment/dedicated-infrastructure.mdx
index 0e1a4d3..b3dd2aa 100644
--- a/deployment/dedicated-infrastructure.mdx
+++ b/deployment/dedicated-infrastructure.mdx
@@ -2,6 +2,8 @@
title: "Dedicated Infrastructure"
---
+import RelayEndpointConfig from '/snippets/relay-endpoint-config.mdx';
+
By default, iroh will use public shared infrastructure to facilitate connections over
DNS and end-to-end encryption over relays. This infrastructure comprises:
@@ -17,14 +19,30 @@ We recommend using the public relays for development and testing, as they are
free to use and require no setup. However, for production systems, we recommend
using dedicated relays instead.
+
+ Sign up for Iroh Services and spin up a managed relay for your project in minutes.
+
+
+
+
+ Learn how to self-host a relay for your project.
+
+
## Using dedicated relays
-To use dedicated relays with your iroh endpoint, you need to configure the
-endpoint to use your relay's URL.
+To use dedicated relays with your iroh endpoint, configure it with your relay URLs:
+
+
-For detailed information on configuring custom relays, including code examples
-and API documentation, see the [iroh relay configuration
-guide](/iroh-services/relays/managed).
+For full deployment steps, see the [managed relay guide](/iroh-services/relays/managed).
## Why use dedicated relays in production?
@@ -33,21 +51,13 @@ enhanced security, better uptime guarantees, and greater control over your netwo
using your own servers, you can optimize connection speeds and reduce
latency for your specific use case.
-If you require more control over your relay infrastructure, you can choose to
-[self-host your own
-relay](https://github.com/n0-computer/iroh/tree/main/iroh-relay) or [upgrade to
-a managed relay service](/iroh-services/relays). This managed relay
-service is monitored by [n0.computer](https://n0.computer) who maintain the iroh project, and
-offers SLAs around uptime and performance.
-
-[Sign up for a free account](https://n0des.iroh.computer?utm_source=docs&utm_content=dedicated-infrastructure) to get started.
## Recommended setup
We recommend setting up at least two relays for redundancy in different regions.
For example, you could set up one relay in North America and another in Europe.
-### Why this architecture is powerful
+## Why this architecture is powerful
This approach makes uptime management significantly easier compared to
traditional client-server architectures:
diff --git a/docs.json b/docs.json
index 188fd76..81ec2f1 100644
--- a/docs.json
+++ b/docs.json
@@ -140,7 +140,7 @@
"primary": {
"type": "button",
"label": "Login",
- "href": "https://n0des.iroh.computer?utm_source=docs&utm_content=nav-login"
+ "href": "https://services.iroh.computer?utm_source=docs&utm_content=nav-login"
}
},
"contextual": {
diff --git a/images/add-relay.png b/images/add-relay.png
new file mode 100644
index 0000000..1ea1f1c
Binary files /dev/null and b/images/add-relay.png differ
diff --git a/images/create-project.png b/images/create-project.png
new file mode 100644
index 0000000..c599f26
Binary files /dev/null and b/images/create-project.png differ
diff --git a/images/region-relay.png b/images/region-relay.png
new file mode 100644
index 0000000..0b82a09
Binary files /dev/null and b/images/region-relay.png differ
diff --git a/iroh-services/access.mdx b/iroh-services/access.mdx
index 7117381..5c91348 100644
--- a/iroh-services/access.mdx
+++ b/iroh-services/access.mdx
@@ -36,7 +36,7 @@ To authorize endpoints to push metrics to your project, Iroh Services uses API K
```rust
use iroh::Endpoint;
-use iroh_n0des::Client;
+use iroh_services::Client;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
diff --git a/iroh-services/billing/faq.mdx b/iroh-services/billing/faq.mdx
index 2ffabaf..94c0c16 100644
--- a/iroh-services/billing/faq.mdx
+++ b/iroh-services/billing/faq.mdx
@@ -39,7 +39,7 @@ details.
## Where can I see my invoices?
Invoices are available in the **Settings** > **Billing** section of your
-[project dashboard](https://n0des.iroh.computer).
+[project dashboard](https://services.iroh.computer).
## Are taxes included in the prices?
diff --git a/iroh-services/billing/index.mdx b/iroh-services/billing/index.mdx
index 2823a9c..891ed0b 100644
--- a/iroh-services/billing/index.mdx
+++ b/iroh-services/billing/index.mdx
@@ -14,7 +14,7 @@ Iroh Services offers plans to fit your needs, from free tiers for experimentatio
| **Net Diagnostics** | Community support | Priority support tickets | Guaranteed SLA response times |
| **Support** | Discord | Email & Discord | Dedicated support & professional services |
-For full plan details and pricing, visit the [pricing page](https://n0des.iroh.computer/pricing).
+For full plan details and pricing, visit the [pricing page](https://services.iroh.computer/pricing).
## How billing works
@@ -23,7 +23,7 @@ Iroh Services billing is usage-based, calculated monthly. Your bill is determine
- **Your plan tier** — each plan includes a base set of features and resource allocations.
- **Resource usage** — additional charges may apply for usage beyond what's included in your plan, such as metrics volume or relay bandwidth.
-Billing is managed through the [Iroh Services dashboard](https://n0des.iroh.computer). You can view your current plan, usage, and invoices at any time.
+Billing is managed through the [Iroh Services dashboard](https://services.iroh.computer). You can view your current plan, usage, and invoices at any time.
## Next steps
diff --git a/iroh-services/billing/manage-subscription.mdx b/iroh-services/billing/manage-subscription.mdx
index 0df8b8f..9908d92 100644
--- a/iroh-services/billing/manage-subscription.mdx
+++ b/iroh-services/billing/manage-subscription.mdx
@@ -3,7 +3,7 @@ title: "Manage Your Subscription"
description: "Upgrade, downgrade, or cancel your Iroh Services subscription"
---
-Manage your subscription from the [Iroh Services dashboard](https://n0des.iroh.computer).
+Manage your subscription from the [Iroh Services dashboard](https://services.iroh.computer).
## Upgrade your plan
diff --git a/iroh-services/metrics/custom.mdx b/iroh-services/metrics/custom.mdx
index 5bbe072..385daa8 100644
--- a/iroh-services/metrics/custom.mdx
+++ b/iroh-services/metrics/custom.mdx
@@ -37,7 +37,7 @@ For a complete example, see the [iroh-ping example on GitHub](https://github.com
```rust
use iroh::Endpoint;
-use iroh_n0des::Client;
+use iroh_services::Client;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
diff --git a/iroh-services/metrics/endpoint.mdx b/iroh-services/metrics/endpoint.mdx
index 7bfe4b2..3b19394 100644
--- a/iroh-services/metrics/endpoint.mdx
+++ b/iroh-services/metrics/endpoint.mdx
@@ -29,7 +29,7 @@ extended retention and lookback for endpoint-level metrics. This allows you to
analyze historical data and identify trends over time, which can be crucial for
long-term performance optimization and troubleshooting.
-Please refer to the [pricing page](https://n0des.iroh.computer/pricing?utm_source=docs&utm_content=endpoint-metrics) for more details on plan features
+Please refer to the [pricing page](https://services.iroh.computer/pricing?utm_source=docs&utm_content=endpoint-metrics) for more details on plan features
and benefits.
[Contact us](mailto:support@iroh.computer) if you have any questions about upgrading your plan.
diff --git a/iroh-services/metrics/how-it-works.mdx b/iroh-services/metrics/how-it-works.mdx
index 39beefc..5a7dbf2 100644
--- a/iroh-services/metrics/how-it-works.mdx
+++ b/iroh-services/metrics/how-it-works.mdx
@@ -11,15 +11,15 @@ Iroh Services dashboard. Metrics will be automatically collected and reported on
1. The endpoint is built using the API Secret Key
2. The endpoint sends metrics data to a Cloud endpoint hosted in the Iroh Services platform.
3. The Iroh Services platform aggregates the data and makes it available in the project dashboard.
-4. Iroh services deletes data on a rolling bases outside the retention window, based on your [plan](https://n0des.iroh.computer/pricing).
+4. Iroh services deletes data on a rolling bases outside the retention window, based on your [plan](https://services.iroh.computer/pricing).
## How it works
Once an iroh endpoint is integrated in rust program, you can add an
-`iroh_n0des::Client` to begin sending metrics to the Iroh Services platform.
+`iroh_services::Client` to begin sending metrics to the Iroh Services platform.
-1. The `iroh_n0des::Client` will automatically detect any running iroh instance in your
+1. The `iroh_services::Client` will automatically detect any running iroh instance in your
endpoint and begin sending metrics as long as the secret and the ssh
key match what has been set up in your project on the Iroh Services platform.
2. Call `endpoint.online().await` before creating the Client. The endpoint must be online before the client is instantiated in order to
@@ -30,7 +30,7 @@ authenticate to the platform.
## Metrics Retention
Project-level metrics are retained based on your events plan. Please refer to the
-[pricing page for more details on plan features and benefits](https://n0des.iroh.computer/pricing).
+[pricing page for more details on plan features and benefits](https://services.iroh.computer/pricing).
Endpoint level metrics are only available on Enterprise plans. For projects on
these plans, the amount of endpoint-level raw data retained is calculated on
diff --git a/iroh-services/metrics/index.mdx b/iroh-services/metrics/index.mdx
index a900147..f0ca0bf 100644
--- a/iroh-services/metrics/index.mdx
+++ b/iroh-services/metrics/index.mdx
@@ -56,4 +56,4 @@ No personally identifiable information (PII) is collected or stored. The
focus is on overall network performance rather than individual user behavior.
If you have concerns about data collection, please refer to the
-[privacy policy](https://n0des.iroh.computer/legal/privacy).
+[privacy policy](https://services.iroh.computer/legal/privacy).
diff --git a/iroh-services/net-diagnostics/usage.mdx b/iroh-services/net-diagnostics/usage.mdx
index 249270d..e2ea117 100644
--- a/iroh-services/net-diagnostics/usage.mdx
+++ b/iroh-services/net-diagnostics/usage.mdx
@@ -13,11 +13,11 @@ display.
To add net diagnostics support to your own iroh application, you need to:
-1. Connect to the n0des platform with an `iroh_n0des::Client`
+1. Connect to the n0des platform with an `iroh_services::Client`
2. Grant the `NetDiagnosticsCap::GetAny` capability to n0des so it can request diagnostics from your endpoint
3. Run a `ClientHost` so n0des can dial back into your endpoint
-[See the `net_diagnostics` example in the `iroh-n0des` repository for a complete working example of this integration.](https://github.com/n0-computer/iroh-n0des/tree/main/examples/net_diagnostics.rs)
+[See the `net_diagnostics` example in the `iroh-services` repository for a complete working example of this integration.](https://github.com/n0-computer/iroh-services/tree/main/examples/net_diagnostics.rs)
### 1. Update Cargo.toml
@@ -25,7 +25,7 @@ Add the following to your `Cargo.toml`:
```toml
[dependencies]
-iroh-n0des = { version = "...", features = ["net_diagnostics", "client_host"] }
+iroh-services = { version = "...", features = ["net_diagnostics", "client_host"] }
```
### 2. Get Your API Secret
@@ -45,7 +45,7 @@ Here's a minimal integration:
```rust
use anyhow::Result;
use iroh::{Endpoint, protocol::Router};
-use iroh_n0des::{
+use iroh_services::{
ApiSecret, Client, ClientHost, CLIENT_HOST_ALPN, API_SECRET_ENV_VAR_NAME,
caps::NetDiagnosticsCap,
};
diff --git a/iroh-services/quickstart.mdx b/iroh-services/quickstart.mdx
index 5dbdb33..80ef8b5 100644
--- a/iroh-services/quickstart.mdx
+++ b/iroh-services/quickstart.mdx
@@ -7,7 +7,7 @@ This guide will walk you through hooking up your first endpoint to Iroh Services
## Prerequisites
-- [An Iroh Services Account](https://n0des.iroh.computer?utm_source=docs&utm_content=quickstart)
+- [An Iroh Services Account](https://services.iroh.computer?utm_source=docs&utm_content=quickstart)
- [Rust Language](https://rust-lang.org/tools/install/)
*While iroh is currently only available in Rust, it can be deployed in many other languages and environments.
@@ -16,11 +16,11 @@ Languages](deployment/other-languages) guide for more information.*
## Step 1: Create a Project
-After signing in, [create a new project](https://n0des.iroh.computer/projects/projects/new?utm_source=docs&utm_content=quickstart). This will be your
+After signing in, [create a new project](https://services.iroh.computer/projects/projects/new?utm_source=docs&utm_content=quickstart). This will be your
sandbox for all endpoints. This is the control center where you can manage and
monitor your infrastructure, including relays, metrics, and networks.
-[](https://n0des.iroh.computer/projects/projects/new?utm_source=docs&utm_content=quickstart)
+[](https://services.iroh.computer/projects/projects/new?utm_source=docs&utm_content=quickstart)
## Step 2: Get Your API Key
@@ -34,10 +34,10 @@ this to authenticate your endpoints.
## Step 3: Add the Iroh Services Client
-Add the `iroh-n0des` crate to your `Cargo.toml`:
+Add the `iroh-services` crate to your `Cargo.toml`:
```
-cargo add iroh-n0des
+cargo add iroh-services
```
@@ -47,7 +47,7 @@ Then, in your code, create a client and connect your endpoint to Iroh Services.
```rust
use iroh::Endpoint;
-use iroh_n0des::Client;
+use iroh_services::Client;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
diff --git a/iroh-services/relays/index.mdx b/iroh-services/relays/index.mdx
index 080ea88..44ca19a 100644
--- a/iroh-services/relays/index.mdx
+++ b/iroh-services/relays/index.mdx
@@ -1,45 +1,23 @@
---
-title: "Relays"
-description: "Relays route encrypted traffic when direct P2P connections aren't possible"
+title: "Overview"
+description: "Deploy dedicated relay infrastructure for your iroh project"
---
-# Relays
-
-##### Relays route encrypted traffic unless a direct, P2P connection is feasible. This approach allows devices to maintain secure, low-latency connection, even in challenging network situations.
-
-Devices running iroh will attempt to connect to each other directly either on the
-local area network (LAN), or over the internet using NAT traversal techniques like
-hole punching.
-
-However, in some situations direct connections are not possible. This can be due to
-strict NATs, firewalls, or other network configurations that prevent direct peer-to-peer
-connections.
-
-In these cases, relays provide a reliable fallback mechanism to ensure
-connectivity between devices by forwarding traffic between them over the relay
-server. This traffic is end-to-end encrypted, so the relay server cannot read
-the contents of the communication.
-
-Relays help in the following ways:
-- **NAT Traversal**: Many devices are behind Network Address Translators (NATs) or firewalls that prevent direct connections. Relays help bypass these restrictions by acting as a middleman.
-- **Connection Stability**: Relays can provide a stable connection point, especially in cases where direct connections are unreliable.
-- **Global Reach**: By using relays located in various geographic locations, devices can connect more efficiently, reducing latency and improving uptime.
-
-For more information on relays, please refer to the [Relay concepts documentation](/concepts/relays).
-
-## Hosted Relays
-
-By default, iroh endpoints will use public relays to facilitate connections when direct
-peer-to-peer connections are not possible. These relays are managed and
-maintained by the [n0.computer](https://n0.computer), and are shared by a global public network of
-developers, with rate limits.
-
-However, for production use cases you will want to set up your own private relays, to
-ensure that your traffic is not mixed with other users, and to have more control
-over the relay infrastructure.
-
-You can do this in one of three ways:
-
-1. **[Public Cloud Relays](/iroh-services/relays/public)**: By default, all iroh nodes will connect to the public cloud relays. These relays have no guaranteed uptime and can be subject to noisy neighbors.
-2. **[Dedicated Relays](/iroh-services/relays/managed)**: You can have relays run by the [n0.computer](https://n0.computer) , by adding them to your project through the Iroh Services platform. This is the easiest way to get started with relays.
-3. **[Self-hosted](https://github.com/n0-computer/iroh/tree/main/iroh-relay)**: You can set up and manage your own relay servers using the iroh relay software. This gives you full control over the relay infrastructure, but requires more effort to set up and maintain.
+Iroh Services lets you run dedicated relay servers for your project — no infrastructure to manage yourself. For background on how relays work, see [Relay concepts](/concepts/relays).
+
+
+
+ Dedicated relays provisioned through Iroh Services. Isolated, version-locked, with SLAs. Recommended for production.
+
+
+ Free shared relays built into iroh. No setup required. Development and hobby use only.
+
+
diff --git a/iroh-services/relays/managed.mdx b/iroh-services/relays/managed.mdx
index 94404ef..1813fb5 100644
--- a/iroh-services/relays/managed.mdx
+++ b/iroh-services/relays/managed.mdx
@@ -1,56 +1,60 @@
---
-title: "Managed Relays"
-description: "Dedicated relay infrastructure managed by n0.computer"
+title: "Managed Hosting"
+description: "Deploy and configure dedicated relay infrastructure through Iroh Services"
---
-By default, iroh endpoints will use publically-hosted relays to facilitate connections when direct
-peer-to-peer connections are not possible. These relays are managed and
-maintained by [n0.computer](https://n0.computer).
-
-For production, you will need to deploy your own hosted relay. you can do that through the [Iroh Services](https://n0des.iroh.computer?utm_source=docs&utm_content=managed-relays)
-platform, and then add it to your rust client endpoint configuration.
-
-## Key Benefits
-
-- **Fully Managed Service**: Number 0's engineering experts handle all day-to-day operations and infrastructure maintenance.
-- **Isolation**: Maintain full control over your cloud infrastructure and scaling properties, with no noisy neighbors.
-- **Version locking**: Ensure compatibility by locking to specific iroh versions or enable blue/green deployments.
-- **Multi-Region & Multi-Cloud Support**: Enhance reliability and performance by deploying relays across various regions and cloud providers.
-- **On-prem**: Deploy relays within your own data centers or private clouds for enhanced security and compliance. Please [contact us](mailto:support@iroh.computer) for more information.
-- **Custom SLAs**: Tailor service level agreements to meet your specific business needs. Please [contact us](mailto:support@iroh.computer) for more information.
-
-## Configuration
-
-```rust
-use iroh::Endpoint;
-use iroh::relay::RelayUrl;
-
-#[tokio::main]
-async fn main() -> anyhow::Result<()> {
- // Configure your endpoint with dedicated relays
- let relay_url1: RelayUrl = "RELAY_URL_1".parse()?;
- let relay_url2: RelayUrl = "RELAY_URL_2".parse()?;
-
- let endpoint = Endpoint::builder()
- .relay_mode(iroh::endpoint::RelayMode::Custom(vec![relay_url1, relay_url2]))
- .bind()
- .await?;
-
- Ok(())
-}
-```
-
-## Recommended Relay Setup
-
-For production use cases, we recommend setting up at least two relays in
-different geographic regions. This ensures that if one relay goes down or
-becomes unreachable, your endpoints can still connect through the other relay.
-
-Each relay can handle up to 60,000 concurrent connections, so for larger scale
-deployments, you may need to set up multiple relays in each region or [contact
-us to increase the size of your relays](mailto:support@iroh.computer).
-
-## Support policy
-
-As part of your project-level and relay-level metrics, you will be able to
-monitor status of your relays. On the pro plan, we offer priority support.
+import RelayEndpointConfig from '/snippets/relay-endpoint-config.mdx';
+
+Managed relays are dedicated relay servers provisioned through the Iroh Services platform and operated by n0.computer. Unlike the [public relays](/iroh-services/relays/public), managed relays are exclusively yours — no shared traffic, no rate limits, and with uptime SLAs.
+
+## What you get
+
+- **Fully managed** — n0.computer handles operations, maintenance, and upgrades
+- **Isolation** — your traffic only; no noisy neighbors
+- **Version locking** — pin to a specific iroh version or run blue/green deployments
+- **Multi-region & multi-cloud** — deploy across regions and providers for resilience
+- **On-prem** — available on Enterprise plans; [contact us](mailto:support@iroh.computer)
+- **Custom SLAs** — [contact us](mailto:support@iroh.computer)
+
+## Deploy a relay
+
+### 1. Sign up and create a Pro project
+
+Sign up at [services.iroh.computer](https://services.iroh.computer?utm_source=docs&utm_content=managed-relays) and create a project if you haven't already.
+
+The project must be on the Pro plan to deploy managed relays. You can also upgrade your project to Pro in the billing settings.
+
+
+
+### 2. Add a relay
+
+Navigate to **Relays** in your project sidebar and click **Deploy Relay**. Select a region for your relay.
+
+
+
+
+### 3. Copy your relay URL
+
+Once deployed, your relay URL will appear in the dashboard. Copy it — you'll need it to configure your endpoints.
+
+### 4. Configure your endpoint
+
+Set your endpoint to use your dedicated relay URLs instead of the public relays:
+
+
+
+### 5. Verify connectivity
+
+Go to your project's **Relays** page to confirm your endpoints are connecting through your dedicated relay. You should see connected endpoint counts and traffic metrics.
+
+
+
+## Recommended setup
+
+For production, deploy at least two relays in different geographic regions. If one relay becomes unreachable, iroh automatically falls back to the next one in your list — your peers will still find each other.
+
+Each relay handles up to 60,000 concurrent connections. For larger deployments, [contact us](mailto:support@iroh.computer) to increase relay capacity.
+
+## Support
+
+Relay status and metrics are available in your project dashboard under **Relays**. On the Pro plan, we offer priority support. [Contact us](mailto:support@iroh.computer) for Enterprise SLAs.
diff --git a/iroh-services/relays/public.mdx b/iroh-services/relays/public.mdx
index c01eb91..2f064ff 100644
--- a/iroh-services/relays/public.mdx
+++ b/iroh-services/relays/public.mdx
@@ -3,42 +3,23 @@ title: "Public Relays"
description: "Free shared relays for development and hobby use"
---
+iroh includes a set of public relays provided by [n0.computer](https://n0.computer), available to all iroh users at no cost. No setup required — they work out of the box.
-By default, all endpoints will use public shared relays to facilitate connections, both forwarding traffic when direct
-peer-to-peer connections are not possible as well as facilitate holepunching for
-direct connections. These relays are managed and maintained by [n0.computer](https://n0.computer),
-and are shared by a global public network of developers.
+Public relays are suitable for **development and hobby use only**. For production, use [managed relays](/iroh-services/relays/managed).
## Support policy
-The public relays will always be available for free and hobby plans, but are not
-covered by any SLA or uptime guarantee.
+- No SLA or uptime guarantee
+- Only the latest stable release of iroh is officially supported — older versions may work, but this is not guaranteed and can change at any time
+- No version locking — n0.computer reserves the right to remove support for older iroh versions at any time
+- Traffic is rate-limited to prevent abuse
-The public relays will only officially support the latest stable release of
-iroh. If older versions of iroh work with the public relay, this is a happy
-accident, and not something to be relied upon for production use cases.
+For version locking, blue/green deployments, or multi-region support, [deploy a managed relay](/iroh-services/relays/managed).
-There is no version locking. This means that [n0.computer](https://n0.computer) reserves the right to remove
-support for old versions of iroh from the public relay infrastructure at any
-time.
+## Privacy and security
-For version locking, blue/green deployments, multi-region or multi-cloud
-support, we recommend that you upgrade to a [managed
-relay](/iroh-services/relays/managed).
+All traffic through the public relays is end-to-end encrypted. The relays cannot read any of the traffic they forward.
-## Privacy and Security
+However, the relays can see connection metadata: source and destination IP addresses, connection times, and the amount of data transferred. We recommend against using public relays for sensitive or confidential data.
-All traffic sent through the public relays is end-to-end encrypted. The relays
-are not able to read any of the traffic that they forward or help connect.
-However, the relays are able to see metadata about connections, such as source
-and destination IP addresses, connection times, and the amount of data
-transferred.
-
-We recommend that you do not use the public relays for sensitive or
-confidential data. If you need more control over your relay infrastructure, we
-recommend that you upgrade to a [managed relay](/iroh-services/relays/managed) or
-[self-host your own relay](https://iroh.computer).
-
-We monitor the public relays for abuse and malicious activity. If we detect
-abuse, we reserve the right to block offending IP addresses or users from
-accessing the public relays.
+We monitor public relays for abuse. If we detect malicious activity, we reserve the right to block offending IP addresses or users.
diff --git a/snippets/relay-endpoint-config.mdx b/snippets/relay-endpoint-config.mdx
new file mode 100644
index 0000000..1cccd22
--- /dev/null
+++ b/snippets/relay-endpoint-config.mdx
@@ -0,0 +1,17 @@
+```rust
+use iroh::Endpoint;
+use iroh::relay::RelayUrl;
+
+#[tokio::main]
+async fn main() -> anyhow::Result<()> {
+ let relay_url1: RelayUrl = "YOUR_RELAY_URL_US".parse()?;
+ let relay_url2: RelayUrl = "YOUR_RELAY_URL_EU".parse()?;
+
+ let endpoint = Endpoint::builder()
+ .relay_mode(iroh::endpoint::RelayMode::Custom(vec![relay_url1, relay_url2]))
+ .bind()
+ .await?;
+
+ Ok(())
+}
+```