Live · v1.0 shipped

Any RTSP camera.
Any browser.

Turn any IP camera into a browser-playable stream — shareable, embeddable, and yours. No apps, no plugins, no middlemen.

Managed cloud in 60 seconds, or run it yourself on Docker, a Pi, or any box you own.

Works with what you already own
Hikvision Dahua Reolink Amcrest Axis Ubiquiti Foscam ONVIF H.264 H.265 MJPEG
Built for one job

Stream. Share. Embed.
That's it.

Three primitives, done properly. No feature bloat, no dashboards about dashboards.

Playback

RTSP in.
HLS out.
Zero transcoding when possible.

Paste your camera's RTSP URL and S1 handles the rest. H.264 streams pass through untouched — near-zero CPU. Everything else is auto-transcoded on demand by ffmpeg.

How the pipeline works
pipeline.rtsp → hls

Camera

rtsp://...

S1

ffmpeg · copy

Browser

hls.js
Sharing

One link.
One iframe.
You stay in control.

Generate expiring public share links, or drop a one-line iframe into any website — WordPress, Notion, your ops dashboard. Revoke anytime.

Embedding reference
embed.html
<!-- Drop anywhere. Done. -->
<iframe
  src="https://s1.rappahannockit.com/embed/ak3f9b"
  width="960" height="540"
  allowfullscreen>
</iframe>
Observability

Know which cameras
are actually alive.

A live health dot for every stream — connecting, live, errored, or offline. Fragment errors recover automatically. No more refreshing a frozen grid.

Every feature
streams · health
Front Gateh264 · copy312 kbps
Drivewayh265 · trans1.2 Mbps
Backyardh264 · copy486 kbps
Garagereconnect
Workshopstopped
Everything you need

Quiet features.
Loud reliability.

Multi-camera grid

1×1, 2×2, 3×3, 4×4. One click to Play All.

Drag to rearrange; your layout persists. Pop any stream out to fullscreen without losing the grid.

Live thumbnails

See before you stream.

Fresh snapshots of every camera without burning bandwidth on an open stream.

On-demand streams

Idle = 0 W.

Streams spin up only when someone hits play, and shut down the moment nobody's watching.

Universal RTSP

If it speaks RTSP, it works.

ONVIF, Hikvision, Dahua, Reolink, Amcrest, Axis. H.264 copy-through; H.265 & MJPEG transcoded.

Expiring share links

Send it. Set a timer.

7 days. 24 hours. Single-view. Expire on your terms. Revoke with one click.

Auto-recovery

Fragment errors fix themselves.

hls.js adaptive recovery paired with managed ffmpeg processes. A blip never means a manual refresh.

Setup

Running in 90 seconds.

Paste a URL. Hit play. Share the link. That's the whole thing.

01 / CREATE

Make an account.

Username and password. No email, no credit card, no tracking pixels.

username · admin
02 / ADD

Paste your RTSP URL.

Click Add stream, drop the URL, give it a name. Credentials stay redacted from every log line.

rtsp://user:•••@192.168.1.42:554/stream1
03 / WATCH

Stream or share.

Grid view, fullscreen, or generate a link to send anyone — with or without an account.

Security by default

Your cameras.
Your server.
Your data.

S1 ships with sane defaults baked in. Nothing leaves your box unless you publish a share link — and even then, it expires.

JWT-authenticated playback
bcrypt password hashing
Rate-limited auth endpoints
RTSP credentials redacted from logs
Expiring, revocable share tokens
CSP-friendly iframe embeds
Platform

Boring tech.
On purpose.

No AI, no blockchain, no sidecar services. Just proven pieces that'll still work in five years.

runtime

Node · Express

A lean API server under 1,500 lines. Readable in an afternoon.

ingest

ffmpeg

Industry-standard RTSP reader and HLS packager. Codec-copy when it can.

playback

hls.js

Browser-side HLS with adaptive recovery. Works everywhere Safari and Chrome do.

storage

SQLite via sql.js

Zero-config persistence. No database server to babysit.

auth

JWT · bcrypt

Stateless tokens, industry-standard hashing, rate-limited endpoints.

deploy

Docker-ready

One image. Railway, Fly, a Pi, or bare metal — all the same.

Two ways to run it

Hosted by us,
or hosted by you.

Same software, same features, same source. Pick the trade-off that fits.

managed

Hosted

We run it. You sign up.

  • 60-second setup. Create an account, paste an RTSP URL, done.
  • Auto updates. Always on the latest build. No maintenance windows.
  • Global edge playback. HLS served close to your viewers.
  • Backups included. Configs and users snapshotted nightly.
  • Email support. Real humans, real response times.
Start hosted — free Free tier. Paid plans when you outgrow it.
self-hosted

Self-hosted

Your box. Your rules. Your data.

  • Single Docker image. One docker run and you're live.
  • Runs anywhere. Pi, NAS, homelab, Railway, Fly, bare metal.
  • No phone-home. Air-gapped networks welcome.
  • All your data, local. Streams never leave your LAN unless you say so.
  • Source-available. Read it, fork it, patch it.
Read the deploy guide Same feature set as hosted. Forever.

Stop fighting
clunky camera apps.

Start on our hosted cloud in a minute, or pull the Docker image and run it yourself — your cameras, your call.