A robust and modern plugin manager for Domoticz that allows you to install and automatically update other Python plugins directly from GitHub.
Note: This plugin runs exclusively on Linux Systems (including Raspberry Pi).
A Fork for the Future: This repository is a modernized fork of the original ycahome/pp-manager. It was created to clean up the codebase, ensure full compatibility with modern Python versions (including Python 3.13 and up), and introduce significantly advanced security and dependency management features.
- Custom Plugin Store UI: A clean, modern web interface accessible via the Domoticz Custom menu.
- Search & Filter: Easily find plugins in the curated registry with type-ahead search and "Installed" toggles.
- Install/Remove/Update: Manage your entire Python plugin ecosystem with a single click—no manual folder management required.
- Auto Updates: Automatically checks and pulls updates for installed plugins.
- Flexible Dependency Management: Supports automatic dependency installation using
uv(recommended) orpip. Also allows for manual sysadmin-managed dependencies. - PEP 668 Compliant: When using
uvorpip, dependencies are safely installed into a local.shared_depsisolated folder without requiringsudoor globalpipaccess. - Update Notifications: Opt-in to receive email/system notifications when a plugin update is available.
- Decoupled Registry: Uses
registry.jsondynamically fetched from GitHub, so you don't need to constantly update the manager just to see new plugins in your list.
This fork introduces a vastly improved Abstract Syntax Tree (AST) based security scanner to protect your Domoticz instance from malicious plugins:
- Deep Execution Detection: Detects calls to dangerous functions like
os.system,subprocess(specificallyshell=True),eval,exec, andpickle. - Smart IP Filtering: Automatically ignores private, loopback, and broadcast IP addresses, as well as version numbers in User Agents, to reduce false positives.
- Developer Overrides: Supports
# security-ignoreor# noseccomments to manually silence known-safe code findings. - Destructive Operation Blocking: Flags destructive file operations such as
shutil.rmtreeoros.remove. - AST Bomb & DoS Protection: Implements hard file size limits (5MB) and recursive parsing exception handling to prevent malicious files from crashing your plugin manager.
- Git: Required to clone and update repositories. (
sudo apt install git) - uv (Recommended): For fast and safe Python dependency resolution. (
curl -LsSf https://astral.sh/uv/install.sh | sh) - pip/pip3 (Optional): Fallback if
uvis not installed.
Navigate to your Domoticz plugins folder and clone this repository as 00-PyPluginStore.
cd domoticz/plugins
git clone https://github.com/adrighem/PyPluginStore.git 00-PyPluginStoreDomoticz loads Python plugins alphabetically by folder name. Prefixing with 00- ensures that the manager loads first. This enables PyPluginStore to set up the shared dependency environment (.shared_deps) so other plugins can load their required libraries immediately on startup.
After cloning, restart your Domoticz service:
sudo systemctl restart domoticz.serviceOnce installed and Domoticz is restarted:
- Go to Setup -> Hardware and add the PyPluginStore hardware.
- Navigate to Custom -> Plugin Manager in the top menu to open the Plugin Store dashboard.
- Auto Update:
- All: Continuously updates all installed plugins.
- All (NotifyOnly): Checks all plugins for updates and notifies you.
- None: Disables auto-updating.
- Debug: Set to True for detailed logging.
If you prefer to manage dependencies manually or are on a system where automatic installation is restricted, you can install the required libraries for your plugins manually.
PyPluginStore looks for shared dependencies in its own .shared_deps directory and adds it to sys.path.
To install dependencies for a specific plugin manually:
- Check the
requirements.txtfile in the plugin's folder. - Install them into the
00-PyPluginStore/.shared_depsfolder:pip install -r /path/to/plugin/requirements.txt --target /path/to/domoticz/plugins/00-PyPluginStore/.shared_deps
To add your plugin to the manager, simply submit a Pull Request to update registry.json in this repository.
When a Pull Request modifying registry.json is merged, a GitHub Action automatically updates the registry metadata including the latest repository push timestamps.
Auto-updating plugins without manually reviewing the code changes exposes your system to whatever the developer pushes. By using auto-update, you trust the developers of your installed plugins.
Join the conversation on the official Domoticz forums: https://forum.domoticz.com/viewtopic.php?t=22339
