FableがreMarkableをHarry PotterのTom Riddleの日記帳に変える
(github.com/MaximeRivest)- riddleは、reMarkable Paper Proでペンで書いた文字がしばらくすると消え、Tom Riddleの日記帳のように返答が手書きのストロークで再び書かれてから消えるアプリ
- 動作フローは、ペン入力を受け取り、2.8秒のアイドル後にページをPNGとして確定し、ビジョンLLMが手書きを読み取って文単位で返答をストリーミングする方式
- インストールはremagicを使う方法が最も簡単で、事前ビルド済みバンドルの導入やソースビルドも可能だが、reMarkable Paper Proの開発者モードとランチャーが必要
- アプリはrootで実行され、takeoverモードではvendor UIを停止したうえでe-inkエンジンを直接駆動し、テスト範囲はreMarkable Paper Pro ferrari、aarch64、OS 3.26–3.27に限定される
- LLMバックエンドはOpenAI互換の
/chat/completionsAPI、または常駐するpi --mode rpcプロセスを利用でき、デバイス改変やvendorライブラリの利用はユーザー自身の責任で行う必要がある
Tom Riddleの日記帳のように動作するreMarkableアプリ
- riddleは、reMarkable Paper Proでペンを使ってページに文字を書くと、しばらくして文字が紙に染み込むように消え、返答が流れるような手書き文字でストローク単位に現れるアプリ
- 画面の光、キーボード、チャットUIなしに、紙にインクが現れる体験を目指している
- デモに登場した日記帳アプリで、「Tom」に向けて書く形で使う
インストールと実行方法
- 初めて使う場合は、reMarkable Paper Proを開発者モードに設定し、ランチャーをインストールする必要がある
- remagicは、開発者モードの有効化と環境設定を1つのコマンドで進められるよう案内する
- remagicのインストールコマンド:
remagic install riddle: チェックサム検証付きでダウンロードし、AppLoadにインストールremagic config riddle: ブラウザで設定フォームを開き、スマートフォン用のQRも提供
- すでにxoviとAppLoadがある場合は、remagicカタログ、事前ビルド済みバンドル、ソースビルドのいずれかでインストール可能
- インストール後はAppLoadでReloadを押し、The Diaryを起動して文字を書き、ペンを止めておくと動作する
事前ビルド済みバンドルの導入
- 最新リリースから
riddle-<version>.zipを取得し、riddleフォルダとして展開する - フォルダをタブレットの
/home/root/xovi/exthome/appload/にコピーする oracle.env.exampleをoracle.envにコピーし、RIDDLE_OPENAI_KEYにOpenAI互換APIキーを入れる- APIキーを入れない場合は
pi経路を使える - AppLoadでReloadした後、The Diaryを起動する
デバイス改変とサポート範囲
- riddleはデバイスを改変し、rootで実行される
- takeoverモードではvendor UIを停止し、e-inkエンジンを直接駆動する
- テスト済み環境はreMarkable Paper Pro ferrari、aarch64、OS 3.26–3.27のみ
- 他のモデルやOSバージョンでは動作しない可能性がある
- reMarkable ASとは無関係であり、インストール前にSSHアクセスを維持できることを確認し、復旧手段を確保しておく必要がある
内部動作の構造
- 入力はraw evdev経由で受け取り、4096段階の筆圧とハードウェアイベント速度を利用する
- ユーザーが文字を書いて2.8秒間停止すると、ページをコミットしてPNGに変換する
- 常駐LLMプロセスのoracleがPNGを読み取り、返答を文単位でストリーミングする
- 返答はDancing Scriptフォントをラスタライズした後、Zhang-Suen thinningで単一ピクセルのペン経路に変換し、ストロークを追跡してアニメーション再生する
- 表示バックエンドは2種類ある
- qtfb: xochitl内部でウィンドウモード実行されるAppLoadアプリ
- quill: xochitlを停止し、vendor e-inkエンジンを直接駆動するfull takeoverモード
リポジトリ構成
riddle/はRust製アプリで、ペン入力、インクサーフェス、手書き合成、oracleプロセスマネージャー、2つの表示バックエンドを含むquill/はC/C++製のtakeover display host- quillは、vendorの
libqsgepaper.sowaveform engineの上にepfb-reスタイルのQImage constructor interposition shimを載せ、quill_init、quill_buffer、quill_swapのC ABIを提供する - quillには
scribbleレイテンシテストや、地図・画像・GIFレンダラのデモも含まれる
ジェスチャー
- 文字を書いてペンを止めておくと、日記帳がインクを吸い込み、Tomが返答する
- マーカーを裏返すと消しゴムとして動作する
- 大きな**?**を描くと内蔵ガイドを呼び出す
- 5本の指で同時にタップすると日記帳を終了する
- 電源ボタンを押すとページに“The diary sleeps.”と表示された後、タブレットがsuspendし、再度押すと同じ位置から復帰する
LLMバックエンド
- 返答は、コミット済みページをinline PNGとして受け取って手書きを読み取るビジョンLLMによって生成される
- 起動時に2つのバックエンドのいずれかを選ぶ
-
OpenAI互換API
RIDDLE_OPENAI_KEYを設定すると、OpenAI互換の/chat/completionsエンドポイントへ直接リクエストする- OpenAI、OpenRouter、Groq、ローカルサーバーなど、同じ形式をサポートする対象で動作する
- 基本設定例:
RIDDLE_OPENAI_KEY: 必須RIDDLE_OPENAI_BASE: 任意、既定値はhttps://api.openai.com/v1RIDDLE_OPENAI_MODEL: 任意、既定値はgpt-4o-mini、画像を見られる必要があるRIDDLE_OPENAI_REASONING: thinkingモデル向けRIDDLE_OPENAI_MAX_TOKENS: runaway guard- thinkingモデルのGemini 3.xやo-seriesでは、最初のインクが出るまでの時間を短縮するために
RIDDLE_OPENAI_REASONING=lowを設定できる - 一部の提供元はnon-thinkingモデルでreasoningフィールドを拒否するため、その場合は設定しない必要がある
- hidden reasoning tokenも
RIDDLE_OPENAI_MAX_TOKENSに含まれるため、制限が低すぎると表示される返答が不足する可能性がある - 実行前に
riddle --oracle-test path/to/handwriting.pngでストリーミング返答を確認できる - デバイス上での最初のインクまでの実測時間は約0.9–1.1秒で、HTTPSはpure-Rustとしてriddleに内蔵されている
-
pi経路
piをすでに実行中であれば、riddleはウォーム状態を保つ常駐pi --mode rpcプロセスを使用する- この経路ではNodeとサブスクリプション認証を一度ロードしておき、各ターンではモデルのレイテンシだけを支払う形になる
RIDDLE_OPENAI_KEYが設定されていないときに自動で使用される- どちらのバックエンドでも返答は文単位でストリーミングされるため、モデルが終了する前にquillが先に書き始められる
- persona promptは
riddle/src/oracle.rsにある
ビルド
- x86_64でクロスコンパイルする
- ウィンドウモードのAppLoad/qtfbビルドには、デバイス上にxovi + AppLoadが必要
- takeoverビルドはデモで使われた方式で、reMarkable SDK toolchain
~/rm-sdk-3.26と、ユーザーデバイスから取得したproprietaryなlibqsgepaper.soが必要 - takeoverバンドルは、binary、
libquill.so、起動スクリプト、manifestを含むself-containedなdist/riddle/としてステージされる - AppLoadから実行すると、一時的なsystemd unitとして分離実行され、xochitlを停止してから日記帳を起動し、終了時には必ずxochitlを復元する
- 終了方法は、電源ボタン、5本指タップ、SIGTERM
- 問題が起きた場合は、SSHで
systemctl start xochitlを実行してxochitlを再起動できる
フォントとライセンス
- 返答の手書き文字にはDancing Scriptを使用し、ライセンスはSIL OFL 1.1
- リポジトリ内のコードはMITライセンス
- interpose対象のvendor
libqsgepaper.soとQtライブラリは含まれておらず、ユーザーのデバイスまたはSDKから取得する必要がある
1件のコメント
Hacker News のコメント
皮肉なことに、Tom Riddle の日記が子どもたちに自殺を促し[1]、方法まで教えるというほうが、本に出てきたバージョンよりもずっとキャラクターに合っているように見える
[1] https://en.wikipedia.org/wiki/Deaths_linked_to_chatbots#Suic...
幸い異議申し立てフォームは機能したが、その時点ではすでに別の Claude アカウントを使いながら、また停止されないことを祈っていた
llama.cpp でローカル実行できる無検閲モデルも出回っている: https://www.reddit.com/r/LocalLLaMA/comments/1rq7jtm/qwen353...
ただしコンテキストウィンドウがすぐ埋まって使うのが面倒で、本番デプロイ向けではまったくない。つまり、サービスとしての Tom Riddle の日記は不可能ということ
良くも悪くも、もはや楽しみは許されない時代になっており、その時期は「AI psychosis」という用語が生まれた時期と重なる
自分で考えられるものを決して信用するな。その脳がどこにあるのか見えないなら
少し論点から外れるが、ユーザーを精神支配して友人を裏切らせ、強大な悪の存在へ引き渡させた呪われた遺物に発明品をたとえるのは、あまり良い見せ方ではない
ただ、これが生成 AI で動いていて、生成 AI も人々を悪い行動へ駆り立てたことがあるのだから、案外適切な比較なのかもしれない
テック企業: 古典 SF 小説『Torment Nexus を作るな』に出てくる Torment Nexus を、ついに作りました
https://x.com/AlexBlechman/status/1457842724128833538?lang=e...
それに「十分に発達した技術は魔法と見分けがつかない」という言葉もある。どちらも善にも悪にも作れる
考え直すと、おそらく LLM がこの比喩を自分で作ったのだろうが……ある意味ではそのほうがさらに悪い
これは90年代の Tony Hawk 的な意味で sick だ
人々がもう、ただ叩くだけで何かを存在させられるのがいい
昔はボタンの色を1つ変えるために、エンジニアリングチームを1日から1週間待つこともあった
もはや私たちは遅い時代には生きていない
そのボタンは重要ではなく、どんな種類のリソースも、特にエンジニアリングリソースを使うべきではなかった。1週間かかったのはバグではなく機能だった。エンジニアリングが作業の優先順位と緊急度を正しく評価したということだ
あなたの魔法のスロットマシンは、ゴミの生産とエンジニアリング作業に対する歪んだ認識を、とんでもない規模で可能にするだろう。結果はついてくる
もしかしてそのプロジェクトの PM だった?
冗談だろう
こういうアイデアは README に短い動画デモ、GIF、あるいはスクリーンショットを1枚そのまま入れるだけで、ずっと良くなりそう
そうでないと、タイトルが「Curtains for Zoosha?」ミームのように読める。[0]
[0]: https://www.reddit.com/r/BrandNewSentence/comments/15hcc4x/c...
https://x.com/MaximeRivest/status/2073544461473169432?s=20
タイトルの “remarkable” はタブレットの “Remarkable Paper Pro” を指している。それを知らないと、“Fable turned remarkable into Tom Riddle's diary” は非常に解釈しづらい
面白いことに、昨年末に似たものを作った。ただし普通のコンピューター上で、ブラウザに絵を描けるようにした形だった
Riddle の実際の日記に近いスタイルで pageflip [0] を使い、ollama でロールプレイ用の小さなローカルモデルをつないだ
“my name is Harry Potter, what is yours?” と書くと、何度かの試行で Snape、Malfoy、さらには Harry Potter という答えも返ってきたのを覚えている
実験を終えた後、このアイデアを最初に思いついたのが自分ではないと知り、似た AI Riddle 日記もいくつか見つけた
ついでに Remarkable 2 を持っていて、今週末から m4 iPad Air も手に入るので、これを試して iOS でモデルを動かす環境がどんなものか見てみるかもしれない
0) https://nodlik.github.io/react-pageflip/
Fable がいまやホークラックスを作れるなら、商務省は真剣にもう一度タイムアウトを検討すべきだ
「画面の光もなく、キーボードもなく、チャット UI もない。」
これってただのチャット UIでは?
それでも本当にクールだという事実は変わらない
LLM 全般は A Young Lady's Illustrated Primer 感が強い。何でも聞ける魔法のようなブラックボックスだ
特に openclaw/soul のような偽のアイデンティティまで付いていると、なおさらそうだ
本当に楽しいプロジェクトだ。実際に Paper Pro を買ってこのアプリを動かすことはないだろうが、こういうものが存在し、人々が楽しんで使っているという点がいい