Light is provided by two rows of 3 LEDs. One row is warm white, the other is cool white. An encoder allows the brightness of the two rows to be changed equally or (after flipping a switch) in opposite directions to vary the color temperature of the light. Another switch allows a light to become part of the network. When "linked," a change made to one node propagates to the other linked nodes. When unlinked, a node can operate independently.
The boards are custom from OSH Park, but they act as Arduinos due to the firmware flashed onto the ATmega328p via ICSP. A UART chip allows programming via a USB port, and charging of the battery happens via the same USB. A hardware comparator indicates a low battery. Communication happens via a 900MHz radio that sends a 3-byte packet of information. Everything fit nicely on a 2"x2" 2-layer PCB, and the code running the system is the best I've ever written thanks to some advice from the Clean Code web series. The hardware and software on each node is identical except for a 2-bit "Node ID" set with jumpers on the underside of each board.