diff --git a/public/img/user-logos/datum.svg b/public/img/user-logos/datum.svg new file mode 100644 index 00000000..e2ec5587 --- /dev/null +++ b/public/img/user-logos/datum.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/user-logos/fedimint.png b/public/img/user-logos/fedimint.png new file mode 100644 index 00000000..53c7c75d Binary files /dev/null and b/public/img/user-logos/fedimint.png differ diff --git a/public/img/user-logos/rayfish.png b/public/img/user-logos/rayfish.png new file mode 100644 index 00000000..ddc0b02e Binary files /dev/null and b/public/img/user-logos/rayfish.png differ diff --git a/src/app/page.jsx b/src/app/page.jsx index 18c3e1d6..a8a14065 100644 --- a/src/app/page.jsx +++ b/src/app/page.jsx @@ -20,6 +20,7 @@ import logoSwift from '@/images/language-logos/swift.svg'; import logoJavascript from '@/images/language-logos/node.svg'; import logoKotlin from '@/images/language-logos/kotlin.svg'; import logoPython from '@/images/language-logos/python.svg'; +import logoGo from '@/images/language-logos/go.svg'; import { CodeBlockTabs } from '@/components/CodeBlockTabs'; export const metadata = { @@ -34,6 +35,7 @@ const languages = [ { name: 'JavaScript', logo: logoJavascript, href: 'https://docs.iroh.computer/languages/javascript' }, { name: 'Kotlin', logo: logoKotlin, href: 'https://docs.iroh.computer/languages/kotlin' }, { name: 'Python', logo: logoPython, href: 'https://docs.iroh.computer/languages/python' }, + { name: 'Go', logo: logoGo, href: 'https://docs.iroh.computer/languages/go' }, ]; const platforms = [ @@ -177,6 +179,12 @@ export default function Page() {

How are people using iroh?

+ +
+

Remote Access

+

Embed direct, encrypted connections right in your app and create tunnels for remote access instead of third-party VPNs.

+
+

Distributed AI Training

@@ -275,6 +283,7 @@ export default function Page() { { logo: logoJavascript, name: 'JavaScript' }, { logo: logoKotlin, name: 'Kotlin' }, { logo: logoPython, name: 'Python' }, + { logo: logoGo, name: 'Go' }, ].map(({ logo, name }) => ( + + + ) + } + return ( + + + + ) +} + +export default function VPNUseCasePage() { + return ( +
+ + +
+ {/* Hero Section */} +
+
+
+
+

Use Case: Networking

+

+ Zero-trust connectivity +

+

+ Teams are replacing Tailscale, WireGuard, and reverse SSH tunnels with iroh—dial + a device's public key and get a direct, encrypted connection. No coordination + server to run, no ports to open, no third-party app to install. +

+
+ + + + + Talk to Us + +
+
+
+ +
+
+
+
+ + {/* Comparison */} +
+
+
+

Why iroh

+

iroh vs. Tailscale & WireGuard

+
+
+ + + + + + + + + + {comparison.map((row) => ( + + + + + + ))} + +
irohTailscale / WireGuard
{row.feature}
+
+

+ Iroh connects your app's own devices directly—it's not a general-purpose + replacement for joining a whole network of unrelated machines. +

+
+
+ + {/* The Problem */} +
+
+

The Problem: VPNs Are Infrastructure You Didn't Want to Own

+

+ Reaching a device that isn't sitting on the public internet usually means standing up + a VPN: a coordination server to run and secure, client software to distribute, and firewall + rules to get right. Or it means reverse SSH tunnels and all the operational shenanigans + that come with them. +

+
+

+ “It's Tailscale, but as a library. Instead of standing up VPN + infrastructure—coordination servers, client software, all the network + shenanigans—we dial a device's public key directly from inside our own app + and get a direct, encrypted connection.” +

+
+

+ But what if your app could just dial the other device directly—no separate network + to join, no client to install, no infrastructure to babysit? +

+
+
+ + {/* The Solution */} +
+
+
+
+

The Solution: Dial Keys, Not IPs

+

+ Every iroh node has a public key as its address. To reach a device, you dial that key + directly from inside your own application—there's no separate VPN client for + your users to install, and no central network your traffic has to join. +

+
+
+
+ +
+

Dial Keys, Not IPs

+

+ Every node has a cryptographic identity. Connect to a device by its public key, wherever it is. +

+
+
+
+ +
+

Direct Connections

+

+ Iroh punches through NATs and firewalls automatically to connect devices directly. +

+
+
+
+ +
+

Encrypted by Default

+

+ Every connection is end-to-end encrypted, so your platform can't see or modify traffic between devices. +

+
+
+
+ +
+

A Library, Not a Client

+

+ Iroh ships inside your app, so the connection is just part of your product—not a separate piece of software your users manage. +

+
+
+
+
+
+
+ + {/* Built With Iroh */} +
+
+
+

Built With Iroh

+

Open Source VPN Solutions

+
+
+ {builtWithIroh.map((project) => ( + +

{project.name}

+

{project.description}

+
+ ))} +
+
+
+ + {/* CTA */} +
+
+

+ Ready to Skip the VPN Infrastructure? +

+

+ Get started with iroh in minutes. No complex configuration required. +

+
+ + + + + + +
+
+
+ + +
+
+ ) +} diff --git a/src/components/Header.jsx b/src/components/Header.jsx index 202e9fc7..dcfd79ba 100644 --- a/src/components/Header.jsx +++ b/src/components/Header.jsx @@ -22,6 +22,7 @@ export const navItems = [ {label: 'Enterprise', href: '/services/enterprise'}, ]}, {content: 'Use Cases', href: '/#solutions', dropdown: [ + {label: 'Remote access', href: '/solutions/vpn'}, {label: 'Distributed AI', href: '/solutions/distributed-ai'}, {label: 'Video Streaming', href: '/solutions/rave'}, {label: 'Real-time Sync', href: '/solutions/delta-chat'}, diff --git a/src/components/home/LogoCloud.jsx b/src/components/home/LogoCloud.jsx index 2236b78d..936f4e45 100644 --- a/src/components/home/LogoCloud.jsx +++ b/src/components/home/LogoCloud.jsx @@ -8,11 +8,15 @@ const companies = [ { name: "spacedrive", ext: "png", href: "https://www.spacedrive.com" }, { name: "nous", ext: "png", href: "https://nousresearch.com" }, { name: "meshllm", ext: "svg", imgClassName: "max-h-12 grayscale", href: "https://meshllm.cloud" }, - { name: "strada", ext: "png", label: "Strada", href: "https://strada.tech" }, + { name: "strada", ext: "png", label: "strada", labelClassName: "font-black", imgClassName: "max-h-6", href: "https://strada.tech" }, { name: "paycode", ext: "svg", href: "https://www.paycode.com.mx" }, { name: "rave", ext: "png", href: "https://rave.io" }, { name: "delta_chat", ext: "png", href: "https://delta.chat" }, - { name: "ottomatic", ext: "png", label: "Ottomatic", href: "https://ottomatic.io" }, + { name: "ottomatic", ext: "png", label: "Ottomatic", imgClassName: "max-h-6", href: "https://ottomatic.io" }, + { name: "rayfish", ext: "png", label: "Rayfish", imgClassName: "max-h-6", href: "https://rayfish.xyz" }, + { name: "outl", label: "Outl", href: "https://outl.app" }, + { name: "datum", ext: "svg", href: "https://www.datum.net" }, + { name: "fedimint", ext: "png", href: "https://fedimint.org" }, ]; // interface LogoCloudProps { @@ -69,27 +73,28 @@ export function LogoCloud({ speed = 0.85, height = 100 }) { {/* Scroller container */}
- {companies.map(({ name, ext, imgClassName, label, href }, index) => ( + {companies.map(({ name, ext, imgClassName, label, labelClassName, href }, index) => ( - {label ? ( - {label} - ) : ( + {ext && ( )} + {label && ( + {label} + )} ))}