Riddle turns a reMarkable Paper Pro into an AI diary that writes back in ink

Maxime Rivest's open-source Riddle app sends handwritten pages to a vision LLM and animates replies on e-ink. No chat box. Just pen, pause, and flowing script.

SaifullahSaifullah
4 min read
Riddle turns a reMarkable Paper Pro into an AI diary that writes back in ink

No keyboard. No chat bubble. You write on e-ink, wait a beat, and an answer appears in cursive that fades like ink on paper.

Riddle is an MIT-licensed Rust app by Maxime Rivest that turns the reMarkable Paper Pro into Tom Riddle's diary from Harry Potter. The novelty hook got the likes. The pipeline is what I keep thinking about: handwriting capture, vision LLM, latency hiding on a slow display.

What using it feels like

You write with the pen. After roughly 2.8 seconds of idle time, your strokes fade. The page commits as a PNG and ships to a vision model. The reply streams sentence by sentence, rendered as animated handwriting (Dancing Script paths, not a font blit), then fades away.

First ink can appear in about 0.9 to 1.1 seconds on the API path in on-device measurements from coverage and the repo README.

No screen glow. No modal. The metaphor is paper, which forces design choices chat UIs skip.

Under the hood

Riddle is not a thin wrapper around a chat API. The repo splits concerns:

ComponentRole
Ink surface + pen inputRaw evdev, 4096 pressure levels
Oracle managerKeeps LLM process warm, streams tokens
Handwriting synthesisRasterize, Zhang-Suen thinning, stroke tracing, animated replay
Display backendsWindowed (qtfb) or takeover (quill)

Oracle options:

  • Any OpenAI-compatible vision API (RIDDLE_OPENAI_KEY): OpenAI, OpenRouter, Groq, local vLLM
  • Resident pi --mode rpc fallback when no cloud key is set

Configuration lives in oracle.env on the device.

Diagram of Riddle pipeline from pen strokes on e-ink to PNG vision LLM request and animated handwriting reply

Two display modes, two risk levels

Windowed (qtfb via AppLoad): runs inside the stock xochitl UI. Safer. Vendor shell stays intact.

Takeover (quill): stops xochitl and drives the e-ink engine directly through a shim on libqsgepaper.so. Lower latency. Higher brick risk if something wedges.

The README is blunt: tested on Paper Pro only, OS 3.26 to 3.27. Other models and versions may break. You run as root. Read that twice before you install on your daily driver tablet.

remagic is the onboarding path: one command for developer mode, xovi, and AppLoad. Prebuilt bundles ship on GitHub releases if you do not want to compile Rust on device.

Install sketch (developer mode required)

# On your machine: copy prebuilt bundle to the tablet scp riddle-bundle.zip root@10.11.99.1:/tmp/ # SSH in, unpack to AppLoad path, set oracle.env API key, launch from AppLoad

Exact paths and manifests are in the repo; they change between releases. Treat this as "read the README at install time," not copy-paste ops.

Why this matters beyond Harry Potter cosplay

Chat UIs trained us to think AI equals text boxes. Riddle asks: what if the model meets you on the input surface you already use?

The pattern generalizes:

  1. Capture native input (pen, camera, sensor) as an image or signal
  2. Reason with a vision or multimodal model
  3. Render output in the medium's native feedback loop (ink, audio, haptics)

Latency hiding matters more on e-ink than on OLED. Streaming sentence by sentence and animating strokes makes a 2-second model wait feel intentional, not broken.

I have shipped voice agents with the same philosophy: never expose the "waiting for LLM" state raw. Always stage the response in the channel the user chose.

Tradeoffs I would not gloss over

  • Device modification: developer mode, SSH, root-level installs
  • API cost per page: every diary turn is a vision call
  • Privacy: handwriting leaves the tablet unless you run a local oracle
  • Reliability: 1.6k stars and active issues; early software on niche hardware

For a portfolio demo or a writer who lives on reMarkable, those tradeoffs can be worth it. For enterprise rollout, probably not yet.

Connection to broader tooling news

Riddle showed up in the same news cycle as pxpipe (imaging text for cheaper context) and vision-first coding models. Different problems, same thread: multimodal channels are production paths, not demos.

If you are building a vertical device experience (clinical forms, warehouse checklists, field inspections) and want help designing capture-to-model-to-render loops, book a free discovery call.

Share this post

Related posts