InkyStream
Photography and hardware tinkering is where this one started. E-ink displays are beautiful but brutally limited, they can only render six or seven colours, so you can't just throw a photograph at them and hope for the best. InkyStream solves that by automatically converting photos into dithered images, using algorithms like Floyd-Steinberg to simulate tones and gradients the hardware simply can't show natively.
The server runs on a Raspberry Pi in my home lab, fully Dockerised and self-managed. Photos are uploaded via a web UI, dithered and resized per device profile automatically, then served via a REST API to the frames themselves. Frames wake on a schedule, pull their next image, burn it to the screen, and go back to sleep, running on batteries for months thanks to the persistence of e-ink.
Built with Next.js and TypeScript, using GitHub Actions and GitHub Container Registry for CI/CD, InkyStream is open sourced under the MIT licence and designed to be self-hosted on a trusted local network.


