Skip to content

rbcorrales/gestalyze

Gestalyze

Gestalyze Logo

Gesture-based Smart Home Interface using Sign Language and Hand Pose Recognition

πŸ”§ Built with FastAPI, MediaPipe, React, MQTT and Home Assistant.

πŸ” Empowering accessibility through open-source gesture control.


πŸ“¦ Overview

Gestalyze is an open-source project that enables real-time hand gesture recognition for controlling smart home devices. By combining computer vision and machine learning techniques, the system interprets static hand poses β€” including alphabet signs from sign language β€” and sends commands to home automation platforms like Home Assistant.

The system is modular, lightweight, and designed for low-power environments using technologies such as MQTT, MediaPipe Hands, and React. Users can extend, train custom models, and integrate new gesture mappings for full control over their smart environment.


🎯 Key Features

  • βœ‹ Real-time hand detection and finger tracking with MediaPipe.
  • πŸ”  ASL static alphabet recognition using trainable ML classifiers.
  • πŸ’‘ Smart home integration via MQTT and Home Assistant plugins.
  • ⚑ Low-latency WebSocket communication between frontend and backend.
  • πŸ“· Frontend web app built in React + WebRTC.
  • 🌍 Multilingual interface with i18n support.
  • 🧠 Supports custom and pre-trained gesture models.
  • πŸ“Š Visualization tools for metrics, training and evaluation.
  • πŸ§ͺ Designed for reproducible research and experimentation.

🧱 System Architecture

This repository is currently structured as a monorepo to simplify development, deployment, and cross-component coordination. As the project matures, it is expected that individual components β€” such as the frontend, backend, and Home Assistant integrations β€” may be separated into distinct repositories to improve modularity and scalability.


πŸ—ƒοΈ Project Structure

gestalyze/
β”œβ”€β”€ backend/               # Gestalyze backend server
β”‚   β”œβ”€β”€ inference/         # ML model inference and processing
β”‚   β”œβ”€β”€ mqtt/              # MQTT client and message handling
β”‚   └── ssl/               # SSL certificates and configuration
β”œβ”€β”€ config/                # Project-wide configuration files (e.g., MQTT)
β”œβ”€β”€ datasets/              # Public and custom gesture datasets
β”œβ”€β”€ docs/                  # Assets and documentation support files
β”œβ”€β”€ frontend/              # React web app for video capture and UI
β”œβ”€β”€ homeassistant/         # Plugins and custom components for Home Assistant
β”‚   β”œβ”€β”€ custom_components/ # Custom Home Assistant integration
β”‚   └── gestalyze_plugin/  # Home Assistant plugin for gestalyze
β”œβ”€β”€ models/                # Serialized ML models (.joblib)
β”œβ”€β”€ training/              # Training scripts and model experiments
β”œβ”€β”€ website/               # Public website (gestalyze.com)
└── Makefile               # Project task automation

πŸš€ Getting Started

Requires Python 3.10+, Node.js 20+, and Mosquitto MQTT

# Clone repository
git clone https://github.com/yourname/gestalyze.git
cd gestalyze

# Install Python & Node dependencies
make install

# Start development servers
make dev

Open your browser to http://localhost:5173 to launch the interface.


🧠 Training Custom Models

To train your own gesture recognition model:

# Example with custom dataset
make extract-landmarks DATASET_NAME=your_dataset
make train MODEL_TYPE=custom DATASET_NAME=your_dataset

Models are saved to models/ and can be switched via the interface.


πŸ› οΈ Makefile Commands

Common tasks for development and training:

  • make install β€” Installs Python and Node.js dependencies
  • make dev β€” Starts both frontend and backend in development mode
  • make build β€” Builds the frontend for production
  • make run β€” Runs the backend with built frontend and MQTT
  • make run-ssl β€” Runs backend with SSL enabled
  • make train MODEL_TYPE=custom DATASET_NAME=name β€” Trains a gesture model
  • make extract-landmarks DATASET_NAME=name β€” Extracts MediaPipe landmarks from dataset
  • make clean β€” Cleans compiled files, build folders and caches
  • make mqtt-start, make mqtt-stop β€” Start/stop the Mosquitto broker
  • make ssl-key-gen β€” Generates self-signed SSL certificates
  • make deploy-ha β€” Deploys custom integration to Home Assistant
  • make website-dev β€” Starts the public website in development mode
  • make website-build β€” Builds the public website for production
  • make version β€” Displays version info
  • make help β€” Shows available commands

For advanced options and custom variables, inspect the Makefile.


πŸ’‘ Smart Home Integration

Gestalyze communicates with Home Assistant via MQTT. You can:

  • Use our plugin (external service)
  • Or the custom integration under homeassistant/custom_components/gestalyze/

This enables the use of sensors and event-based automations based on detected hand gestures.


πŸ”’ Privacy & Security

All gesture processing happens locally on your device. No images or biometric data are transmitted or stored externally. See Privacy Policy for full details.


πŸ“– Documentation

  • Full system documentation: https://gestalyze.com
  • Datasets, models and training configuration
  • Code walkthroughs, diagrams and tutorials

πŸ“œ License

This project is licensed under the Apache License 2.0 β€” see LICENSE for details.


🀝 Contributing

Pull requests, feature ideas and issue reports are welcome. For contributions, see CONTRIBUTING.md.


πŸ‘‹ Acknowledgments

  • MediaPipe by Google for hand tracking
  • Home Assistant for smart home integration
  • Hugging Face and Kaggle for gesture datasets
  • All open-source contributors who inspire and make projects like this possible

🧭 Roadmap & TODO

Gestalyze is still under active development. Some upcoming features and improvements include:

  • Support for multiple simultaneous frontend clients.
  • Real-time model hot-swapping via the interface.
  • Integration with additional smart home platforms.
  • Gesture recording and labeling tools for data collection.
  • Extended dynamic gesture recognition (sequential actions).
  • Accessibility testing with real users and community feedback.
  • CI/CD automation for releases and plugin deployment.
  • Docker-based deployment flow.
  • Unit testing for every module.
  • Improved model modularity for easier experimentation and integration.
  • Continued refinement of gesture recognition model accuracy.

Β© 2025 β€” Initially developed by rbcorrales.

About

Control smart home devices with real time hand gesture and sign language recognition. Built with MediaPipe, FastAPI, React, MQTT and Home Assistant.

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors