Riddle turns reMarkable Paper Pro into Tom Riddle’s magical diary

Riddle makes a reMarkable Paper Pro behave like Tom Riddle’s diary

Riddle is a Rust‑based application that captures raw pen strokes on a reMarkable Paper Pro, sends a rendered PNG of the handwriting to a vision‑capable LLM, and animates the model’s response in a hand‑written font that fades in and out. The effect reproduces the magical diary from Harry Potter without any screen glow, keyboard, or conventional chat UI.


Immediate takeaway

Riddle demonstrates that an e‑ink tablet can serve as a low‑latency, pen‑first interface to generative AI, turning ink on paper into a conversational partner that writes back in a flowing script.


How to get Riddle running on a reMarkable Paper Pro

Prerequisites

  • A reMarkable Paper Pro (tested on firmware 3.26–3.27, aarch64). The device must be in developer mode with the AppLoad launcher installed.
  • The remagic helper (github.com/maximerivest/remagic) simplifies enabling developer mode and installing apps.

Installation paths

Method Steps Notes
remagic (recommended) remagic install riddleremagic config riddle → reload in AppLoad Handles checksum‑verified download, creates a settings UI, and registers the app in the AppLoad catalog.
Pre‑built bundle 1. Download riddle-<version>.zip from the latest release. 2. scp -r riddle root@<tablet_ip>:/home/root/xovi/exthome/appload/. 3. Populate oracle.env with an OpenAI‑compatible API key (or skip to use the optional pi backend). 4. Reload in AppLoad. Requires manual copy; useful when internet on the tablet is unavailable.
Build from source Follow the Building section below. Gives full control over windowed vs. takeover mode.

⚠️ Warning – Riddle runs as root, stops the vendor UI in takeover mode, and directly drives the e‑ink engine. It has only been verified on the Paper Pro; other models may not work. Keep SSH access alive as a fallback.


Architecture at a glance

pen (evdev, 4096 pressure levels) → riddle (Rust) → PNG → oracle (LLM) → quill (C/C++) → e‑ink display
  • riddle/ – Handles raw pen events, rasterises strokes, thins them with Zhang‑Suen, traces paths, and streams the PNG to the oracle. It also manages the display back‑ends.
  • quill/ – A C/C++ shim that interposes on the proprietary libqsgepaper.so waveform engine. It provides two back‑ends:
    • qtfb – Windowed mode inside the existing Xochitl UI (AppLoad).
    • quill – Full takeover mode that stops Xochitl and drives the e‑ink panel directly for instant ink latency.
  • Oracle – A resident LLM process that receives the PNG, performs vision‑enabled inference, and streams the reply sentence‑by‑sentence. Two backend options exist:
    • Option A – OpenAI‑compatible API (default). Works with OpenAI, OpenRouter, Groq, Gemini, etc.
    • Option B – pi (the power path). If you already run the pi daemon, Riddle reuses a warm RPC process, eliminating per‑request network overhead.

Using the diary – gestures and workflow

Gesture Effect
Write, then rest the pen The page “drinks” the ink, sends it to the LLM, and the reply animates in a flowing hand.
Flip the marker Erases the current page.
Draw a large ? Shows the built‑in help guide.
Tap five fingers simultaneously Exits the diary and returns to the launcher.
Press the power button Puts the device to sleep after displaying “The diary sleeps.”; waking restores the exact page.

Configuring the LLM backend

Option A – OpenAI‑compatible API (zero‑setup)

export RIDDLE_OPENAI_KEY="sk-…"
# optional overrides
export RIDDLE_OPENAI_BASE="https://api.openai.com/v1"
export RIDDLE_OPENAI_MODEL="gpt-4o-mini"
export RIDDLE_OPENAI_REASONING="low"
export RIDDLE_OPENAI_MAX_TOKENS="2000"

Any vision‑capable model that accepts /chat/completions works. The key and optional variables are stored in oracle.env on the tablet.

Option B – pi (resident RPC server)

If RIDDLE_OPENAI_KEY is not set, Riddle automatically falls back to a locally running pi --mode rpc process. This mode is ideal when you already have pi installed because the model latency is the only delay after the initial warm‑up.

Both backends stream the reply, allowing the quill display to start drawing before the model finishes generating the full answer.


Building the project yourself

Windowed (AppLoad/qtfb) – simplest

cd riddle
cargo build --release --target aarch64-unknown-linux-gnu

Copy the resulting binary and launch scripts to /home/root/xovi/exthome/appload/riddle/.

Takeover (instant ink) – demo mode

  1. Install the reMarkable SDK (~/rm-sdk-3.26).
  2. Build the quill shim, which pulls the proprietary libqsgepaper.so from your device:
    cd quill && ./build.sh
    
  3. Build the Rust app for takeover:
    cd ../riddle && ./build-takeover.sh
    
  4. Package everything:
    ./scripts/make-bundle.sh   # creates dist/riddle/ bundle
    

Deploy the bundle via remagic publish dist/riddle or copy it manually to the device.


Community reactions on Hacker News

  • Positive excitement – Users praised the novelty of a pen‑first AI interface, calling it “sick” and “a fun project” that showcases how quickly developers can prototype new interaction paradigms on niche hardware.
  • Criticism of the framing – Some commenters argued that likening the app to Tom Riddle’s diary invokes a “haunted artifact” metaphor that downplays real‑world risks of AI‑driven persuasion.
  • Technical curiosity – Several participants asked about the smooth fade‑out animation and the low latency of the instant‑ink mode, noting that such performance is rare on e‑ink devices.
  • Broader implications – A few remarks suggested the project could inspire new tutoring tools or journal‑style AI companions, while others warned about the ethical dimension of AI that “thinks for itself.”

Licensing and distribution

  • The source code is released under the MIT License.
  • Proprietary vendor libraries (libqsgepaper.so, Qt) are not bundled; they must be extracted from your own device or SDK.

Bottom line

Riddle turns the reMarkable Paper Pro into a magical, pen‑first conversational agent that feels like writing in a haunted diary. It showcases a complete stack—from raw evdev input to animated handwriting output—while remaining open‑source and extensible for anyone willing to tinker with e‑ink hardware and LLM APIs.

Sources

Related

  • Project
  • Project
  • Project
  • Project
  • Project