Development Status: This project is in an early development phase.
HomeRecall is a centralized backup solution for Smart Home IoT devices. It is engineered to run natively as a Home Assistant Add-on (supporting Ingress and auto-theming) but operates equally well as a standalone container or .NET application.
Its primary goal is to ensure configuration persistence for a wide range of DIY and commercial IoT devices without reliance on cloud services.
HomeRecall supports configuration backup for a variety of popular firmware and devices:
- Tasmota: Backs up the main configuration (
Config.dmp) and automatically includes Berry scripts (.befiles) from the UFS for firmware 14.6.0 or newer. - Shelly: Backs up the main configuration (
settings.json/config.json) and additionally downloads all user scripts (.jsfiles) for Gen 2/3 devices. - WLED: Backs up the primary configuration (
cfg.json) and all user presets (presets.json). - Awtrix Light: Recursively backs up all files and folders stored on the device's internal flash storage.
- openHASP: Backs up all files stored on the root filesystem (e.g., UI
.jsonlconfigurations, fonts). - OpenDTU (untested alpha): Backs up the configuration (
config.json). - AI-on-the-Edge (untested alpha): Backs up the configuration (
config.ini) and reference frames (ref0.jpg,ref1.jpg,reference.jpg). - AhoyDTU (untested alpha)
- Versioning & History: Keeps a history of configuration changes.
- Deduplication: Uses content-based hashing to store only unique backups, saving storage space while maintaining a full history.
- Visual Diff: The UI highlights consecutive identical backups to easily identify when a configuration actually changed.
- Mass Operations: Trigger backups for individual devices or the entire network with a single action.
- Scanner: Integrated multi-threaded network scanner to find devices within IP ranges.
- Auto-Detection: Automatically identifies device types, firmware versions, and hardware models (e.g., distinguishing a "Sonoff Basic" from a generic Tasmota device).
- Live Feedback: Real-time visibility of found devices during the scan process.
- Multi-Interface Support: Discovers and tracks devices with multiple network interfaces (e.g. Wi-Fi and Ethernet) and intelligently switches interfaces during backup if one fails.
- MQTT Auto-Discovery: Automatically detects and adds devices announcing themselves on your MQTT broker (supports Tasmota for now). If a device's IP address changes, HomeRecall updates it automatically by tracking its MAC address.
- Home Assistant: First-class citizen support via Add-on. Supports Ingress for seamless UI integration
- Portable: Runs on any platform supporting Docker or .NET 10 (Windows, Linux, macOS, Raspberry Pi).
- Localization: Interface available in English and German.
- Configurable Logging: Advanced log tracking capabilities configured seamlessly through Home Assistant Add-on options.
This project utilizes a modern technology stack to ensure performance and maintainability:
- Framework: .NET 10 (LTS)
- UI: Blazor Server with MudBlazor (Material Design)
- Data: SQLite with Entity Framework Core
- Runtime: Docker (Alpine Linux base)
- Add this repository URL to your Home Assistant Add-on Store.
- Install HomeRecall.
- Start the Add-on and click "Open Web UI".
Ensure the data directories exist and are accessible:
mkdir -p data backupsRun the container using the official multi-arch image from GitHub Container Registry:
docker run -d \
--name homerecall \
-p 5000:8080 \
-v $(pwd)/data:/config \
-v $(pwd)/backups:/backup \
ghcr.io/dasdandre/homerecall:latestAutomatically pulls the correct image for your architecture (amd64, arm64, arm/v7).
To build and run the container locally from source:
# Build the image locally
docker build -t homerecall ./homerecall
# Run the container (mounting data volume)
docker run -d -p 5000:8080 -v $(pwd)/data:/config -v $(pwd)/backups:/backup homerecallRequires .NET 10 SDK.
cd homerecall
dotnet watch runHomeRecall represents a modern approach to software engineering. The entire codebase—from the backend architecture to the UI components—was developed through an iterative co-authoring process between a human developer and an AI Agent. This methodology emphasizes rapid prototyping, clean code standards, and robust architectural decisions.
Distributed under the MIT License.