Open source · Tauri 2 · MIT

Your screen, your lights. Locally.

LumaSync mirrors your screen to WS2812B / SK6812 RGBW LED strips over USB, WLED boards over Wi-Fi, and Philips Hue Entertainment areas — all from one source. Local-only, brand-agnostic, MIT-licensed.

macOS · Windows · Linux

LumaSync's full-mode Lights section showing Ambilight active, scene presets, the live edge-signal preview, and the Δ/Σ telemetry pill.

All at once

One pipeline. Three sinks.

WLED over Wi-Fi

Drive ESP32 / ESP8266 boards running WLED firmware via the DDP protocol — auto-discovered on the LAN over mDNS or paired by static IP. Loopback, multicast, and broadcast addresses are rejected up-front.

WLED setup →

Philips Hue Entertainment

DTLS 1.2 PSK streaming to any Entertainment Area at up to 20 Hz, withHue Zones, AR-locked sizing, and per-bulb gamut clipping for accurate colour.

How Hue streaming works →

All three, synchronized

Same screen source drives every sink. Pick per mode — USB, WLED, Hue, or any combination — switched from the tray.

  • Live Δ/Σ telemetry
  • EN · TR i18n
  • Compact 320×480 / Full 900×620
  • OS keychain credentials
First-setup walkthrough →

Ambient mode

Real-time screen capture. 20 Hz update.

Tuned for latency, not flash. The telemetry pill shows live capture and send rates so you can see when the pipeline is healthy and when it isn't — no mystery numbers.

Read about performance →
LumaSync ambient mode with the edge-signal preview and live telemetry overlay.
LumaSync's room map editor canvas with a TV anchor, furniture objects, a USB strip, and Hue channel overlays.

Room map editor

A canvas, not a config file.

Drag your TV, furniture, and USB strips onto a grid. Hue channels project onto normalized coordinates. Undo / redo, snap guides, keyboard shortcuts.

Calibration docs →

Lives in the menu bar

Out of your way until you need it.

Single window hides to tray on close. Compact 320×480 mode for quick toggles, full 900×620 mode when you want to configure. Auto-starts on login, if you want it to.

First-setup walkthrough →
LumaSync compact mode — narrow window with mode tiles and scene picker.LumaSync full mode — main window with sidebar and Lights section open.

Platform support

Installs anywhere you already work.

macOSFull support

Primary development target. Universal DMG (Apple Silicon + Intel). v1.5.3 fixes a 1.5.2 launch crash on Macs without Xcode.

WindowsFull support

Signed MSI installer, winget in progress. All three sinks fully functional.

LinuxSupported

Native X11 screen capture (xcap). AppImage / deb / rpm ship every release; Flathub submission underway. Tray behaviour still varies by desktop environment.

Open · signed · auditable

No accounts. No telemetry. No cloud.

MIT licensed

Source at voyvodka/LumaSync. Fork it, ship it, read it.

Updates signed with minisign

Every binary is signature-verified before replacing the on-disk version. How updates work.

Credentials stay local

Hue bridge pairing and everything else lives in~/.config/lumasync/app.json on your machine.

Picking an ambilight tool

See how LumaSync compares.

LumaSync is the open-source desktop ambient-lighting app for Philips Hue and WS2812B LED strips. It sits in a different category from each of the alternatives below — pick the comparison that matches what you already own. Not to be confused with theSync-on-Luma RGB SCART signal used in retro consoles or the lumalabs.ai video tools.

All four comparisons in one place →

Transparent about scope

Roadmap honesty.

No vaporware, no silently-aging footnotes. What shipped, what's queued, and what we've explicitly rejected — read end-to-end.

Shipped

v1.5.4 — 2026-08-10

  • Hue Bridge Pro pairs — the Bridge Pro serves its local API over HTTPS only, so pairing, IP verification, and credential validation — still on plain HTTP — never reached it; those calls now try HTTPS first and fall back to HTTP for older bridges, which are unaffected
  • No more phantom "credentials expired" — a rejected link button reported an auth failure that did not exist; it now lands on the awaiting-link-button state it always should have
  • SSRF in the Hue readiness check closed — the stream-readiness probe now runs the same IPv4 validation as the rest of the onboarding endpoints, so loopback, multicast, and broadcast addresses are rejected before a connection is attempted
  • Screen-reader gaps closed — room-map context-menu entries carry accessible names and the calibration save button reports its busy state
  • Security advisory resolved — RUSTSEC-2026-0235 (rkyvout-of-bounds read) reached LumaSync through an unused optional dependency of tauri-plugin-log, whose 2.9 release drops that chain entirely; the cargo audit gate is green
Full changelog →
Next

v1.6 — queued

  • Flathub submission for Linux — discoverable in GNOME Software / KDE Discover with verified runtime sandboxing
  • glib 0.18 → 0.19 migration to clear the remainingRUSTSEC-2024-0429 Linux-runtime warning (gated on Tauri / gtk-rs upstream)
  • Companion firmware repo — reference sketch with the v1.5 PING/PONG handshake for LumaSync v1 controllers
  • OpenRGB sink (v2.0 track) — peripherals, motherboards, fans on the same pipeline

No dates promised. The LedSink abstraction (v1.4) and the WLED bridge (v1.5) make the OpenRGB track tractable.

Never

DNA-conflicts

  • Daemon / headless mode — answered via a local HTTP API + Home Assistant
  • Cloud telemetry or Sentry-class reporting — privacy posture is load-bearing
  • Cloud scene gallery — local files and JSON export only
  • AI-prompt scene inference — cloud inference breaks the zero-network promise
  • Docker / headless Linux server distribution — tray-first DNA

These are rejections, not "not yet" items.

Honest filter

Not for you if…

Type to search.Up and down arrowsto navigate,Enterto open.