Official plugin registry for LEDMatrix · Installation · Documentation · Support
Web Interface (Recommended):
- Open
http://your-pi-ip:5000 - Go to Plugin Store tab
- Browse & click Install
API:
curl -X POST http://your-pi-ip:5050/api/plugins/install \
-H "Content-Type: application/json" \
-d '{"plugin_id": "football-scoreboard"}'| Plugin | Description | Details |
|---|---|---|
| Football Scoreboard | NFL & NCAA Football | NFL, NCAA FB |
| Hockey Scoreboard | NHL & NCAA Hockey | NHL, NCAA M/W |
| Basketball Scoreboard | NBA & NCAA Basketball | NBA, NCAA M/W, WNBA |
| Baseball Scoreboard | MLB & NCAA Baseball | MLB, MiLB, NCAA |
| Soccer Scoreboard | Global Soccer Leagues | Premier League, La Liga, Bundesliga, Serie A, Ligue 1, MLS |
| Odds Ticker | Betting Odds & Lines | NFL, NBA, MLB, NCAA |
| Sports Leaderboard | League Standings | Rankings, records, conference standings |
| Plugin | Description | Details |
|---|---|---|
| Stocks Ticker | Stock & Crypto Prices | Real-time prices, charts, volume |
| Stock News | Financial Headlines | Stock-specific news, RSS feeds |
| Plugin | Description | Details |
|---|---|---|
| Simple Clock | Time and date display | Basic clock display |
| Google Calendar | Event calendar display | Google Calendar integration |
| Plugin | Description | Details |
|---|---|---|
| Weather Display | Weather forecasts and conditions | Current, hourly, daily forecasts |
| Plugin | Description | Details |
|---|---|---|
| Music Player | Now playing with album art | Music player integration |
| Static Image Display | Image slideshow with effects | Image display with transitions |
| Plugin | Description | Details |
|---|---|---|
| Scrolling Text Display | Custom text and messages | Custom text scrolling |
| News Ticker | RSS news headlines | RSS feed integration |
| Of The Day | Daily quotes and verses | Daily inspirational content |
| Flights | ADSB Flight Map & Stats | Flight tracking display |
| Plugin | Description | Details |
|---|---|---|
| Christmas Countdown | Festive Christmas countdown with tree | Holiday countdown timer |
| Plugin | Description | Details |
|---|---|---|
| Hello World | Plugin development example | Template for plugin development |
The Plugin Store in the LEDMatrix web interface automatically fetches the latest plugins from this registry:
- Browse and search plugins
- One-click installation
- Automatic updates
- Configuration management
Clone plugin repositories directly:
git clone https://github.com/ChuckBuilds/ledmatrix-football-scoreboard.git
cp -r ledmatrix-football-scoreboard /path/to/LEDMatrix/plugins/Note: See individual plugin repositories for detailed setup instructions and configuration.
LEDMatrix supports installing plugins from any GitHub repository, not just the official registry. This allows you to use community plugins or your own custom plugins.
- Open the LEDMatrix web interface (
http://your-pi-ip:5000) - Navigate to Plugin Manager tab
- Scroll to "Install from GitHub" section
Install a plugin directly from its GitHub repository:
- Enter the GitHub repository URL (e.g.,
https://github.com/user/ledmatrix-my-plugin) - Optionally specify a branch (defaults to
mainif not provided) - Click Install
The plugin will be downloaded, installed, and automatically discovered by LEDMatrix.
Browse and install plugins from registry-style repositories (like this one):
- Enter a registry repository URL (e.g.,
https://github.com/user/ledmatrix-plugins) - Click Load Registry to browse available plugins
- Click Install on any plugin you want
- Optionally Save Repository for automatic loading on future visits
After installation:
- Plugin appears in the installed plugins list
- Enable via toggle switch in Plugin Manager
- Configure via Plugin Settings tab
- May require restarting LEDMatrix service:
sudo systemctl restart ledmatrix
- Custom Badge: 3rd party plugins show a "Custom" badge to indicate they're not from the official registry
- Code Review: Review plugin code before installing from untrusted sources
- Not Tracked: Plugins installed via URL are not tracked in the official registry
- Updates: Manual updates required unless you use a saved repository
plugins.json- Plugin metadata and download URLsupdate_registry.py- Automated version checkerconfig_secrets.template.json- GitHub API token template
python update_registry.pyGitHub API Token (Recommended):
Avoid rate limits (60 → 5,000 requests/hour):
- Copy template:
cp config_secrets.template.json config_secrets.json - Add token to
config_secrets.json - Get token: Create token (no scopes needed)
Alternatives:
- Environment:
$env:GITHUB_TOKEN = "your_token" - CLI:
python update_registry.py --token your_token
- Plugin System: All plugins inherit from
BasePluginfor consistent behavior - Configuration: JSON schema validation, web UI config, environment variable support
- Display Modes: Live, Recent, Upcoming, Ticker
- Background Services: Non-blocking API calls, intelligent caching, retry logic
- Web Integration: Full UI support for installation, configuration, and management
- Plugin Registry Setup Guide - Maintaining the registry
- Plugin Store User Guide - Using the plugin store
- Plugin Store Implementation - Technical details
- Quick Reference - Command reference
See SUBMISSION.md for guidelines and VERIFICATION.md for the review process.
- Plugin Developer Guide - Complete development guide
- Hello World Plugin - Starter template
Want to create your own plugin for LEDMatrix? Here's what you need to know for your plugin to be discovered and loaded by the system.
Your plugin repository must contain:
manifest.json- Plugin metadata and configuration (required)- Entry point file - Python file containing your plugin class (default:
manager.py) - Plugin class - Must inherit from
BasePluginand implement required methods
Optional but recommended:
requirements.txt- Python dependenciesconfig_schema.json- Configuration validation schemaREADME.md- Documentation for users
LEDMatrix automatically discovers plugins by:
- Scanning the
plugins/directory for subdirectories - Looking for
manifest.jsonin each subdirectory - Reading the manifest to get plugin metadata
- Loading plugins that are enabled in configuration
Directory naming: The plugin directory name should match the id field in your manifest.json.
Your manifest.json must include these required fields:
| Field | Type | Description |
|---|---|---|
id |
string | Unique plugin identifier (used as directory name) |
name |
string | Human-readable plugin name |
class_name |
string | Name of your plugin class (must match class in entry point) |
compatible_versions |
array | LEDMatrix version compatibility (e.g., [">=2.0.0"]) |
Common optional fields:
version- Plugin version (semver format)author- Plugin author namedescription- Brief descriptionentry_point- Entry point file (default:manager.py)display_modes- Array of display mode names
See the manifest schema for the complete field reference and validation rules.
Your plugin class must:
-
Inherit from
BasePlugin:from src.plugin_system.base_plugin import BasePlugin class MyPlugin(BasePlugin): pass
-
Implement required methods:
update()- Fetch/update plugin data (called based onupdate_interval)display(force_clear=False)- Render plugin content to display
-
Match class name: The class name must exactly match the
class_namein your manifest.json
Recommended plugin repository structure:
my-plugin/
├── manifest.json # Plugin metadata (required)
├── manager.py # Plugin class (required)
├── requirements.txt # Python dependencies (optional)
├── config_schema.json # Config validation (optional)
├── README.md # Documentation (recommended)
└── assets/ # Plugin assets (optional)
└── logos/
Repository types:
- Standalone plugin repo: Repository contains a single plugin (manifest.json at root)
- Monorepo: Repository contains multiple plugins (specify
plugin_pathduring installation)
-
Review the documentation:
- Plugin Development Guide - Complete development workflow
- Plugin API Reference - Complete API reference for Display Manager, Cache Manager, and Plugin Manager
- Advanced Plugin Development - Advanced patterns and examples
- Plugin Architecture Spec - System architecture
-
Start with a template:
- Hello World plugin - Starter template with examples
- See existing plugins in this registry for real-world examples
-
Set up development environment:
# Link plugin for development ./scripts/dev/dev_plugin_setup.sh link-github your-plugin # Test with emulator python run.py --emulator
To submit your plugin for inclusion in the official registry:
-
Ensure Quality:
- Plugin works reliably on Raspberry Pi hardware
- Well-documented with comprehensive README.md
- Follows best practices from Advanced Plugin Development
- Includes
config_schema.jsonfor web UI configuration - Proper error handling and logging
-
Create GitHub Repository:
- Repository name:
ledmatrix-<plugin-name> - Public repository
- Proper README.md with installation and configuration instructions
- Semantic versioning in manifest.json
- Repository name:
-
Submit for Review:
- Open a GitHub issue in this repository (ledmatrix-plugins)
- Or reach out on Discord: https://discord.gg/uW36dVAtcT
- Include:
- Repository URL
- Plugin description and use case
- Screenshots or video demonstration
- Why it would be useful to the community
-
Review Process:
- Code review for quality and security
- Testing on Raspberry Pi hardware
- Documentation review
- If approved, added to official registry
Before submitting, ensure your plugin:
- ✅ Works on Raspberry Pi hardware (not just emulator)
- ✅ Handles errors gracefully
- ✅ Uses caching appropriately to avoid excessive API calls
- ✅ Follows performance best practices
- ✅ Includes comprehensive README.md
- ✅ Has proper
config_schema.jsonfor web UI
- Use semantic versioning:
MAJOR.MINOR.PATCH(e.g.,1.2.3) - Automatic version bumping: Install the pre-push git hook for automatic patch version bumps
- GitHub as source of truth: Plugin store fetches versions from GitHub releases/tags/manifest
See the LEDMatrix Git Workflow for version management details.
GNU General Public License v3.0 - see LICENSE for details.
- Discord: Join the community
- Issues: Report plugin issues
- LEDMatrix: Main repository
- YouTube: @ChuckBuilds
- Instagram: @ChuckBuilds
- Support the Project:
Note: Plugins are actively developed. Report bugs or feature requests on individual plugin repositories.