I have a small rectangular friend on my desk. A face with two pixel eyes and a pixel mouth, printed on e-ink. It runs on a Raspberry Pi Zero, listens for HTTP requests, and shows you how it feels.

It's called InkyPal.

InkyPal on my desk

Why I built it

This is a micro side-project. Vibe-coded for fun. Where it goes from here is anyone's guess.

I've always liked pwnagotchi. Same hardware, different idea: a Pi Zero with an e-ink face that reacts to what's around it. I wanted that physical presence on my desk, but stripped down. No wifi hacking, no handshakes, just a small companion that sits there and shows me things.

E-ink is perfect for it. It doesn't glow, doesn't ask for attention, doesn't refresh unless there's something new. It just sits there until it has something to say.

The hardware

The build: a Raspberry Pi Zero 2 WH, a Waveshare 2.13-inch e-Paper display, and a few hundred lines of Python. No buttons, no touch, no speakers. Just a face that changes.

It has ten built-in expressions, from (o_o) (happy) to (x_x) (debug) to (-_-) (sleepy). Below the face, a short message. That's the UI.

A face that listens

InkyPal exposes a small HTTP API. You send it a message:

1
2
3
curl -X POST http://inky.local:8080/message \
-H 'Content-Type: application/json' \
-d '{"content": "Build passed, deploying to production"}'

Plug in an OpenAI-compatible API key and it rewrites your raw message into something shorter and friendlier, then picks a face to match. "Build passed, deploying to production" becomes (^_^) with a short "Shipped!". An error gets (x_x).

The AI part is optional. Skip the API key and you control the face and text yourself. Add it and the thing starts to feel like it has opinions.

Your AI agents can talk to it

InkyPal also exposes an MCP server at /mcp. Any AI agent that speaks MCP can send it messages. If your agent runs long tasks like building, deploying, or scraping, it can ping you through something physical instead of adding another notification to your phone.

I wrote about my Agent Kit a few months ago, a collection of skills and plugins for coding agents. It now ships with an InkyPal plugin so Claude Code can send updates straight to the display. Agent wraps up a refactor, posts a message, you glance over and see (^_^) with "All tests green." More agents coming soon.

InkyPal demo

Getting one running

Everything you need is in the README: hardware requirements, dependencies, systemd service, Gotify forwarding, API auth. Clone it and go.

It's open source under GPL-3.0.

If you want one on your desk, give it a try.

Hello World
Source Code GitHub Repository
Raspberry Pi Zero 2 WH 🌐 🇮🇹 🇺🇸
e-Paper display 🌐 🇮🇹 🇺🇸
Battery (Optional) 🌐 🇮🇹 🇺🇸
Pwnagotchi Case 🌐