Skip to content
@openlamp

OpenLamp

100% local stage-light control for musicians and makers — Tuya / WLED lamps from a Stream Deck or MIDI, zero cloud

OpenLamp — local stage-light control

Instant, 100% local stage-light control for musicians and makers — drive cheap consumer smart LED lamps — WLED (recommended) or Tuya / Smart Life — from a Stream Deck, a MIDI controller or the command line, with ~45 ms response on WLED and zero cloud at runtime.

Made by BenLab with the help of Claude.

The family — one repo per layer

Each layer lives in its own repo so no layer is impacted by the others. Two independent paths reach the lamps — the engine (direct, ~45 ms) and Home Assistant — and a shared, firmware-independent asset layer dresses the UIs on both.

 your lamps · WLED (recommended) / Tuya
▲ ▲
│ direct local API, ~45 ms │ via Home Assistant
┌──────┴─────────────┐ ┌───────┴────────────────┐
│ openlamp-engine │ │ HA "wled" integration │
│ OLS · API :8377 │ └───────┬────────────────┘
└──▲──────────▲──────┘ │ entities
in-proc│ /cmd│ ┌───────┴────────────┐
┌────┴───┐ ┌────┴───────┐ │ wled-assets-card │
│frontend│ │ openlamp- │ │ (Lovelace card) │
└───┬────┘ │ midi │ └───────┬────────────┘
│ └────────────┘ │
└─────────── consume ──────────────┘
│
┌─────────┴───────────┐
│ wled-assets │ localized names + illustrations (CC0)
└─────────────────────┘

Core engine

RepoLayerDepends onFor whom
openlamp-enginedrivers · OpenLamp State contract · local API · headless daemon · CLInothingevery control surface below
engine-jsNode.js port of the engine (same contract, interchangeable behind the API)JS-first stacks (npm / Stream Deck SDK)

Control surfaces

RepoLayerDepends onFor whom
openlamp-midiMIDI overlay (virtual port → engine /cmd API)enginemusicians with physical MIDI controllers (Ampero Control, FCB1010, Launchpad, nanoKONTROL2…)
wled-assets-cardHome Assistant Lovelace card — dresses HA's wled light with localized names + illustrations, one-tap applyHA wled integration · wled-assetsHome Assistant users

Shared content (firmware-independent — any WLED client can consume it)

RepoWhatConsumed by
wled-assetslocalized effect/palette names (8 languages) + palette illustrations + effect motion previews — CC0wled-assets-card · any WLED client
streamdeck-wled-icons216 animated effect GIFs + 111 palette/control icons as Stream Deck Marketplace packs (under @Beennnn)Stream Deck profile designers

The WLED-compat endpoint (/json/state) ships inside the engine's local API — it lets any WLED-aware tool drive OpenLamp lamps; no control surface depends on it. The Home Assistant card is fully independent of the engine: it rides HA's own WLED integration and only shares the wled-assets layer with the other frontends.

One host at a time

A Tuya lamp accepts a single local connection and every engine host binds port 8377. Run either the Stream Deck plugin or the headless daemon (openlamp-engine/daemon.py), never both:

  • deck sessions → the plugin (Stream Deck app running);
  • CLI / MIDI-only sessions → the daemon (run-headless.sh).

Design notes

  • OLS is WLED-compatible on purpose: 8-bit values (0–255), state-patch semantics (omitted fields unchanged). One contract, many lamp brands.
  • MIDI is 7-bit (0–127), scaled up ×2 by the bridge — plenty for stage cues.
  • Everything local, offline-friendly (built for stages with a travel router).

Popular repositories Loading

  1. midi midiPublic

    MIDI overlay for LumiDeck — drive smart lamps (and more) from Ableton, Bome or any cheap MIDI controller. Part of the LumiDeck stack.

    Python 1

  2. engine enginePublic

    OpenLamp core engine — WLED/Tuya drivers, OLS state contract, groups, snapshots, animations, local API, headless daemon + CLI

    Python 1

  3. openlamp openlampPublic

    OpenLamp — 100% local stage-light control for musicians and makers. Hub repo: architecture, the OLS contract, and the repo-family map

    1

  4. wled-assets wled-assetsPublic

    Shared client-side assets for WLED palettes & effects: localized names, palette illustrations, effect motion previews. Vendor-neutral, CC0. Any WLED client can consume it.

    HTML 1

  5. wled-assets-card wled-assets-cardPublic

    Home Assistant Lovelace card that decorates a WLED light with localized names + illustrations from wled-assets — tap a palette or effect to apply it. 100% client-side, HACS-ready.

    JavaScript 1

  6. wled-midi wled-midiPublic

    An open convention for controlling WLED lights over MIDI — notes->colours, CC->brightness/effects, PC->presets, MIDI clock/Ableton Link->on-the-beat. Spec only.

    Python 1

Repositories

Showing 10 of 16 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…