{"id":45462409,"url":"https://github.com/timfallmk/framework-led-matrix-daemon","last_synced_at":"2026-04-01T22:22:05.404Z","repository":{"id":306533424,"uuid":"1026499941","full_name":"timfallmk/framework-led-matrix-daemon","owner":"timfallmk","description":"Daemon to display various system statistics on the Framework LED matrices","archived":false,"fork":false,"pushed_at":"2026-03-21T22:15:01.000Z","size":9432,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-22T10:53:48.579Z","etag":null,"topics":["framework"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/timfallmk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["timfallmk"]}},"created_at":"2025-07-26T02:44:41.000Z","updated_at":"2026-03-21T21:02:43.000Z","dependencies_parsed_at":"2025-08-22T06:06:45.027Z","dependency_job_id":"31226464-3fbc-414c-baa5-5da76f9a72af","html_url":"https://github.com/timfallmk/framework-led-matrix-daemon","commit_stats":null,"previous_names":["timfallmk/framework-led-matrix-daemon"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/timfallmk/framework-led-matrix-daemon","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timfallmk%2Fframework-led-matrix-daemon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timfallmk%2Fframework-led-matrix-daemon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timfallmk%2Fframework-led-matrix-daemon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timfallmk%2Fframework-led-matrix-daemon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/timfallmk","download_url":"https://codeload.github.com/timfallmk/framework-led-matrix-daemon/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timfallmk%2Fframework-led-matrix-daemon/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31292639,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T21:15:39.731Z","status":"ssl_error","status_checked_at":"2026-04-01T21:15:34.046Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["framework"],"created_at":"2026-02-22T08:16:18.525Z","updated_at":"2026-04-01T22:22:05.377Z","avatar_url":"https://github.com/timfallmk.png","language":"Go","funding_links":["https://github.com/sponsors/timfallmk"],"categories":[],"sub_categories":[],"readme":"# Framework LED Matrix Daemon\n\n[![CI](https://github.com/timfallmk/framework-led-matrix-daemon/actions/workflows/ci.yml/badge.svg)](https://github.com/timfallmk/framework-led-matrix-daemon/actions/workflows/ci.yml)\n![CodeRabbit Pull Request Reviews](https://img.shields.io/coderabbit/prs/github/timfallmk/framework-led-matrix-daemon?utm_source=oss\u0026utm_medium=github\u0026utm_campaign=timfallmk%2Fframework-led-matrix-daemon\u0026labelColor=171717\u0026color=FF570A\u0026link=https%3A%2F%2Fcoderabbit.ai\u0026label=CodeRabbit+Reviews)\n\nA cross-platform Go daemon that displays real-time system statistics on Framework Laptop LED matrices. Monitor CPU usage, memory consumption, disk activity, and system status directly on your laptop's LED matrix input modules. Supports both single and dual matrix configurations for enhanced monitoring capabilities.\n\n## Features\n\n- **Real-time System Monitoring**: CPU, memory, disk I/O, and network statistics\n- **Dual Matrix Support**: Configure up to two LED matrices with different display modes\n- **Multiple Display Modes**: Percentage bars, gradients, activity indicators, and status displays\n- **Cross-platform Support**: Linux, Windows with automated service management\n- **Configurable Thresholds**: Customizable warning and critical levels\n- **Automatic Port Discovery**: Finds Framework LED matrices automatically\n- **Flexible Matrix Modes**: Mirror, split, extended, and independent dual matrix configurations\n- **Daemonizable**: Full systemd integration with proper service management\n- **YAML Configuration**: Flexible configuration with command-line overrides\n\n## Quick Start\n\n### Build and Install\n\n```bash\n# Clone the repository\ngit clone https://github.com/timfallmk/framework-led-matrix-daemon\ncd framework-led-matrix-daemon\n\n# Build the daemon\nmake build\n\n# Test LED matrix connection (single or dual)\n./bin/framework-led-daemon test\n\n# Run in foreground for testing\n./bin/framework-led-daemon run\n\n# Install as system service (Linux)\nsudo make install\nsudo systemctl enable framework-led-daemon\nsudo systemctl start framework-led-daemon\n```\n\n### Usage Examples\n\n```bash\n# Single Matrix Examples\nframework-led-daemon -config /path/to/config.yaml run\nframework-led-daemon -port /dev/ttyACM0 -brightness 128 run\nframework-led-daemon -metric memory -mode percentage run\n\n# Dual Matrix Examples (requires dual matrix configuration)\nframework-led-daemon -config /path/to/dual-matrix-config.yaml run\n\n# Service Management\nframework-led-daemon install\nframework-led-daemon start\nframework-led-daemon status\nframework-led-daemon stop\nframework-led-daemon remove\n```\n\n## Configuration\n\nThe daemon uses YAML configuration files with the following search order:\n\n1. Path specified by `-config` flag\n2. `$XDG_CONFIG_HOME/framework-led-daemon/config.yaml`\n3. `$HOME/.config/framework-led-daemon/config.yaml`\n4. `/etc/framework-led-daemon/config.yaml`\n5. `./configs/config.yaml`\n\n### Single Matrix Configuration\n\nFor single matrix setups (default):\n\n```yaml\nmatrix:\n  port: \"\"                    # Auto-discover if empty\n  baud_rate: 115200          # Serial communication baud rate\n  auto_discover: true        # Automatically find LED matrix port\n  brightness: 100            # LED brightness (0-255)\n\nstats:\n  collect_interval: 2s       # How often to collect system statistics\n  enable_cpu: true           # Enable CPU monitoring\n  enable_memory: true        # Enable memory monitoring\n  enable_disk: true          # Enable disk monitoring\n  thresholds:\n    cpu_warning: 70.0        # CPU usage warning threshold (%)\n    cpu_critical: 90.0       # CPU usage critical threshold (%)\n    memory_warning: 80.0     # Memory usage warning threshold (%)\n    memory_critical: 95.0    # Memory usage critical threshold (%)\n\ndisplay:\n  update_rate: 1s            # How often to update the display\n  mode: \"percentage\"         # Display mode: percentage, gradient, activity, status\n  primary_metric: \"cpu\"      # Primary metric: cpu, memory, disk, network\n  show_activity: true        # Show activity indicators\n```\n\n### Dual Matrix Configuration\n\nFor dual matrix setups with two LED matrices:\n\n```yaml\nmatrix:\n  # Legacy single matrix settings (used as fallback)\n  port: \"\"                    # Auto-discover if empty\n  baud_rate: 115200          # Serial communication baud rate\n  auto_discover: true        # Automatically find LED matrix port\n  brightness: 100            # Default brightness (0-255)\n  \n  # Dual matrix configuration\n  dual_mode: \"split\"         # Dual matrix mode: mirror, split, extended, independent\n  matrices:\n    - name: \"primary\"        # Primary matrix (left side)\n      port: \"\"               # Auto-discover if empty\n      role: \"primary\"        # Matrix role: primary, secondary\n      brightness: 100        # Individual brightness control\n      metrics: [\"cpu\", \"memory\"]  # Metrics to display on this matrix\n    - name: \"secondary\"      # Secondary matrix (right side)\n      port: \"\"               # Auto-discover if empty  \n      role: \"secondary\"      # Matrix role: primary, secondary\n      brightness: 100        # Individual brightness control\n      metrics: [\"disk\", \"network\"]  # Metrics to display on this matrix\n\nstats:\n  collect_interval: 2s       # How often to collect system statistics\n  enable_cpu: true           # Enable CPU monitoring\n  enable_memory: true        # Enable memory monitoring\n  enable_disk: true          # Enable disk monitoring\n  enable_network: true       # Enable network monitoring (recommended for dual matrix)\n  thresholds:\n    cpu_warning: 70.0        # CPU usage warning threshold (%)\n    cpu_critical: 90.0       # CPU usage critical threshold (%)\n    memory_warning: 80.0     # Memory usage warning threshold (%)\n    memory_critical: 95.0    # Memory usage critical threshold (%)\n\ndisplay:\n  update_rate: 1s            # How often to update the display\n  mode: \"percentage\"         # Display mode: percentage, gradient, activity, status\n  primary_metric: \"cpu\"      # Primary metric: cpu, memory, disk, network\n  show_activity: true        # Show activity indicators\n```\n\n### Dual Matrix Modes\n\n- **Mirror Mode** (`dual_mode: \"mirror\"`): Both matrices display identical content\n- **Split Mode** (`dual_mode: \"split\"`): Each matrix displays different metrics (default)\n- **Extended Mode** (`dual_mode: \"extended\"`): Wide visualization across both matrices\n- **Independent Mode** (`dual_mode: \"independent\"`): Completely separate configurations\n\n## Display Modes\n\nThe Framework LED Matrix (9x34 pixels) supports multiple visualization modes for system monitoring. Each mode provides different insights into your system's performance.\n\n### 1. **Percentage Mode** (`display_mode: \"percentage\"`)\n\nShows system metrics as dynamic progress bars across the LED matrix:\n\n```\nCPU Usage (75%):\n┌─────────────────────────────────┐\n│████████████████████████░░░░░░░░│ ← 75% filled\n└─────────────────────────────────┘\n\nMemory Usage (50%):\n┌─────────────────────────────────┐\n│█████████████████░░░░░░░░░░░░░░░░│ ← 50% filled\n└─────────────────────────────────┘\n\nNetwork Activity (25%):\n┌─────────────────────────────────┐\n│████████░░░░░░░░░░░░░░░░░░░░░░░░░│ ← 25% filled\n└─────────────────────────────────┘\n```\n\n**Best for:** Real-time monitoring of specific metrics, development workstations, compile progress tracking.\n\n**Configuration Example:**\n```yaml\ndisplay:\n  mode: \"percentage\"\n  primary_metric: \"cpu\"        # cpu, memory, disk, network\n  update_rate: 1s\n  brightness: 200\n```\n\n### 2. **Gradient Mode** (`display_mode: \"gradient\"`)\n\nDisplays smooth gradient patterns representing overall system load:\n\n```\nSystem Load Gradient:\n┌─────────────────────────────────┐\n│░░░▒▒▒▓▓▓███▓▓▓▒▒▒░░░▒▒▒▓▓▓███│ ← Gradient pattern\n│░░▒▒▓▓███████████▓▓▒▒░░▒▒▓▓███│   representing\n│▒▒▓▓███████████████▓▓▒▒▓▓██████│   overall system\n│▓▓███████████████████▓▓████████│   activity level\n└─────────────────────────────────┘\n```\n\n**Best for:** Ambient monitoring, aesthetic appeal, low-distraction environments.\n\n**Configuration Example:**\n```yaml\ndisplay:\n  mode: \"gradient\"\n  brightness: 128\n  animation: true\n  update_rate: 3s\n```\n\n### 3. **Activity Mode** (`display_mode: \"activity\"`)\n\nShows real-time system activity with dynamic patterns that change based on system load:\n\n**High Activity (Zig-Zag Pattern):**\n```\nHigh CPU/Disk/Network Activity:\n┌─────────────────────────────────┐\n│█░█░█░█░█░█░█░█░█░█░█░█░█░█░█░█│ ← Animated zig-zag\n│░█░█░█░█░█░█░█░█░█░█░█░█░█░█░█░│   pattern shows\n│█░█░█░█░█░█░█░█░█░█░█░█░█░█░█░█│   system is active\n│░█░█░█░█░█░█░█░█░█░█░█░█░█░█░█░│\n└─────────────────────────────────┘\n```\n\n**Low Activity (Smooth Gradient):**\n```\nLow System Activity:\n┌─────────────────────────────────┐\n│░░░░▒▒▒▒▓▓▓▓████▓▓▓▓▒▒▒▒░░░░│ ← Calm gradient\n│░░▒▒▒▓▓▓██████████▓▓▓▒▒▒░░│   shows system\n│▒▒▓▓████████████████▓▓▒▒│   is idle\n│▓▓██████████████████▓▓│\n└─────────────────────────────────┘\n```\n\n**Best for:** Gaming setups, performance monitoring, understanding system behavior patterns.\n\n**Configuration Example:**\n```yaml\ndisplay:\n  mode: \"activity\"\n  brightness: 255\n  animation: true\n  update_rate: 1s\nstats:\n  thresholds:\n    cpu_warning: 60.0    # Lower threshold for more sensitive activity detection\n```\n\n### 4. **Status Mode** (`display_mode: \"status\"`)\n\nColor-coded system health indicators with distinct patterns for each status level:\n\n**Normal Status (Green):**\n```\nSystem Health: NORMAL\n┌─────────────────────────────────┐\n│    ░░░░░░░░░░░░░░░░░░░░░░░░    │ ← Soft gradient\n│  ░░░░░░░░░░░░░░░░░░░░░░░░░░░░  │   (low intensity)\n│░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░│   \n│  ░░░░░░░░░░░░░░░░░░░░░░░░░░░░  │\n└─────────────────────────────────┘\n```\n\n**Warning Status (Orange):**\n```\nSystem Health: WARNING\n┌─────────────────────────────────┐\n│█░█░█░█░█░█░█░█░█░█░█░█░█░█░█░█│ ← Zig-zag pattern\n│░█░█░█░█░█░█░█░█░█░█░█░█░█░█░█░│   (medium intensity)\n│█░█░█░█░█░█░█░█░█░█░█░█░█░█░█░█│   \n│░█░█░█░█░█░█░█░█░█░█░█░█░█░█░█░│\n└─────────────────────────────────┘\n```\n\n**Critical Status (Red):**\n```\nSystem Health: CRITICAL\n┌─────────────────────────────────┐\n│███████████████████████████████│ ← Solid pattern\n│███████████████████████████████│   (high intensity)\n│███████████████████████████████│   \n│███████████████████████████████│\n└─────────────────────────────────┘\n```\n\n**Best for:** Server monitoring, system administration, alert-focused environments.\n\n**Configuration Example:**\n```yaml\ndisplay:\n  mode: \"status\"\n  brightness: 180\n  animation: false\nstats:\n  thresholds:\n    cpu_warning: 70.0\n    cpu_critical: 85.0\n    memory_warning: 80.0\n    memory_critical: 95.0\n```\n\n## Configuration Examples by Use Case\n\n### 🎮 Gaming Setup\nBright, responsive activity monitoring for performance awareness:\n\n```yaml\nmatrix:\n  brightness: 255\n  auto_discover: true\n\ndisplay:\n  mode: \"activity\"\n  primary_metric: \"cpu\"\n  update_rate: 1s\n  animation: true\n\nstats:\n  collect_interval: 1s\n  thresholds:\n    cpu_warning: 70\n    cpu_critical: 85\n    memory_warning: 75\n    memory_critical: 90\n```\n**Visual Result:** Animated zig-zag patterns during gaming sessions, smooth gradients during idle periods.\n\n### 🖥️ Server Monitoring\nReliable status indicators for system health:\n\n```yaml\nmatrix:\n  brightness: 128\n  auto_discover: true\n\ndisplay:\n  mode: \"status\"\n  primary_metric: \"memory\"\n  update_rate: 5s\n  animation: false\n\nstats:\n  collect_interval: 3s\n  thresholds:\n    memory_warning: 80\n    memory_critical: 95\n    cpu_warning: 80\n    cpu_critical: 95\n```\n**Visual Result:** Steady status indicators - green for normal operation, orange for resource pressure, red for critical states.\n\n### 💻 Development Workstation\nReal-time progress bars for compilation and system load:\n\n```yaml\nmatrix:\n  brightness: 200\n  auto_discover: true\n\ndisplay:\n  mode: \"percentage\"\n  primary_metric: \"cpu\"\n  update_rate: 2s\n  animation: true\n\nstats:\n  collect_interval: 2s\n  enable_cpu: true\n  enable_memory: true\n  enable_disk: true\n```\n**Visual Result:** Dynamic CPU usage bars that update every 2 seconds, perfect for monitoring compile times and system responsiveness.\n\n### 🌙 Ambient Monitoring\nSubtle, aesthetic system awareness:\n\n```yaml\nmatrix:\n  brightness: 80\n  auto_discover: true\n\ndisplay:\n  mode: \"gradient\"\n  update_rate: 10s\n  animation: true\n\nstats:\n  collect_interval: 5s\n```\n**Visual Result:** Gentle gradient patterns that subtly shift based on system load, providing awareness without distraction.\n\n### 🖥️💻 Dual Matrix Power User\nEnhanced monitoring with two matrices showing different metrics:\n\n```yaml\nmatrix:\n  # Enable dual matrix mode\n  dual_mode: \"split\"\n  matrices:\n    - name: \"primary\"\n      role: \"primary\"\n      brightness: 200\n      metrics: [\"cpu\", \"memory\"]    # Left matrix: CPU and Memory\n    - name: \"secondary\"\n      role: \"secondary\"\n      brightness: 200\n      metrics: [\"disk\", \"network\"]  # Right matrix: Disk and Network\n\ndisplay:\n  mode: \"percentage\"\n  update_rate: 1s\n  animation: true\n\nstats:\n  collect_interval: 1s\n  enable_cpu: true\n  enable_memory: true\n  enable_disk: true\n  enable_network: true\n```\n**Visual Result:** Left matrix shows CPU/Memory bars, right matrix shows Disk/Network activity - complete system visibility at a glance.\n\n### 🖥️🖥️ Dual Matrix Mirror Mode\nIdentical content on both matrices for enhanced visibility:\n\n```yaml\nmatrix:\n  dual_mode: \"mirror\"\n  matrices:\n    - name: \"primary\"\n      brightness: 255\n    - name: \"secondary\"\n      brightness: 255\n\ndisplay:\n  mode: \"activity\"\n  update_rate: 1s\n```\n**Visual Result:** Both matrices display the same activity patterns, perfect for wide viewing angles or presentations.\n\n## Display Features\n\n- **Brightness Control:** 0-255 intensity levels for any lighting condition\n- **Animation Support:** Pulsing, scrolling, and pattern transitions\n- **Update Rates:** 1-30 second intervals for smooth or battery-friendly operation\n- **Auto-Discovery:** Automatically detects Framework LED Matrix hardware\n- **Hot Configuration:** Changes apply immediately without service restart\n\n## System Requirements\n\n- Framework Laptop with LED Matrix input module(s)\n  - Single matrix: Works with one LED matrix module\n  - Dual matrix: Supports up to two LED matrix modules simultaneously\n- Go 1.26 or later (for building)\n- Serial port access permissions\n- Linux: `udev` rules or user in `dialout` group\n- Windows: Administrator privileges for service installation\n\n## Building\n\n### Prerequisites\n\n```bash\n# Install Go 1.26+\n# Install make (usually pre-installed on Linux)\n\n# Clone and build\ngit clone https://github.com/timfallmk/framework-led-matrix-daemon\ncd framework-led-matrix-daemon\nmake deps\nmake build\n```\n\n### Cross-compilation\n\n```bash\n# Build for all supported platforms\nmake cross-compile\n\n# Create release packages\nmake release\n```\n\n### GUI Application\n\nThe optional GUI application requires CGO and system graphics libraries (the daemon itself does not).\n\n**System prerequisites (install once):**\n\n- **Debian / Ubuntu:** `sudo apt-get install libgl1-mesa-dev xorg-dev`\n- **Fedora:** `sudo dnf install gcc libXcursor-devel libXrandr-devel mesa-libGL-devel libXi-devel libXinerama-devel libXxf86vm-devel`\n- **Arch Linux:** `sudo pacman -S xorg-server-devel libxcursor libxrandr libxinerama libxi`\n- **Windows:** Install [MSYS2](https://www.msys2.org/) with `pacman -S mingw-w64-x86_64-toolchain`\n- See the [Fyne prerequisites](https://docs.fyne.io/started/quick/) for other platforms.\n\n```bash\n# Build the GUI\nmake gui\n\n# Build and run\nmake gui-run\n```\n\n## Installation\n\n### Linux (systemd)\n\n```bash\n# Build and install\nmake install\n\n# Enable and start service\nsudo systemctl enable framework-led-daemon\nsudo systemctl start framework-led-daemon\n\n# Check status\nsudo systemctl status framework-led-daemon\n\n# View logs\nsudo journalctl -u framework-led-daemon -f\n```\n\n### Manual Installation\n\n```bash\n# Copy binary\nsudo cp bin/framework-led-daemon /usr/local/bin/\n\n# Copy configuration\nsudo mkdir -p /etc/framework-led-daemon\nsudo cp configs/config.yaml /etc/framework-led-daemon/\n\n# Run daemon\nframework-led-daemon run\n```\n\n## Troubleshooting\n\n### Permission Issues\n\n```bash\n# Add user to dialout group (Linux)\nsudo usermod -a -G dialout $USER\n\n# Set udev rules for Framework LED Matrix\necho 'SUBSYSTEM==\"tty\", ATTRS{idVendor}==\"32ac\", MODE=\"0666\"' | sudo tee /etc/udev/rules.d/99-framework-led.rules\nsudo udevadm control --reload-rules\n```\n\n### Connection Issues\n\n```bash\n# Test LED matrix connection\nframework-led-daemon test\n\n# List available serial ports\nframework-led-daemon -log-level debug test\n\n# Manually specify port\nframework-led-daemon -port /dev/ttyACM0 test\n```\n\n### Service Issues\n\n```bash\n# Check service status\nsudo systemctl status framework-led-daemon\n\n# View detailed logs\nsudo journalctl -u framework-led-daemon -f\n\n# Restart service\nsudo systemctl restart framework-led-daemon\n```\n\n## Development\n\n### Project Structure\n\n```\n├── cmd/daemon/           # Main CLI application\n├── internal/\n│   ├── config/          # Configuration management\n│   ├── matrix/          # LED Matrix communication\n│   ├── stats/           # System statistics collection\n│   ├── daemon/          # Service lifecycle management\n│   └── visualizer/      # Display pattern mapping\n├── configs/             # Default configuration\n├── systemd/             # systemd service files\n└── Makefile            # Build automation\n```\n\n### Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Add tests if applicable\n5. Run `make test` and `make fmt`\n6. Submit a pull request\n\n## Architecture\n\nThe daemon consists of several key components:\n\n- **Matrix Client**: Handles serial communication with Framework LED matrices using the documented protocol\n- **Stats Collector**: Gathers system metrics using `gopsutil` library\n- **Visualizer**: Maps system statistics to LED display patterns\n- **Service Manager**: Handles daemon lifecycle and cross-platform service integration\n- **Configuration**: YAML-based configuration with validation and hot-reloading\n\n## Protocol Support\n\nBased on the Framework Input Module protocol:\n- Magic bytes: `0x32 0xAC`\n- Supported commands: Brightness, Pattern, Animation, Custom drawing\n- Baud rate: 115200\n- Auto-discovery via USB VID/PID detection\n\n## License\n\nThis project is licensed under the GNU Affero General Public License v3.0 - see the [LICENSE](LICENSE) file for details.\n\n## Acknowledgments\n\n- Framework Computer for the open-source LED matrix protocol documentation\n- The Go community for excellent system monitoring libraries (`gopsutil`, `serial`)\n- Contributors to the `takama/daemon` library for cross-platform service management\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimfallmk%2Fframework-led-matrix-daemon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftimfallmk%2Fframework-led-matrix-daemon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimfallmk%2Fframework-led-matrix-daemon/lists"}