◆ ForgeVis
RTSP video infrastructure

Record, restream & archive
thousands of cameras.

A high-performance recording and restreaming server for RTSP IP cameras — a single connection per camera, zero transcoding, multi-node high availability.

forgevis · config.yaml
record:
  format: fmp4
  segmentDuration: 900

rtsp:
  enabled: true
  port: 8554

cameras:
  camera_001:
    source: rtsp://…/stream1
    sub:    rtsp://…/stream2
  camera_002:
    record: false
H.264 / H.265RTSPWebRTCHLSRaft clusterMulti-node archive
Capabilities

Everything you need to run video at scale

From single-box recording to a replicated cluster — one binary, one config.

🎥

Video Recording

Multi-camera RTSP ingestion to fragmented MP4. Configurable segment duration, path templates with {camera_id} and {timestamp}, playable while recording.

📡

RTSP Restreaming

Full RTSP server, zero-transcoding passthrough. One connection per camera, unlimited clients via broadcast, automatic idle timeout.

🧩

Clustering & HA

Raft-based multi-node cluster with automatic camera scheduling, failover and a replicated cluster license.

🗄️

Multi-node Archive

Distributed recording archive across nodes with unified query and export.

🌐

WebRTC

Low-latency browser playback without plugins — sub-second live view straight from the hub.

🎞️

HLS Streaming

Adaptive HLS output for wide client compatibility and CDN-friendly distribution.

🔀

Substreams

A main HD stream for recording plus an optional low-bitrate substream for monitoring walls.

🪝

Event Hooks

Push lifecycle events to your own services — connect, disconnect, segment finalized, camera errors.

Where it fits

Built for demanding deployments

Security

Surveillance at scale

Thousands of cameras, a single connection each, recorded to fMP4 with failover across nodes.

Media

Broadcast & restream

Ingest once, distribute to unlimited RTSP/WebRTC/HLS clients with zero transcoding.

Hybrid

Edge + cloud archive

Record at the edge, query and export recordings across the whole cluster.

Integrate

Configure, connect, control

config.yaml
record:
  format: fmp4
  segmentDuration: 900

cameras:
  camera_001:
    source: "rtsp://admin:pw@192.168.1.100:554/stream1"
    sub:    "rtsp://admin:pw@192.168.1.100:554/stream2"
Restream (VLC)
# main stream
vlc rtsp://localhost:8554/camera_001

# low-bitrate substream
vlc rtsp://localhost:8554/camera_001/sub
License API
curl localhost:8080/license/info
# → mode, licensed_to, max_cameras,
#   used_cameras, remaining_cameras,
#   expiry_utc, expired

Ready to record everything?

Up and running with RTSP cameras in under 5 minutes.