Free & Open Source
Project announcement: Free and Open Source

Simpleye
Simple, self‑hosted camera monitoring.

Self‑hosted. Private. Minimal. Bring your own cameras and keep your video on your network.

Current Features

Built to be simple, private, and reliable

Add cameras in seconds

Point Simpleye at your camera’s IP and HTTP port; give it a name, done. Admin‑only for safety.

Live MJPEG previews

See what’s happening right now with low‑latency MJPEG streams in your browser.

Recording (HLS or JPEG)

Per‑camera recording with HLS (FFmpeg) by default or JPEG frames. Configure bitrate, segment length, FPS/quality, and retention hours.

Review timeline

Browse recordings by day → hour → minute with per‑second jumps. HLS playback is seamless across minute boundaries.

Clips: make, rename, download

Create time‑bounded clips from recordings, play them inline, download MP4s, and rename. Creators or admins can delete.

One‑click checks

Validate connectivity, port open status, and record last online time with a single click.

Self‑hosted & private

Your video never leaves your network. No cloud, no vendor lock‑in, no tracking.

Lightweight stack

Flask + MongoDB with MJPEG streaming and FFmpeg for media. Runs well on modest hardware and in containers.

Roles & permissions

Admin‑only management operations with a clear first‑run signup gate.

System health

Container health checks via GET /health so your orchestrator knows when it’s ready.

Open source

MIT‑licensed and built for the community. Contributions welcome!

How it Works

Simple architecture: Browser ↔ Flask (Gunicorn) ↔ MongoDB; Flask ↔ IP Cameras (MJPEG)

1

Run with Docker

Start Simpleye using Docker Compose with MongoDB, or a single Docker run command.

2

Create first admin

On first boot, if no users exist, sign up the first admin account to enter the app.

3

Add your cameras

Provide camera name, IP, port, and MJPEG endpoint. Management is admin‑only.

4

View streams

Open the dashboard or use the per‑camera viewer to see MJPEG in your browser.

5

Check health

Use one‑click connectivity checks and the /health endpoint for orchestration.