Mirror: An E-Ink Screen That Shows One Thought an Hour
This is not the usual agent post I write here. There is an agent in it, but it spends most of its time off screen — which, I eventually figured out, is the whole point.
A screen that doesn't want your attention
It started when I dug up a Raspberry Pi and an e-ink panel I bought over a year ago and never opened. I have a soft spot for e-ink. It doesn't glow, it doesn't blink, it sips power, and unlike every other screen in my home, it isn't campaigning for my attention. The bus stops here in Seattle use e-ink for arrival times, and one day, staring at one, a thought lodged itself in my head: I want this at home. Not the next-bus part, only the quietness. A screen that surfaces things I would otherwise miss, patterns across what I read and what I build, and does it the way a bus stop does: there when you look, silent when you don't.

v1: a Hacker News ticker
The first version, built with Claude Code and Codex, was deliberately simple: today's top 3 Hacker News stories, one sentence each. The Pi drives an 800x480, 7.5-inch Waveshare display (not affiliated) and runs a Python script that scrapes HN and summarizes by GPT through my Codex subscription, so inference basically doesn't have additional cost to me (thanks OpenAI :).
v2: if you know me, tell me something I should know
Then it occurred to me that OpenClaw had quietly become my personal assistant. It books things, tracks things, remembers things. So it already knows me. And if you know me, "here's what's on HN" is a waste of a screen. What I actually wanted was: connect what you read for me to what you know about me, and tell me something I don't know, or something I should.
I widened the reading pool from HN to the blogs and sites I actually follow, hooked the script into an OpenClaw cron job with access to its memory, and added a second cron job as the data pipeline: a cheap model that summarizes my local Claude Code and Codex session files, so the system always knows what I've been building lately.
The results genuinely surprised me more than once. It pointed out that an agent-eval problem I was grinding on had already been solved by a project someone posted to HN. It noticed that my questions about Seattle traffic patterns and a completely unrelated question about what makes games like Flappy Bird so addictive could combine into a game. (I actually built it, will share that in the future.)
The 425-degree problem
But it had one flaw I couldn't unsee: it got obsessive. Ask it one small thing, and that thing would haunt the screen for days. The canonical example: I once asked for a shawarma chicken recipe because I forgot the oven temperature for chicken thighs. For most of the following week, everything on the display found a way to end with "just like how you bake chicken thighs in a 425-degree oven." which is hilarious.
Was it the model? Partly, maybe. But I think the real problem was structural: I built a system where every scrap of personal context is a candidate signal, and rewarded it for finding connections. In that design, a chicken thigh weighs exactly as much as a month-long project, and the system has no way to know it shouldn't.
Where it is now
I recently rebuilt it around that lesson. The short version: the default card no longer mines my life at all. It starts from an idea, a question, or a poem, and personal material only appears when it clears a real evidence bar, rarely, with the connection left for me to make. If it keeps earning its place on the wall, I'll share an update in this post.
The code is here if you want to poke at it: github.com/hyspacex/mirror.