Skip to content

Releases: 248Tech/RTSPanda

RTSPanda v0.1.1

23 Mar 01:43

Choose a tag to compare

RTSPanda v0.1.1 Release Notes

Headline

RTSPanda v0.1.1 adds Android no-Docker startup support and introduces an arm64 Pi-mode thermal monitor with banded alerts and API visibility.

Highlights

  • Added scripts/android-up.sh for Termux-native startup (no Docker, no root).
  • Added thermal monitor package with four thermal bands and hysteresis handling.
  • Added thermal_band to /api/v1/system/stats.
  • Added Discord system alert dispatch on Hot thermal band entry.
  • Updated README and quickstart with Android and release-aligned setup guidance.

What Changed

Android startup path

  • New script: scripts/android-up.sh
    • sets RTSPANDA_MODE=pi
    • sets/creates DATA_DIR
    • runs termux-wake-lock when available
    • launches ./rtspanda

Thermal monitoring

  • New package: backend/internal/thermal/monitor.go
  • Thermal bands:
    • Normal: <45C
    • Warm: 45-54C
    • Hot: 55-64C
    • Critical: >=65C
  • Sensor source priority:
    1. /sys/class/thermal/thermal_zone*/temp
    2. /proc/loadavg proxy fallback
    3. disabled mode with warning
  • Hysteresis:
    • Critical -> Hot: 5m
    • Hot -> Warm: 5m
    • Warm -> Normal: 3m

Runtime integration

  • cmd/rtspanda/main.go now starts thermal monitor when:
    • GOARCH=arm64 and mode is pi, or
    • THERMAL_MONITOR_ENABLED=true
  • THERMAL_AUTO_RESUME defaults to false.
  • Thermal transition events are logged with severity:
    • Warm: WARN
    • Hot: ERROR
    • Critical: CRITICAL
  • On first Hot-band entry, Discord system alerts are sent to cameras with configured webhook URLs.

API change

  • GET /api/v1/system/stats now includes:
    • thermal_band (normal, warm, hot, critical)

Validation

  • cd backend && go test ./...

Upgrade Notes

  • Existing deployments can update in place.
  • Android/Termux users can use scripts/android-up.sh for consistent startup.

RTSPanda v0.1.0

22 Mar 23:49

Choose a tag to compare

RTSPanda v0.1.0 Release Notes

Headline

RTSPanda v0.1.0 hardens stream orchestration and readiness behavior for production camera fleets, and ships a full operator walkthrough that documents every supported setup method.

Highlights

  • mediamtx orchestration now defaults to proactive stream startup (sourceOnDemand=false).
  • Stream API now returns initializing until HLS is truly reachable.
  • Keepalive logic now uses grace and backoff windows instead of tight path repair loops.
  • README is now a production-grade setup and operations guide covering all deployment methods.

What Changed

Streaming Pipeline Stability

  • Enforced proactive path startup and retained TCP RTSP transport defaults.
  • Added idempotent path sync:
    • no path recreation if current source already matches
    • update only when path is missing or source changed
  • Reduced reload churn:
    • keepalive repair waits for unhealthy grace period
    • repeat repairs respect backoff window
    • full reload remains reserved for repeated mediamtx API failures

Stream Readiness Gate

  • /api/v1/cameras/:id/stream now withholds hls_url until stream status is online.
  • New status value initializing indicates stream path exists but playlist is not yet playable.
  • Dashboard and camera views updated to handle initializing cleanly without premature playback attempts.

Documentation

  • Rewrote README into a full production walkthrough:
    • Standard full stack
    • Pi mode
    • Pi + remote worker
    • Standalone AI worker host
    • Viewer mode (binary and Docker)
    • Source development setup
    • hardening, validation, troubleshooting, and upgrade guidance

Validation

  • cd backend && go test ./...
  • cd frontend && npm run build

Upgrade Notes

  • Existing installs can pull and redeploy normally.
  • No breaking route changes; stream endpoint now intentionally returns empty hls_url until playable.

RTSPanda v0.0.9

22 Mar 00:21

Choose a tag to compare

RTSPanda v0.0.9 Release Notes

Headline

RTSPanda v0.0.9 formalizes deployment modes as a runtime contract and adds a dedicated Snapshot Intelligence Engine for Raspberry Pi deployments.

Highlights

  • Added first-class runtime modes: pi, standard, and viewer.
  • Added Pi Snapshot AI pipeline with Claude/OpenAI providers and structured detection event output.
  • Added strict Pi deployment guardrails: local YOLO AI-worker paths are explicitly blocked on ARM.
  • Rewrote architecture and README docs around mode capabilities and constraints.

What Changed

Runtime and Backend

  • Added internal/mode for mode detection, capability gating, and startup banners.
  • Updated startup flow in backend/cmd/rtspanda/main.go:
    • YOLO detection manager starts only in mode-capable environments.
    • Pi and Viewer still expose detection endpoints through degraded manager handles.
    • Snapshot AI manager starts in Pi-capable mode when enabled.
  • Added CaptureFrameToPath export in internal/detections/capture.go for snapshot pipeline reuse.

Pi AI and Deployment

  • Added internal/snapshotai/manager.go and internal/snapshotai/providers.go for interval frame analysis through external vision APIs.
  • Updated docker-compose.yml:
    • Explicit RTSPANDA_MODE defaults.
    • Pi profile Snapshot AI environment variables.
  • Updated scripts/pi-up.sh:
    • Removed unsupported full Pi path.
    • Added ARM checks to block standalone AI-worker mode on Pi.
    • Improved user-facing deployment and AI option guidance.

Documentation

  • Reworked README.md to explain three deployment modes and expected behavior.
  • Expanded AI planning docs (AI/ARCHITECTURE.md, AI/DECISIONS.md, AI/PROJECT_CONTEXT.md) to align implementation with mode decisions.

Validation

  • cd backend && go test ./...

Upgrade Notes

  • Existing docker compose up --build -d server installs remain supported and map to Standard mode.
  • Pi installs should use PI_DEPLOYMENT_MODE=pi with optional Snapshot AI env vars.
  • Remote AI-worker deployments remain supported via separate server-class hosts.

RTSPanda v0.0.8

19 Mar 19:43

Choose a tag to compare

RTSPanda v0.0.8 Release Notes

Headline

RTSPanda v0.0.8 turns the project into a more serious edge-video platform: the default single-machine workflow stays intact, while Raspberry Pi deployments gain a cleaner first-run path, deterministic ONNX-only AI builds, and an easy upgrade path to distributed inference.

Highlights

  • Added a Pi-first lightweight deployment mode for rtspanda without local AI-worker overhead.
  • Added cluster mode so a Pi can ingest streams locally and send frames to a remote AI worker on a second machine.
  • Removed AI-worker export fallback from Docker builds. The worker now uses prebuilt ONNX models only.
  • Added additive Compose profiles for full, pi, and ai-worker without breaking the existing docker compose up --build -d flow.
  • Rewrote setup and deployment docs to clearly support Standard, Pi Standalone, and Pi + AI topologies.
  • Fixed Pi standalone startup so it no longer traverses the local AI-worker build path.
  • Repaired the default remote ONNX pin to a live Ultralytics asset and improved failure messages for invalid model sources.

What Changed

Platform and Deployment

  • docker-compose.yml now supports:
    • standard full-stack deployment
    • lightweight Pi deployment
    • standalone remote AI-worker deployment
  • New docker-compose.standalone.yml overlay isolates Pi-only and AI-worker-only deployments from the unprofiled full stack.
  • scripts/pi-up.sh now supports:
    • PI_DEPLOYMENT_MODE=pi
    • PI_DEPLOYMENT_MODE=full
    • PI_DEPLOYMENT_MODE=ai-worker
  • Standalone launch paths now use build followed by up --no-build so targeted deployments only build the intended service.
  • scripts/pi-preflight.sh now checks deployment mode and model-source expectations more accurately for Docker-first Pi workflows.

AI Runtime

  • ai_worker/Dockerfile now resolves models deterministically:
    • local prebuilt ONNX file first
    • explicit YOLO_MODEL_URL second
    • named Ultralytics ONNX asset fallback last
  • Default remote model pin now targets yolo11n on Ultralytics v8.3.0, which is published and buildable today.
  • No PyTorch install path
  • No YOLO(...).export(...)
  • No runtime model conversion on ARM

Backend Detection Routing

  • Added additive AI-target resolution using:
    • AI_MODE=local|remote
    • AI_WORKER_URL=http://<host>:8090
    • DETECTOR_URL as the highest-precedence override
  • Detection health now reports AI mode and remote worker context.

Release Quality Improvements

  • Refreshed the frontend lockfile so current tests/tooling install cleanly.
  • Fixed clean-checkout frontend embed compilation behavior in the backend.

Setup Paths

Standard

docker compose up --build -d

Pi Standalone

./scripts/pi-up.sh

Pi + AI

AI host:

docker compose -f docker-compose.yml -f docker-compose.standalone.yml --profile ai-worker build ai-worker-standalone
docker compose -f docker-compose.yml -f docker-compose.standalone.yml --profile ai-worker up -d --no-build ai-worker-standalone

Pi host:

export AI_WORKER_URL="http://192.168.1.50:8090"
./scripts/pi-up.sh

Validation Checklist

  • docker compose config -q
  • cd backend && go test ./internal/...
  • cd frontend && npm run test -- --config vitest.config.ts
  • cd ai_worker && python -m pytest -q

Upgrade Notes

  • Existing standard users can continue using docker compose up --build -d.
  • Pi users who want the old all-in-one behavior can use PI_DEPLOYMENT_MODE=full ./scripts/pi-up.sh.
  • For custom ONNX assets, place model.onnx at repo root or ai_worker/model/model.onnx, then set MODEL_SOURCE=local.

v0.0.7

19 Mar 04:31

Choose a tag to compare

RTSPanda v0.0.7 Release Notes

Highlights

  • Added token-based authentication across backend and frontend, including login/session handling and protected API routes.
  • Added initial automated test foundation for backend, frontend, and AI worker.
  • Improved Raspberry Pi deployment with architecture-aware container builds and helper scripts.
  • Resolved streaming configuration drift and documented latency/stability tuning controls.
  • Expanded AI worker runtime safeguards for Pi CPU-only environments.

Included Areas

  • Security/auth: backend/internal/auth/, backend/internal/api/router.go, frontend/src/auth/
  • Streaming/runtime: backend/internal/streams/mediamtx.go, mediamtx/mediamtx.yml.tmpl, docker-compose.yml
  • Deployment: Dockerfile, ai_worker/Dockerfile, scripts/pi-*.sh
  • AI runtime: ai_worker/app/main.py, ai_worker/requirements.txt
  • Testing/docs: docs/testing-strategy.md, frontend/vitest.config.ts, ai_worker/tests/*

Validation Checklist

  • docker compose config -q
  • cd backend && go test ./internal/...
  • cd frontend && npm run test -- --config vitest.config.ts
  • cd ai_worker && python -m pytest -q

Upgrade Notes

  • If authentication is enabled, define AUTH_TOKEN before startup.
  • For Raspberry Pi, prefer 64-bit OS and use ./scripts/pi-up.sh for first deploy.

v0.0.6

18 Mar 05:28

Choose a tag to compare

RTSPanda v0.0.6 - Performance, Observability, System Monitoring, Multi-View UX

Tag: v0.0.6
Diff: v0.0.5...v0.0.6


Highlights

  • Dashboard stream status now uses a shared mediamtx path cache and batch status endpoint.
  • API responses under /api/ now support gzip compression.
  • New observability surface: request logging, Prometheus-compatible /metrics, and system stats API.
  • New readiness endpoint for deeper health checks: GET /api/v1/health/ready.
  • Multi-view UX improvements: inline add-camera card + per-panel remove button.
  • Settings now includes a live System tab for uptime, memory, goroutines, request count, and network counters.

Backend and API Changes

  • Added request body limit (256 KB) for camera create/update payloads:
    • backend/internal/api/cameras.go
  • Router and middleware updates:
    • backend/internal/api/router.go
    • Added API gzip wrapping, request logging wrapper, /metrics, and system routes.
  • New API endpoints:
    • GET /api/v1/cameras/stream-status
    • GET /api/v1/system/stats
    • GET /api/v1/health/ready
    • GET /metrics
  • New observability implementation files:
    • backend/internal/api/metrics.go
    • backend/internal/api/middleware.go
    • backend/internal/api/sysinfo.go

Streams and Performance

  • Added stream path-list cache with 3-second TTL (shared across callers):
    • backend/internal/streams/cache.go
  • Stream manager now exposes:
    • StreamStatusMap(cameraIDs []string)
    • IsReady() bool
  • Stream keepalive now uses cached path list, reducing mediamtx API pressure.
  • mediamtx config now enables native metrics:
    • metrics: yes
    • metricsAddress: 127.0.0.1:9998

Database Changes

  • Added migration:
    • backend/internal/db/migrations/008_cameras_index.sql
  • Index added:
    • idx_cameras_order on cameras(position, created_at)

Frontend Changes

  • Dashboard now batch-loads camera list + stream status map in parallel:
    • frontend/src/pages/Dashboard.tsx
    • frontend/src/api/cameras.ts
    • frontend/src/components/CameraGrid.tsx
    • frontend/src/components/CameraCard.tsx
  • App now uses route-level lazy loading and suspense fallback:
    • frontend/src/App.tsx
  • Multi-view enhancements:
    • Inline add-camera card picker
    • Per-panel quick remove ()
    • frontend/src/pages/MultiCameraView.tsx
  • New System tab + API integration:
    • frontend/src/pages/Settings.tsx
    • frontend/src/api/sysinfo.ts

AI Docs and Filesystem Review

Reviewed and updated AI planning/handoff/docs to match this release:

  • Updated:
    • AI/CURRENT_FOCUS.md
    • AI/DECISIONS.md
    • AI/HANDOFF.md
    • AI/TODO.md
  • Added:
    • AI/AGENTIC-PLATFORM-EXPANSION-GUIDE.md

These docs now reflect:

  • v0.0.6 shipped scope
  • deferred platform expansion roadmap
  • explicit risks and next-priority items

User Documentation

  • Updated README.md to v0.0.6 summary and compare link.
  • Updated human/USER_GUIDE.md with system monitoring and metrics coverage.

Validation

  • Backend:
    • cd backend && go build ./... (pass)
  • Frontend:
    • cd frontend && npm run build (pass)

RTSPanda v0.0.5

18 Mar 02:02

Choose a tag to compare

RTSPanda v0.0.5 — Frigate Alert Provider + In-App Guides

Tag: v0.0.5
Diff: v0.0.4...v0.0.5


Highlights

  • Added provider-based Discord detection alerts per camera:
    • yolo (RTSPanda built-in YOLOv8)
    • frigate (external Frigate event ingestion)
  • Added Frigate webhook endpoint:
    • POST /api/v1/frigate/events
  • Added new in-app Guides page with practical setup walkthroughs:
    • Lorex NVR port-forwarding
    • Tailscale setup
    • Lorex RTSP URL retrieval from login/web UI flow
  • Added Support the Developer links to https://248tech.com/donate.

Backend / API Updates

  • Added Frigate ingestion handler:
    • backend/internal/api/frigate.go
    • Parses Frigate webhook payloads and forwards detection alerts to matching cameras.
    • Matches cameras by provider frigate and frigate_camera_name (or camera name fallback).
    • Ignores non-new Frigate event types.
  • Registered new route:
    • POST /api/v1/frigate/events
  • Extended notifier API contract to support external detection event dispatch.
  • Updated Discord notification flow:
    • Added source-aware detection notifications (YOLOv8 vs Frigate labels in payloads).
    • Ensured YOLO-origin notifications are skipped for cameras configured with provider frigate.
  • Added optional Frigate snapshot fetch support via env:
    • FRIGATE_BASE_URL
    • If configured, event snapshots are fetched and attached to Discord alerts when available.

Database / Camera Model Updates

  • Added migration:
    • backend/internal/db/migrations/007_discord_detection_provider.sql
  • New camera fields:
    • discord_detection_provider (default yolo)
    • frigate_camera_name (default empty)
  • Updated camera model, service validation, and repository persistence/scan logic:
    • backend/internal/cameras/model.go
    • backend/internal/cameras/service.go
    • backend/internal/cameras/repository.go

Frontend Updates

  • Added new page:
    • frontend/src/pages/Guides.tsx
  • Added sidebar navigation route for Guides:
    • frontend/src/App.tsx
  • Added donate/support links in UI:
    • Sidebar support icon
    • Guides page support button
  • Extended camera API types for provider fields:
    • frontend/src/api/cameras.ts
  • Updated camera setup form:
    • Provider selection (YOLOv8 or Frigate)
    • Optional Frigate camera name
    • Source-aware trigger wording
    • frontend/src/components/CameraForm.tsx
  • Updated settings and camera badges to reflect provider-aware alerting:
    • frontend/src/pages/Settings.tsx
    • frontend/src/pages/CameraView.tsx

Documentation Updates

  • Updated README release section and feature/config/API notes:
    • README.md
  • Updated user guide for provider-based alerts and Frigate endpoint/env:
    • human/USER_GUIDE.md

Validation

  • Backend checks:
    • go test ./... (pass)
  • Frontend checks:
    • npm run build (pass)

v0.0.4

16 Mar 13:09

Choose a tag to compare

RTSPanda v0.0.4 - YOLO UI Polishing, Security, UI, Reliability, Connectivity

Tag: v0.0.4
Diff: v0.0.3...v0.0.4

YOLO UI Polishing

  • Added per-camera ignore-zone editing using polygon drawing from live camera frames.
  • Added ignore-zone rendering in camera view video overlays.
  • Improved YOLO camera configuration UX and error guidance in forms.
  • Improved detection feedback in camera view actions and status messages.

Security Updates

  • Added strict backend validation for ignore-zone polygon structure and coordinates.
  • Added validation and normalization for integrations settings input.
  • Added centralized OpenAI settings service with key-set/clear handling.
  • Added provider-specific validation rules for external storage configuration.

UI Updates

  • Added multi-camera view (up to 4 cameras) with batch screenshot and Discord actions.
  • Added Settings -> Integrations UI for OpenAI captions and external storage sync.
  • Updated app shell navigation to include multi-view and extension download access.
  • Added dashboard Reset Network control for stream recovery workflows.
  • Added bundled Chrome PiP extension package and install instructions.

Reliability Updates

  • Migrated AI worker runtime from PyTorch/ultralytics to ONNX Runtime + numpy.
  • Added multi-stage AI worker Docker build with ONNX export at build time.
  • Added stream keepalive health checks (mediamtx API + HLS reachability).
  • Added per-camera stream reset and full-stream reload API endpoints.
  • Added async manual Discord recording trigger flow with improved backend logging.
  • Added conservative Docker memory/runtime defaults for constrained hosts.

Connectivity

  • Added external video storage sync service for:
    • Local Server (NAS/SMB/NFS path)
    • Dropbox (rclone)
    • Google Drive (rclone)
    • OneDrive (rclone)
    • Proton Drive (rclone)
  • Added app settings API endpoints:
    • GET /api/v1/settings
    • PUT /api/v1/settings
  • Added stream control API endpoints:
    • POST /api/v1/cameras/{id}/stream/reset
    • POST /api/v1/streams/reset

Docs Updated

  • README.md (v0.0.4 summary + config updates)
  • docs/EXTERNAL_VIDEO_STORAGE.md
  • extensions/chrome-rtspanda-pip/README.md
  • frontend/public/downloads/rtspanda-chrome-pip-extension-install.md

RTSPanda v0.0.3

14 Mar 03:57

Choose a tag to compare

RTSPanda v0.0.3 — YOLO Reliability + Discord Media Controls

This release improves detector stability and expands Discord alerting/media workflows.


Highlights

  • Improved YOLO detector reliability in Docker deployments.
  • Added verbose backend + AI worker logging around detection requests/results.
  • Added per-camera Discord trigger controls for detection and interval screenshots.
  • Added manual camera-view actions:
    • Screenshot to Discord
    • Record to Discord
  • Added richer clip/media handling with format fallback:
    • webm, webp, gif
  • Updated user/docs wording to YOLO-first alerting, while keeping legacy alert-rule APIs for compatibility.

Detection Reliability Fixes

  • Added FFmpeg RTSP timeout option fallback for older builds:
    • try -rw_timeout
    • fallback to -timeout
    • fallback to no timeout flag
  • Added detector URL fallback behavior in backend detection client.
  • Improved detector request failure aggregation/logging across fallback URLs.
  • Added runtime dependencies to the AI worker image to prevent startup/runtime crashes in container environments.
  • Ensured multipart image uploads include an explicit image content type expected by the detector.

New Camera Discord Controls

Per-camera fields added:

  • discord_trigger_on_detection
  • discord_trigger_on_interval
  • discord_screenshot_interval_seconds
  • discord_include_motion_clip
  • discord_motion_clip_seconds
  • discord_record_format
  • discord_record_duration_seconds

Database migration:

  • backend/internal/db/migrations/005_discord_triggers.sql

New API Endpoints

  • POST /api/v1/cameras/{id}/discord/screenshot
  • POST /api/v1/cameras/{id}/discord/record

Notes

  • Legacy alert-rule webhook APIs remain available for external workflows.
  • Retention cleanup, delivery retry/backoff, and event pagination remain on the post-release backlog.

v0.0.2

12 Mar 13:13

Choose a tag to compare

Full Changelog: v0.0.1...v0.0.2