FFTrix
FFTrix is a high-performance video surveillance and analysis platform utilizing classical Computer Vision (CV) and pattern recognition techniques for real-time monitoring and event detection.
Features
- Real-time Monitoring: Multi-camera streaming with low-latency processing via
vidgear. - Classical CV Analytics:
- Motion Detection: Background subtraction using the MOG2 (Mixture of Gaussians) algorithm.
- Person Detection: Histogram of Oriented Gradients (HOG) with Linear SVM.
- Face Detection: Local Binary Patterns (LBP) and Haar Feature-based Cascade Classifiers.
- LPR (License Plate Recognition): Morphology-based plate localization combined with Tesseract OCR.
- Zone Monitoring: User-defined exclusion and inclusion zones for targeted event triggering.
- 24/7 Recording: Continuous background recording with automatic retention management.
- Interactive Dashboard: Modern web-based interface built with NiceGUI for camera management, live viewing, and event playback.
- Automated Alerts: Event-driven notifications via Email (SMTP) and JSON Webhooks.
- PTZ & Discovery: ONVIF-compatible device discovery and Pan-Tilt-Zoom control.
- Privacy Controls: Dynamic privacy masking with Gaussian blurring.
Architecture
FFTrix is built on a "Classic CV" architecture, prioritizing deterministic behavior and low resource overhead:
- Vision Engine: Pure OpenCV-based pipeline (no GPU/Deep Learning dependencies).
- OCR Engine: Tesseract (via
pytesseract) for text and plate recognition. - Database: SQLite for configuration, user management, and event logging.
- GUI: NiceGUI (FastAPI + Vue.js + Quasar) for a responsive management interface.
Installation
FFTrix can be installed directly from PyPI:
pip install fftrix
Or using uv as a tool:
uv tool install fftrix
Prerequisites
- Python 3.14 or higher.
- Tesseract OCR: Required for LPR and OCR features. Install it via your system package manager (e.g.,
apt install tesseract-ocrorbrew install tesseract). - Docker (for secure deployment): NOTE: Although you can replicate the deployment process without Docker, it will not be supported by me or anyone else from my team.
- ngrok: Can be implemented for remote access. While not officially supported, you can contact the developer for guidance.
Quick Start
Launch the FFTrix surveillance server:
fftrix serve --ui
The dashboard will be available at http://localhost:8080.
Default Credentials
- Username:
admin - Password:
admin(Note: A password change is required upon first login)
CLI Usage
FFTrix includes a Click-based CLI for server control and user management.
# Start headless server (no local browser launch)
fftrix serve --no-ui # ***NOTE: The UI is REQUIRED for configuration of watermarking and zone configuration but once configured the server can be run headless***
# Provision a new operator
fftrix user add <username> --role [admin|viewer]
# Emergency reset (wipes all users, restores admin:admin)
fftrix user reset-admin
Configuration
Configure the notification engine via environment variables:
| Variable | Description |
|---|---|
FFTRIX_SMTP_HOST |
SMTP server address |
FFTRIX_SMTP_PORT |
SMTP port (e.g., 587) |
FFTRIX_SMTP_USER |
SMTP username |
FFTRIX_SMTP_PASSWORD |
SMTP password |
FFTRIX_ALERT_FROM |
Sender email address |
Tech Stack
Development
If you want to contribute to FFTrix start by forking the repository then checking the requirements listed in the CONTRIBUTING.md file.
# Clone the repository
git clone https://github.com/yourusername/fftrix.git
cd fftrix
# Sync dependencies using uv
uv sync
License
MIT License
Metadata
Release files for fftrix 1.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| fftrix-1.4.0.tar.gz | 30.0 kB | Without provenance | Details for fftrix-1.4.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| fftrix-1.4.0-py3-none-any.whl | Python 3 | none | any | Details for fftrix-1.4.0-py3-none-any.whl |
Total release size: 65.2 kB
Release files / fftrix-1.4.0.tar.gz
| Download URL | fftrix-1.4.0.tar.gz |
|---|---|
| Size | 30.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5a98ba592f94ba82e95854cec321799c8ce5e7a0f832211779c4f3edcba1fb51
|
|
BLAKE2b-256 checksum How to use checksums |
ccd61845ffe93f4af74fd9ed3d5efbe5e7d9890d68d239058d2bf44cee0ebe63
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / fftrix-1.4.0-py3-none-any.whl
| Download URL | fftrix-1.4.0-py3-none-any.whl |
|---|---|
| Size | 35.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
dde76e7adeeca9caad71c94c64c3d66a5543e759bb55c8811ea47cd98da43f86
|
|
BLAKE2b-256 checksum How to use checksums |
69da4d74e9a21a5589e0c8d2b94ab2446e2d2c79fe01ecd191db9a79e7d3473b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for fftrix 1.4.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.