Turn a dusty Kindle into an always-on AI dashboard

Turn a dusty Kindle into an always-on AI dashboard

Five Kindles, four gathering dust. I turned one into a 24/7 e-ink dashboard for my AI usage stats: a static page + free GitHub Pages hosting + auto-refresh. Includes a copy-paste template and every trap I hit — grayed-out browser, CDN caching, ancient TLS, and the sleep timer I still haven't beaten.

I own five Kindles. A Scribe I actually read on — and four others gathering dust in a drawer.

Last week I pulled one out and gave it a new job: a 24/7 dashboard showing my AI usage. Days on streak, total tokens burned, whether my machine is busy right now. From idea to it glowing on my desk: about two hours, with an AI assistant doing most of the typing.

Here’s the whole recipe, including every trap.

The idea in one sentence

Kindle’s experimental browser can open web pages → you host a tiny static page on GitHub Pages for free → the page refreshes itself → your Kindle becomes an always-on status display. No jailbreak, no apps, no money.

E-ink is the perfect medium for this: it doesn’t glow, doesn’t grab your attention, sips power — and it’s already in your drawer.

Step 1 — A page that shows your numbers

The minimum viable version is one HTML file. Copy this (already tuned for e-ink: high contrast, big type, no animation):

<!doctype html>
<html><head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <!-- refresh every 30s; the changing ?t= timestamp defeats the CDN cache (see traps) -->
  <script>
    setTimeout(function () {
      location.href = location.pathname + "?t=" + Date.now();
    }, 30000);
  </script>
  <title>My Dashboard</title>
  <style>
    body { font-family: Georgia, serif; background: #fff; color: #111;
           text-align: center; padding: 24px; }
    h1 { font-size: 42px; letter-spacing: 6px; margin: 8px 0 24px; }
    .num { font-size: 34px; font-weight: bold; }
    .lbl { font-size: 12px; letter-spacing: 2px; color: #555;
           text-transform: uppercase; margin: 4px 0 20px; }
  </style>
</head><body>
  <h1>PULSE</h1>
  <div class="num">37 days</div><div class="lbl">current streak</div>
  <div class="num">12.2B</div><div class="lbl">total tokens</div>
  <div class="num">2026-07-18 06:30</div><div class="lbl">last updated</div>
</body></html>

Where do the numbers come from? Two tiers:

  • Manual: hard-code them, push to update. Fine for proving the loop works.
  • Automatic: have an AI assistant (Claude Code, Codex, whatever you use) write a small collector script that reads whatever you want to track — local logs of your AI tools, system stats, any API — and pushes fresh data to the repo via the GitHub Contents API on a schedule (launchd on macOS, Task Scheduler on Windows). Describe the requirement clearly and this is a fifteen-minute job for the assistant.

Step 2 — Free hosting on GitHub Pages

  1. New public repo, put the HTML in docs/ (add an empty .nojekyll beside it)
  2. Settings → Pages → serve main branch, /docs folder
  3. A minute later you’re live at https://you.github.io/repo/

One warning, from someone who learned it the careful way: this repo is public — publish only the display page and aggregate numbers. No keys, no raw logs, nothing you wouldn’t put on a billboard.

Step 3 — Open it on the Kindle

Settings → Experimental Browser → enter your URL.

Two traps here:

  • Browser menu grayed out? The device isn’t registered (guaranteed after a factory reset) or Parental Controls disabled the browser.
  • “Unable to establish a secure connection”? Kindles older than ~10 years speak TLS too ancient for modern hosting. My 2013 Kindle — a farewell gift from an internship — died on this hill and retired with honor. Anything Voyage-era or newer works in my testing.

Step 4 — The two traps I actually hit

The page updates, but the Kindle keeps showing stale data. GitHub Pages sits behind a CDN that happily serves you the cached copy forever. The fix is in the template: append an ever-changing timestamp (?t=1784355363) on every refresh, so the CDN treats each request as a new URL and fetches fresh.

The Kindle falls asleep, and I haven’t beaten it. E-ink sleeps, dashboard goes dark, even on AC power. There are hacky workarounds; I keep my devices clean, so for now I just tap it awake. If you know a clean solution, I genuinely want to hear it — about has my contact.

Why bother

What stays with me isn’t the money not spent on a smart display. It’s that those Kindles sat in a drawer for years because I’d filed them under “for reading.” They never lacked capability — they lacked someone asking: what else can you do?

Re-asking that question about things you already own might be the cheapest joy of the AI era.

(Companion piece from the same drawer: Turn a leftover Fire TV remote into a Mac controller.)