Skip to content

voyvodka/LumaSync

LumaSync

Website CI Release License: MIT Platform: macOS | Windows

Website: lumasync.app

LumaSync is a native desktop app that mirrors your screen to WS2812B LED strips and Philips Hue entertainment areas in real time. A single calibrated room map drives per-edge LED layouts and Hue channel placement; all processing stays on your machine — no cloud, no telemetry.

It combines a React + TypeScript frontend with a Rust/Tauri runtime to keep the UI responsive while handling native desktop behavior.

Screenshots

Compact tray-sized mode (320×480) and full workspace mode (900×620) — amber Rev 07 design language, same state shared across both layouts.

LumaSync compact lights view LumaSync full lights view

Features

  • Ambilight: real-time screen capture drives LED strips and/or Hue lights simultaneously, with per-LED edge sampling anchored to the room map
  • Philips Hue: DTLS 1.2 PSK entertainment streaming, channel position editor, zone auto-derivation from room map
  • Room map editor: drag-and-drop canvas with furniture, TV anchor, and USB strip objects; Hue channels overlaid on normalized coordinates
  • Multi-monitor capture: pick which display feeds the lights; hot-plug and resolution changes are handled without restart
  • Color correction: per-channel R/G/B gamma, Kelvin white-balance, and saturation trim — tuned once per strip, persisted per layout
  • Solid color: RGB + brightness push to USB and Hue with debounced 50 ms update
  • LED calibration: edge counts, gap, corner ownership, start anchor, direction — persisted per layout
  • Firmware profiles: LumaSync-native framing out of the box; Adalight profile for off-the-shelf microcontrollers
  • Target-aware pipeline: choose USB, Hue, or both per mode; hot-plug detection with suggestion banner
  • Compact, stays out of your way: lives in the tray; opens as a 320×480 panel for quick scene changes or a 900×620 full view for calibration, on demand
  • Runtime HUD: StatusBar pill surfaces live FPS and end-to-end latency with green/amber/red thresholds
  • Native notifications: OS-level toast for connection, stream, and update events; permission banner asks once and never re-prompts
  • Resilient shell: global error boundary catches render faults and offers a localized restart/logs card instead of a white-screened tray window
  • Auto-updater: GitHub Releases with minisign signature verification

Tech Stack

  • Frontend: Vite, React 19, TypeScript (strict), Tailwind CSS
  • Desktop runtime: Tauri v2, Rust
  • Testing: Vitest + Testing Library, Cargo test
  • Package manager: pnpm

Supported Hardware

USB Controllers

Microcontrollers using the following USB-to-serial chips are supported:

Chip USB ID
CH340 1A86:7523
FTDI FT232 0403:6001
CP2102 (Silicon Labs) 10C4:EA60
Arduino Uno R3 2341:0043
Arduino Uno (original) 2341:0001

Baud rate: 115200. LumaSync ships with two firmware profiles:

  • LumaSync-native (default): 0xAA 0x55 header, LE LED count, gamma-corrected RGB triplets, XOR checksum. A matching firmware sketch ships with the companion hardware repo.
  • Adalight: the widely-used "Ada" header format, compatible with off-the-shelf WS2812B controllers and existing Adalight firmware builds.

Profile is selected per device in the Devices section.

Philips Hue

  • Hue Bridge (gen 2+) on the local network
  • At least one configured Entertainment Area in the Hue app
  • macOS only: macos-private-api is required for fullscreen calibration overlays — the app requests this automatically

Platform Support

Platform Status Notes
macOS Full support Primary development target. macos-private-api enabled for fullscreen overlays.
Windows Full support USB and Hue features work. Windows Graphics Capture powers the capture pipeline.
Linux Planned (v1.5) Not shipped in v1.4. Targeted for the next release; requires GTK 3, WebKitGTK 4.1, and libudev.

Getting Started

Prerequisites

  • Node.js 20+
  • pnpm 10+
  • Rust toolchain (stable)
  • Tauri platform prerequisites for your OS

Install

pnpm install

Development

pnpm tauri dev

Build

pnpm tauri build

Common Scripts

  • pnpm dev: run web-only Vite dev server
  • pnpm tauri dev: run desktop app in development mode
  • pnpm typecheck: run TypeScript type checks (no emit)
  • pnpm lint: alias for typecheck
  • pnpm vitest run: run frontend unit tests once
  • pnpm vitest: run frontend tests in watch mode
  • pnpm verify:shell-contracts: validate Rust command handlers match frontend contract definitions
  • pnpm check:rust: run Rust cargo check
  • pnpm check:all: run JS + Rust + shell contract checks together

Project Structure

  • src/: React application and feature modules
  • src/shared/contracts/: cross-layer contract definitions
  • src-tauri/src/commands/: Rust Tauri command handlers
  • docs/: debugging and manual operational docs

Documentation

  • Debugging guide: docs/debugging.md
  • Contributing guide: CONTRIBUTING.md
  • Code of Conduct: CODE_OF_CONDUCT.md
  • Security policy: SECURITY.md
  • Support guide: SUPPORT.md
  • Changelog: CHANGELOG.md

Contributing

Contributions are welcome. Please read CONTRIBUTING.md before opening a pull request.

Security

If you discover a security issue, please follow the process in SECURITY.md.

License

MIT © 2026 voyvodka

About

Mirror your screen to WS2812B LED strips and Philips Hue entertainment areas in real time. Local-only, brand-agnostic, MIT-licensed.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors