Skip to content
CAI
Software that uses CAICheck a score

signag/raspi-cam-srv

40.9

Weak · 22 September 2026

34.9k

lines of production code

Python

primary language

6

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a web-based control interface for Raspberry Pi cameras, providing comprehensive management of camera hardware, media, and automated capture sequences. It enables users to configure camera settings, view live and recorded media, and manage complex trigger-based workflows. The application also exposes system status and allows direct interaction with GPIO devices and system commands.

How it got here

2023 — Web UI and feature expansion

8 changes.

This period focused on significantly expanding the web interface with new pages for live control, media management, and system information. The work introduced comprehensive camera configuration tools, an image and video viewer with batch operations, and a detailed information dashboard, all styled with the W3.CSS framework.

2024–2025 — Service deployment and interface expansion

6 changes.

This period focused on operationalizing the application through automated installation scripts, systemd service configurations, and explicit dependency management. Concurrently, the web interface was significantly expanded to support dual-camera streaming and new management tools for photo series and trigger conditions.

Features

Add image and video viewer with selection and batch operations

A new template for the image viewer page has been added, providing a grid view of photos and videos with thumbnail previews. Users can now select individual or multiple items using checkboxes, and perform batch actions including deleting selected files, downloading selected files, and selecting or deselecting all items. The interface also includes controls to filter by camera source, date range, and quick navigation buttons for 'Today' and 'All' media.

raspiCamSrv/templates/images · high confidence

Add information page with system, camera, and software stack details

A new 'Information' page has been added to the web interface, providing users with a centralized view of system status and configuration. The page displays hardware and OS details (Raspberry Pi model, board revision, kernel, and Debian version), process and server information (including Gunicorn, Python, Flask, libcamera, Picamera2, OpenCV, and other libraries), and active streaming clients. The layout uses w3.css for styling and includes navigation tabs for System, Cameras, and Camera Properties, with a dropdown for sensor modes.

raspiCamSrv/templates/info · medium confidence

Added systemd service files for Flask and Gunicorn

New systemd service files have been added to the config directory to manage the application as a background service. This includes a basic Flask service (raspiCamSrv.service) and a Gunicorn-based service (raspiCamSrv\_gunicorn.service) that configures the application to run with 6 threads and a timeout of 0, ensuring the service restarts automatically on failure.

config · high confidence

Automated installer and uninstaller for raspiCamSrv

Added new shell scripts to automate the installation, configuration, and removal of the raspiCamSrv service. The installer (install\_raspiCamSrv.sh) detects the Raspberry Pi model and OS variant, configures the Gunicorn WSGI server, and sets up systemd services for both user and system contexts. The uninstaller (uninstall\_raspiCamSrv.sh) safely removes the service, stops the process, and cleans up the installation directory.

scripts · high confidence

Introduce comprehensive GPIO device support and console command execution

The raspiCamSrv module now includes full support for configuring and controlling GPIO devices (such as buttons, sensors, and LEDs) via the new gpioDevices and camCfg modules, allowing users to manage hardware inputs and outputs directly from the server. Additionally, a new console interface has been added, enabling authenticated users to execute system commands and trigger predefined actions through the web interface.

raspiCamSrv · high confidence

New Photo Series management interface

A new main.html template has been added to the raspiCamSrv, introducing a comprehensive user interface for managing photo series. This interface allows users to create, select, start, pause, continue, and remove series, as well as download them. The UI supports different series types including Timelapse, Exposure, and Focus Stack, and includes status indicators and action buttons for each series.

raspiCamSrv/templates/photoseries · high confidence

New Trigger Management Interface

A new 'Trigger' page has been added to the web interface, providing a centralized location to configure trigger conditions and associated actions. The page features a tabbed navigation structure allowing users to manage Control, Triggers, Actions, Trigger-Actions, Motion, Camera, Notification, Events, and Calendar settings. This includes enabling motion detection triggers, configuring video and photo capture actions, and setting up event-based triggers with corresponding actions.

raspiCamSrv/templates/trigger · high confidence

New camera configuration interface with tabbed navigation

A new main configuration template has been added, introducing a tabbed interface for managing camera settings. Users can now navigate between Tuning, AI Configuration, Live View, Photo, Raw Photo, and Video configuration panels. The interface includes a sync aspect ratio control and a link to online help documentation.

raspiCamSrv/templates/config · high confidence

New live camera control interface

The Live page now features a dedicated Direct Control panel for adjusting camera settings in real-time. Users can fine-tune focus (including autofocus modes and focal distance), exposure (time, value, and gain), and color gains via sliders and dropdowns. The main Live view also displays placeholders for video and photo recording states, and the interface supports both Raspberry Pi and USB cameras, with controls dynamically shown or hidden based on camera capabilities.

raspiCamSrv/templates/home · high confidence

Behavioural changes

Adopts W3.CSS 5.02 for UI styling

The application's static assets now include the W3.CSS 5.02 library, which provides a comprehensive set of CSS classes for layout, typography, and form elements. This change updates the visual presentation of the user interface, replacing previous styling methods with the W3.CSS framework.

raspiCamSrv/static · high confidence

New authentication templates using W3.CSS

The application introduces new templates for the login, password change, and registration pages. These templates are built with W3.CSS classes (e.g., w3-container, w3-input, w3-button) to style the forms. The login page includes fields for username and password. The password change page adds fields for the old password and a new password confirmation. The registration page includes fields for username and password.

raspiCamSrv/templates/auth · high confidence

New media viewer and updated base template

The application now includes a dedicated media viewer for displaying images and videos in a full-screen, black-background layout. The base template has been updated to use the W3.CSS framework, and the header now displays the application version, the current user's username, active camera information, and the host name. Additionally, the header includes a 'Save Changes' button that triggers a POST request to /store\_config and reloads the page.

raspiCamSrv/templates · medium confidence

Redesigned webcam interface with dual-camera and stereo support

The webcam template has been completely rewritten to support a dual-camera setup, allowing users to view and control both a primary and a secondary camera stream simultaneously. The new interface includes a navigation bar with tabs for 'Web Cam', 'Multi-Cam', 'Camera Calibration', and 'Stereo-Cam' views. It exposes configuration options for each camera's photo and video settings, and provides direct links to the MJPEG video feeds for both cameras.

raspiCamSrv/templates/webcam · high confidence

Dependencies

Added Python dependencies for Docker build

The project now includes a requirements.txt file that defines the Python dependencies for the application, including Flask (version 3), Gunicorn, RPi.GPIO, gpiozero, numpy, matplotlib (less than 3.8), flask-jwt-extended, psutil, requests, munkres, and rpi\_hardware\_pwm.

(dependencies) · medium confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 36 → 41 (+5.3)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 46 → 74 (+28.5)
  • Architecture 100 → 95 (-4.9)
  • Maturity 55 → 55 (+0.3)
  • Readiness 18 → 23 (+4.8)
  • Security 74 → 81 (+7.6)
  • Accessibility 43 → 43 (+0.1)

Resolved (211)

  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • Duplicated block (10 lines × 18) (raspiCamSrv/webcam.py)
  • Duplicated block (10 lines × 2) (raspiCamSrv/api.py)
  • Duplicated block (10 lines × 2) (raspiCamSrv/api.py)
  • Duplicated block (10 lines × 2) (raspiCamSrv/api.py)
  • Duplicated block (10 lines × 2) (raspiCamSrv/auth.py)
  • Duplicated block (10 lines × 2) (raspiCamSrv/camCfg.py)
  • Duplicated block (10 lines × 2) (raspiCamSrv/camCfg.py)
  • Duplicated block (10 lines × 2) (raspiCamSrv/camCfg.py)
  • Duplicated block (10 lines × 2) (raspiCamSrv/camera_pi.py)
  • Duplicated block (10 lines × 2) (raspiCamSrv/camera_pi.py)
  • Duplicated block (10 lines × 2) (raspiCamSrv/camera_pi.py)
  • Duplicated block (10 lines × 2) (raspiCamSrv/camera_pi.py)
  • Duplicated block (10 lines × 2) (raspiCamSrv/config.py)
  • Duplicated block (10 lines × 2) (raspiCamSrv/config.py)
  • Duplicated block (10 lines × 2) (raspiCamSrv/home.py)
  • Duplicated block (10 lines × 2) (raspiCamSrv/motionAlgoIB.py)
  • Duplicated block (10 lines × 2) (raspiCamSrv/motionAlgoIB.py)
  • Duplicated block (10 lines × 2) (raspiCamSrv/triggerHandler.py)
  • Duplicated block (10 lines × 2) (raspiCamSrv/webcam.py)
  • …and 191 more

New (285)

  • Dependency hygiene PARTLY measured — Python dependencies read, no exact pin to grade for currency
  • Documentation: no contributor guidance (README.md)
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Duplicated block (10 lines × 12) (raspiCamSrv/config.py)
  • Duplicated block (10 lines × 2) (raspiCamSrv/api.py)
  • Duplicated block (10 lines × 2) (raspiCamSrv/auth.py)
  • Duplicated block (10 lines × 2) (raspiCamSrv/camCfg.py)
  • Duplicated block (10 lines × 2) (raspiCamSrv/camCfg.py)
  • Duplicated block (10 lines × 2) (raspiCamSrv/images.py)
  • Duplicated block (10 lines × 2) (raspiCamSrv/trigger.py)
  • Duplicated block (10 lines × 2) (raspiCamSrv/trigger.py)
  • Duplicated block (10 lines × 29) (raspiCamSrv/webcam.py)
  • Duplicated block (10 lines × 3) (raspiCamSrv/camCfg.py)
  • Duplicated block (10 lines × 3) (raspiCamSrv/home.py)
  • Duplicated block (10 lines × 3) (raspiCamSrv/images.py)
  • Duplicated block (10 lines × 6) (raspiCamSrv/trigger.py)
  • Duplicated block (10–11 lines × 2) (raspiCamSrv/camera_pi.py)
  • Duplicated block (11 lines × 11) (raspiCamSrv/trigger.py)
  • Duplicated block (11 lines × 16) (raspiCamSrv/photoseries.py)
  • …and 265 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

signag/raspi-cam-srv was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 22 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit af7579a82ce6ef7c4f09392c21cd790d1b2778a7 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-821afab8930d.