Your Cameras.
Anywhere.
Instantly.

Stop fighting with firewalls and NAT. Access your RTSP streams from anywhere with reliable cloud endpoints.

❌ Before TheRelay
rtsp://192.168.1.64:554/stream
# Only works on local network
# Blocked by firewall
# Dynamic IP headaches
✅ After TheRelay
rtsp://therelay.net/your-org/camera-01
# Works from anywhere
# Secure & authenticated
# Always available

Why Accessing RTSP Cameras is Hard

Traditional approaches are complex, unreliable, and insecure

🔒
Firewall Restrictions

Corporate firewalls block incoming RTSP connections. Port forwarding is often impossible or forbidden by IT policies.

🌐
NAT Traversal

Cameras behind NAT are unreachable from the internet. Dynamic IPs change constantly, breaking your integrations.

Complex Setup

VPNs, reverse proxies, STUN/TURN servers - the traditional solutions are complex and fragile.

Built for Developers

Everything you need to access RTSP streams programmatically

🎯

Direct RTSP Access

No transcoding, no protocol conversion. Pure RTSP passthrough with minimal latency. Works with OpenCV, FFmpeg, VLC, and any RTSP client.

🚀

Instant Deployment

From localhost to cloud in 30 seconds. Run our agent, and your cameras are instantly accessible from anywhere.

🔐

Enterprise Security

Token-based authentication, encrypted tunnels, and granular access controls. Your streams are protected end-to-end.

📊

Multi-Camera Management

Organize cameras by location, purpose, or project. Manage hundreds of streams through a single dashboard.

🤖

Optional AI Layer

Add object detection, motion alerts, and analytics without changing your code. Process streams with YOLO, TensorFlow, or custom models.

⚙️

Simple API

RESTful API for camera management. Provision new streams, update configurations, and monitor health programmatically.

How It Works

Three simple steps to global camera access

1

Install Agent

Deploy our lightweight agent on your local machine or remote server. Available for both Windows and Linux.

2

Add Cameras

Open the Web UI and simply paste your local RTSP URLs. The agent handles a secure outbound connection to TheRelay Cloud.

3

Access Anywhere

Use the provided cloud URLs in your applications. Standard RTSP protocol, no special libraries needed.

Agent Installation

From download to live video in seconds—no hoops, no hassle.

Windows Install
Download & Run
A tiny executable installs the agent as a lightweight background service—ready in seconds.

Launch once and you’re done. The agent starts immediately, keeps running after reboot, and quietly looks after itself—so you can focus on your cameras, not your infrastructure.

What to Expect

1
Download
Grab the small installer from your dashboard.
2
Run Once
The agent installs, starts, and registers automatically.
3
Add Cameras
Open the Web UI and paste your local RTSP URLs.

Most setups complete in seconds; actual time depends on network speed and device performance.

Linux Install
Start from Your Dashboard
Kick off the install in your terminal—no prompts. The agent becomes a managed service instantly.

The service registers to your organization, stays healthy in the background, and restarts automatically. No firewall juggling or static IPs required—the connection is secure and outbound-only.

What to Expect

1
Start Install
Begin from your dashboard with a short step in your terminal.
2
Service Online
The agent registers and runs as a managed service automatically.
3
Add Cameras
Paste local RTSP URLs in the Web UI—cloud URLs are ready immediately.

Works across popular distros and architectures. Most installs finish in seconds.

Developer Integration

Works with your existing tools and libraries

import os
import cv2

RELAY_TOKEN = os.getenv('RELAY_TOKEN')
RELAY_ORG_ID = os.getenv('RELAY_ORG_ID')

cam = 'entrance-cam'

# Your TheRelay stream URL (with your auth token)
stream_url = f"rtsp://stream.therelay.net/{RELAY_TOKEN}/{RELAY_ORG_ID}/{cam}"

# Open the stream exactly like a local camera
cap = cv2.VideoCapture(stream_url)

if not cap.isOpened():
    raise RuntimeError("Failed to open stream")

while True:
    ok, frame = cap.read()
    if not ok:
        break

    # Your CV/AI processing here
    results = detect_objects(frame)

    cv2.imshow("TheRelay Stream", frame)
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

cap.release()
import { useEffect, useRef } from "react";

type Props = { url: string };

export function SimpleWHEPPlayer({ url }: Props) {
  const videoRef = useRef<HTMLVideoElement>(null);

  useEffect(() => {
    const pc = new RTCPeerConnection();
    pc.addTransceiver("video", { direction: "recvonly" });
    pc.ontrack = (e) => { if (videoRef.current) videoRef.current.srcObject = e.streams[0]; };

    (async () => {
      const offer = await pc.createOffer();
      await pc.setLocalDescription(offer);
      const res = await fetch(url, { method: "POST", headers: { "content-type": "application/sdp" }, body: offer.sdp });
      const answer = await res.text();
      await pc.setRemoteDescription({ type: "answer", sdp: answer });
    })();

    return () => pc.close();
  }, [url]);

  return <video ref={videoRef} autoPlay playsInline muted style={{ width: "100%", background: "#000" }} />;
}

// Usage:
// e.g., app/page.tsx
import { SimpleWHEPPlayer } from "./SimpleWHEPPlayer";

export default function Page() {
  const token = process.env.RELAY_TOKEN!;
  const org = process.env.RELAY_ORG_ID!;
  const cam = "exit-cam-06";

  const url = `https://webrtc.therelay.net/${token}%2F${org}%2F${cam}/whep`;

  return <SimpleWHEPPlayer url={url} />;
}
package main
import (
	"fmt"
	"os"
	"gocv.io/x/gocv"
)

func main() {
	token := os.Getenv("RELAY_TOKEN")
	org := os.Getenv("RELAY_ORG_ID")
	cam := "warehouse-01"

	url := fmt.Sprintf("rtsp://stream.therelay.net/%s/%s/%s", token, org, cam)
	fmt.Println("Opening:", url)

	webcam, err := gocv.OpenVideoCapture(url)
	if err != nil { panic(err) }
	defer webcam.Close()

	window := gocv.NewWindow("TheRelay Stream")
	defer window.Close()

	img := gocv.NewMat()
	defer img.Close()

	for {
		if ok := webcam.Read(&img); !ok || img.Empty() {
			break
		}
		// Your CV/AI processing here

		window.IMShow(img)
		if window.WaitKey(1) == 'q' {
			break
		}
	}
}
// src/main.rs
use opencv::{highgui, prelude::*, videoio, Result};
use std::env;

fn main() -> Result<()> {
    let token = env::var("RELAY_TOKEN")?;
    let org   = env::var("RELAY_ORG_ID")?;
    let cam = "exit-cam-02";

    let url = format("rtsp://stream.therelay.net/{}/{}/{}", token, org, cam);
    println!("Opening: {}", url);

    let mut cap = videoio::VideoCapture::from_file(&url, videoio::CAP_FFMPEG)?;
    if !videoio::VideoCapture::is_opened(&cap)? {
        panic!("Failed to open stream");
    }

    highgui::named_window("TheRelay Stream", highgui::WINDOW_AUTOSIZE)?;
    loop {
        let mut frame = Mat::default();
        if !cap.read(&mut frame)? || frame.empty() {
            break;
        }
        // Your CV/AI processing here

        highgui::imshow("TheRelay Stream", &frame)?;
        if highgui::wait_key(1)? == 'q' as i32 {
            break;
        }
    }
    Ok(())
}

Use Cases

From security to AI, TheRelay powers critical applications

🏢 Enterprise Security

  • Multi-site surveillance
  • Remote facility monitoring
  • Incident response systems
  • Access control integration

🤖 AI & Computer Vision

  • Object detection pipelines
  • Training data collection
  • Real-time analytics
  • Quality inspection systems

🏗️ Industrial IoT

  • Production line monitoring
  • Equipment diagnostics
  • Safety compliance
  • Predictive maintenance

From Localhost to Cloud in 30 Seconds

No credit card required. Full access to all features.

Powered by TheRelay
Web platform that connects to your cameras and sends smart notification alerts.

AI SPOT uses TheRelay to connect any camera to their web platform—securely and with low latency—no port forwarding or VPNs. Alerts are delivered directly on WhatsApp.

💬 WhatsApp alerts
🚧 Perimeter intrusion
🎯 Object tracking & missing
🛡️ Trusted people anti‑spam
🗓️ Scheduled notifications
🔎 Detects people/cars/animals
🚗 Parking occupancy
🅿️ Release + dwell time
💳 QR + Stripe payments
Abusive parking protection
💼 Personalized rates
⚙️ Free parking period rules

AI SPOT × TheRelay

1
Install agent
TheRelay agent runs on‑prem.
2
Register cameras
AI SPOT adds RTSP cameras.
3
Tokenized URLs
TheRelay issues secure livestream endpoints.
4
AI processing
AI SPOT analyzes the livestream and adds the visual analysis layer.
5
Notify & act
Notifications based on workflow configuration.