Ember Buy the pair $189
$189 the pair · two lamps
Buy the pair

Ember · a light two people share

Touch it here.
They feel it there.

One glass block for you, one for someone far away — a partner in another city, a parent back home, a friend who moved. Touch yours and theirs quietly changes with it, wherever they are. Nothing to open, nothing to send. Just glass, and the fact that you were thinking of them.

Buy the pair
$189 for the set of two
Open source, hardware included Single, Pair or Kit — from $89 →
Tap the block
Three colour groups · drag to set a hue 0.00 · 0.00 · 0.00
1
2
3
A live simulation — same palette and fades as the real lamp.

Touch one. Both change.

Not a notification. Not a message you have to write. Just a colour, arriving.

Touch the base of your lamp and it settles on a new colour. The other lamp — wherever it is, whoever has it — catches up in a slow crossfade. It's the kid who moved out for university, letting a parent back home know they're up and thinking of them at midnight. It's two best friends who used to see each other every day and now live cities apart. No app to open, no message to write — just glass, changing, because someone touched theirs.

Lamp Aboss
…/events
Lamp Bfollower

Simulated here, with a realistic delay built in. On the real lamps it's one message over your own WiFi, documented in full in the repository for anyone who wants to build on it.

Or set them apart

Send a colour to just one lamp and the pair uncouples for half an hour, so it isn't quietly undone by the next sync. Send to both and they relink straight away.

They stay in step

Once a minute the lamps quietly check in with each other, so the two never have the chance to drift apart.

Distance doesn't slow it down

Next room or another timezone, the crossfade takes the same few seconds either way. The relay in between doesn't care how far apart the two of you are.


Choose how you start

However you begin, the sync is included — always.

Two lamps are the actual idea — that's the Pair. Or start with a Single, or build one yourself with the Kit.

One lamp

Single

$109

Start with one, or extend a connection you already have — buy a Single and give it to someone new. It syncs with the lamp you kept, no different from the pair.

Buy Single
Best value · saves $29

Two lamps, synced

Pair

$189 vs. $218 for two Singles

Two lamps that already know each other, out of the box. This is what Ember is for: touch yours, theirs changes.

Buy the Pair

Self-assembly · one lamp

Kit

$89

The board arrives already built and tested — the ESP32 and fifteen LEDs are reflow-soldered at the factory, not by you. You do the rest: board into the base, base under the glass, plug in the USB‑C cable. No soldering, no electronics kit.

Buy the Kit

Every tier: full colour across three zones, touch control, sunrise and bedtime alarms, over-the-air updates, and the complete open-source design files. Sync works between any two Ember lamps, whichever tiers they came from.


The object

Off, it is a block of glass someone left on a shelf.

A solid glass block, 190 mm square, on a low dark base. The light lives underneath, out of sight — no lens, no screen, nothing to look at until you switch it on. Then the glass itself seems to hold the colour — and its other half, wherever that is, is holding the same one.

OffA plain block of glass on a shelf.
Warm whiteThe lamp's resting state.
Full colourThree zones, any hue, independently.

A dawn, run by the lamp itself

Set it once. It runs with your phone off and the app closed.

Colour deepens from ember red to warm white over half an hour, brightening as it goes — a real sunrise, not a light switching on. Bedtime runs the same fade in reverse, and settles quietly to off. It runs on the lamp's own clock, so it still arrives on schedule even if the person it's timed for is asleep in a different timezone.

Tap to run the dawn
A thirty-minute ramp, compressed here to about fourteen seconds.

Open, start to finish

Firmware, app, schematic, board files, bill of materials — all public.

If this page disappears, or I do, the lamps on your shelf keep working, and every file needed to keep them running — or build more — is already yours.

View the repository Open the control app

Questions a sceptic asks

Answered properly, including the awkward ones.

What's actually different between Single, Pair, and Kit?

The lamp itself is identical — same board, same fifteen LEDs, same firmware, same sync. Single and Pair ship fully assembled, ready to plug in; the difference between them is just how many lamps arrive, and Pair is priced below two Singles because sync is what the product is for. Kit is one lamp for less, with the glass block and base shipped loose — you snap it together yourself, no soldering involved.

Does the Kit involve any soldering?

No. The EM-15 board — the ESP32-C3 module, all fifteen LEDs, every fine-pitch part — is reflow-soldered and tested at the factory before it ships. What arrives loose is the glass block and the printed base; what you do is entirely mechanical: board into the base, base under the block, plug in the USB‑C cable. No iron, no flux, nothing electronic to assemble.

Can I use just one?

Yes — touch, colour groups, alarms, the web app, all of it works on a single lamp. But sync is why the Pair exists: one lamp is a nice light, two are a lamp that answers when someone touches theirs. Buying a Single later is also how you add a lamp for someone new, synced to one you already own.

What is in the box?

Single and Pair: one or two complete lamps, each a 190 × 190 × 80 mm glass block on a printed base, with an assembled and tested EM-15 rev I board fitted inside and firmware already on it. Kit: the same board, already assembled and tested, plus a glass block and a printed base as separate parts you assemble yourself. Every tier takes power over USB-C.

Setup is joining a lamp to your WiFi and giving synced lamps the same name. If you have a question about what ships in your country before you order, ask through the repository first.

What happens if the WiFi drops?

The lamp keeps doing what it was doing. It holds its colour and brightness, the touch sensor still works, and any sunrise or bedtime alarm still fires, because the schedule and the clock live on the board rather than on your phone.

What it cannot do while offline is sync with the other lamp. If it can't reach the server that keeps the pair in sync for ten minutes, it reboots to try again, and the two lamps re-agree automatically once both are back.

What happens if your server disappears? Or you do?

There is no server of mine in the path, so there's nothing of mine to disappear. The lamps talk to each other over a public relay you can swap out any time — even run your own. If this page and the repository both vanished tomorrow, the lamps on your shelf would carry on exactly as they are.

Who else can control my lamps?

Only someone who knows your lamps' private address, which is generated at random and never shown anywhere public. If that isn't reassuring enough, you can point both lamps at a sync server of your own, with a password — one setting, changeable any time. Either way, the only thing that ever travels is a colour. No cameras, no microphones, no telemetry.

How is it powered?

USB-C, 5 V, into the base. No barrel jack, no proprietary connector, no batteries. Worst case the electronics draw about 1.69 A, which sits inside the board's 2 A resettable fuse and inside a 2.4 A supply budget, so it runs cool and well within its protection rather than on the edge of it.

Can I change the firmware, or connect it to Home Assistant?

Yes to both. The firmware is fully published and meant to be changed — updates go out over the air, and a failed update rolls itself back automatically, so it's quite hard to brick. Separately, the lamp speaks a simple, fully documented message format, so anything that can publish a message — Home Assistant, your own script — can drive it. The protocol is in the repository.

Does it flicker, buzz, or read as a row of dots?

No. There's about 80 mm of glass between the LEDs and the surface you see — roughly seven times more than the fifteen sources need to disappear into one even glow. The optics-nerd version, with the actual diffusion maths, is in the technical details below.

Colour changes fade smoothly rather than snapping, so a change set to take one second really does take one second.

Is there an app, an account, or a subscription?

No to all three. Control is a free web page — no sign-up, no login, no recurring fee, ever. You can also just touch the lamp, which needs no device at all.

For the curious — how it actually works

Optics, reliability, specs

Why it glows as a whole, not as fifteen dots

Fifteen LEDs sit behind the glass at an 11.13 mm pitch. Left bare, an eye resolves them as individual points. The board's own hardware notes call for a diffuser standing off by 0.7–1.0× that pitch, or about 7.8–11.1 mm, before the eye stops seeing dots. The glass block gives roughly 80 mm of scattering path — about seven times more than the rule asks for. Drag the slider to see where the dot-to-glow transition actually happens, and how far past it 80 mm sits.

Standoff 2.0 mm 0.18 × pitch reads as dots

Rule from the repo's hardware notes, §7.3: 0.7–1.0 × pitch. At 11.13333 mm pitch that's 7.8–11.1 mm. Ember: ~80 mm.

Real white, not mixed white

The fourth LED channel is a dedicated warm-white die, not red, green and blue mixed together — in code, BASE_WARM_WHITE = (0, 0, 0, 200). The exact part fitted, SKC6812RGBW-WS (LCSC C5378724), was chosen specifically to match that base colour, so every tint on the palette blends outward from a true warm white rather than an approximation of one.

It doesn't need you, or me, to keep working

Every item below is live in the firmware today, and the tests that exercise it are in the repository.

Watchdog

A hung board resets itself and comes back within seconds.

Crash-loop rollback

Three bad boots and it restores the last version that worked.

All-or-nothing updates

A dropped connection mid-update can't leave it half-installed.

Atomic writes

A power cut can't corrupt the firmware or the saved state.

Validated input

Every incoming message is checked and clamped before it's used.

Self-healing connection

Ten minutes offline and it reboots to reconnect on its own.

State survives anything

Colour and brightness are restored exactly after any power cut.

Clock that retries

A failed clock sync retries hourly, so alarms don't quietly die.

Open, in full

The MicroPython firmware, the control app, the KiCad project, the fabrication files and the costed bill of materials are all published, including the full manufacturing cost breakdown. The protocol the two lamps use to talk to each other — every topic, every field, every accepted range — is documented in the repository README, so anything that can publish a message can drive them: another web page, a script, Home Assistant. Firmware updates pull from a GitHub branch, so forking the repository and pointing a board at your fork is all it takes to run your own code, with the same rollback protecting you from mistakes.

Specifications

BlockStandard glass block, 190 × 190 × 80 mm, one per lamp
Light source15 × SK6812 RGBW in one unbroken row, in the base beneath the glass
LED partSKC6812RGBW-WS — the warm-white variant (LCSC C5378724), chosen to match the firmware's warm-white base
GeometryPitch 11.13333 mm; lit zone exactly 167.00 mm; 11.5 mm of glass beyond it at each side
BoardEM-15 rev I, integrated lamp board
RadioESP32-C3-MINI-1, a pre-certified radio module. 2.4 GHz WiFi
TouchTTP223 capacitive sensor in the base — touch the lamp to change it
PowerUSB-C, 5 V. Worst-case draw ~1.69 A — inside the board's 2 A resettable protection and inside the 2.4 A supply budget
Colour groups3 per lamp, 1–8 LEDs each, independently addressable and independently faded
Palette30 hue stops blended out of warm white; per-group warm-white level; smoothstep crossfades; a ±4% breathing oscillation with staggered phase per group
AlarmsSunrise and bedtime, held on the board's own flash and run against its own NTP-synced clock
FirmwareMicroPython, updated over the air from GitHub
ControlWeb app in any browser, installable to a phone home screen. No account. MQTT over WiFi, with a topic prefix you choose
SourceFirmware, web app, KiCad project, Gerbers, BOM and cost breakdown — all public