Apps

One lamp, every screen.

Native clients for macOS, iOS, Android, Windows, and Linux. They all speak the same firmware and share the same features — pick the one already in your pocket.

Features

What the apps actually do.

Same feature set on every platform, with a couple of small gaps we're closing — see the footnotes.

Discover lampsLamps on the same WiFi auto-appear via mDNS. Tap to add — no IP-typing.
DashboardEvery lamp gets a tile with form-specific icon, status badge, and live state. Reorder, pin, group by room.
Lamp controlPower, brightness, color picker, switch between effects and tune their parameters — all from a single lamp tile.
BLE onboardingSend a lamp its WiFi credentials over Bluetooth — no need to hop onto the captive-portal AP and back.
AI ComposeDescribe a pattern; the AI writes the script and the app previews it before you ship it to the LEDs.
AI IntegrationBuilt-in provider config — Claude, GPT, or a local LLM endpoint. Your key lives on the app device only; never sent to the lamp, never stored there.
AI CLIGenerate, preview, and push effects from the terminal — same AI you use in the app, scriptable for power users.
Live preview *Scripts run in-app at the configured FPS so you see what the lamp will show — no round-trip to hardware.
GIF & image streamingDrag a GIF or PNG onto the Stream tab; per-frame mapping with serpentine rows and rotation.
Script libraryList, edit, save, play, delete on-device scripts. Pre-installed effects per form, your own scripts alongside.
Demo lampsAdd a synthetic Tower or Wall that runs entirely in the app — try the workflow with no hardware.
Sharing **Mint role-scoped share keys (user / creator / admin) and hand them out via QR or over Bluetooth client-to-client. Revoke any time.
SwarmBundle lamps into a swarm and control them as one — a change on any member propagates to the rest.
DrawPaint pixel art on the lamp grid — paint, brush, spray, fill, or import an image — with a live preview and one-tap push to the lamp’s frame mode. Save drawings on the lamp, browse them as thumbnails, and play them back with the carousel effect.
Direct OTAUpdate a lamp’s firmware straight from the app: it checks the release, verifies the download, and flashes over the air.

* Linux app currently shows a static preview placeholder while a JS engine is being integrated. Other platforms animate.
** Receive-via-QR uses the device camera — available on macOS, iOS, and Android. Windows and Linux receive via BLE instead.

Why a native app per platform

Because the lamp is part of the room.

Bluetooth, mDNS, local-network discovery, and per-OS sharing all want native APIs. So we wrote the app five times — once for each home — instead of one mediocre web wrapper.