Video infrastructure for physical devices

Live video from cameras your network can’t reach.

Streamo turns RTSP cameras, drones, and robots into secure, on-demand streams and clips. One lightweight edge agent, one API, and no port forwarding.

RTSP · RTMPS · HLS · WebRTCOpen source edge agent
See how it works
A direct media path

Outbound only

No VPN or port forwarding

On demand

Nothing runs while idle

Your choice

Cloud CDN or self-hosted

Private by default

Signed, expiring playback

How it works

A private route out, opened only when it’s needed.

The control plane coordinates access. The video itself moves directly from your edge to the media plane, never through Streamo’s API servers.

$ curl -fsSL streamo.in/install.sh | sh
01

Install beside the camera

Run the edge agent on any Windows, Linux, or macOS machine that can reach the camera over the LAN. Camera credentials stay there.

One command · automatic updates

02

Create a session

Your backend asks for a stream. Streamo provisions the media path and wakes the edge over its existing outbound HTTPS connection.

POST /v1/sessions

03

Embed the returned URL

Play signed HLS in your application, request a JPEG frame for an agent, or keep the recording as a clip with an explicit retention period.

Viewer leaves · stream stops

The product

One API across live and stored video.

Use only the pieces you need. Every endpoint is scoped to a project key, and every live session carries its own expiry.

See the reference viewer

Live sessions

Open an RTSP camera only while someone is watching. Return tokenized HLS for the browser, with automatic teardown when heartbeats stop.

POST /v1/sessions

Push ingest

Skip the edge entirely for drones, OBS, phones, or robots. Publish over RTMPS—or WHIP for sub-second WebRTC playback.

{ "ingest": "push" }

Clips and recordings

Upload clips directly to S3-compatible storage or keep a live session recording. Retention belongs to each asset, not an account-wide policy.

POST /v1/assets

Frames for AI

Request the current frame as a JPEG. The included MCP server lets an agent find a camera, look once, and close the session when it is done.

GET …/frame.jpg
Cloudflare Stream Self-hosted MediaMTX S3-compatible storage Plain REST + bearer keys

Security model

The safest stream is the one that isn’t running.

Streamo is built around temporary access. Idle cameras stay private, live sessions are bounded, and stored video exists only when you explicitly keep it.

Media path
CameraEdge agentMedia planeViewer
The control plane coordinates this path. It is not in it.

Credentials stay local

RTSP URLs and passwords live on the edge machine. The cloud stores only the camera name and ID.

Sessions expire

A hard TTL and viewer heartbeats ensure a stream cannot run—or bill—indefinitely.

Granular revocation

Revoke a project API key or rotate one edge token without disturbing the rest of the fleet.

Playback is short-lived

Viewer tokens and signed playback URLs expire with the session that created them.

Built for the physical world

One video layer, across devices and industries.

01

Factories & warehouses

Open existing CCTV only for safety reviews, incident response, or operational tools.

02

Drones & robots

Push live video directly from an encoder, with WebRTC when operators need lower latency.

03

Fleet & field devices

Give every vehicle or remote device a consistent streaming and clip API.

Simple usage pricing

Pay for video that moves.

An idle camera costs nothing. Start on the free tier, then pay for viewer minutes and clips as your usage grows.

Talk to us

Free

$0

100 viewer-minutes / month

Then

$0.005

per viewer-minute

  • No per-camera fee
  • Unlimited cameras on each edge
  • Clips billed by stored GB
  • Self-hosted media plane available

Questions

The practical details.

Does it work with existing CCTV?+

Yes. Anything that exposes an RTSP feed can be registered. The edge agent transcodes sources such as H.265 into a browser-compatible stream when needed.

How much latency should I expect?+

HLS is typically 5–15 seconds. Push-ingest sessions can use WHIP and WHEP for sub-second WebRTC playback. WebRTC from RTSP edge cameras is not shipped yet.

What does Streamo store?+

Camera names and IDs, session metadata, and only the clips or recordings you explicitly keep. RTSP credentials remain on your edge machine.

Can I run the media plane myself?+

Yes. A project can use self-hosted MediaMTX instead of Cloudflare Stream. You trade global CDN delivery, recordings, and signed URLs for flat infrastructure cost.

Start with one camera

From private RTSP feed to a secure viewer in minutes.

Download the edge