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 또는 residentpi --mode rpc프로세스를 사용할 수 있으며, 기기 수정과 vendor 라이브러리 사용은 사용자가 직접 감수해야 함
Tom Riddle 일기장처럼 동작하는 reMarkable 앱
- riddle은 reMarkable Paper Pro에서 펜으로 페이지에 글을 쓰면, 잠시 뒤 글씨가 종이에 스며들듯 사라지고 답변이 흐르는 손글씨로 획 단위로 나타나는 앱임
- 화면 빛, 키보드, 채팅 UI 없이 종이에 잉크가 나타나는 경험을 목표로 함
- 데모에 나온 일기장 앱이며, “Tom”에게 글을 쓰는 형태로 사용함
설치와 실행 방식
- 처음 사용하는 경우 reMarkable Paper Pro를 개발자 모드로 설정하고 런처를 설치해야 함
- remagic은 개발자 모드 활성화와 환경 설정을 한 명령으로 진행하도록 안내함
- 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로 변환함
- resident LLM 프로세스인 oracle이 PNG를 읽고 답변을 문장 단위로 스트리밍함
- 답변은 Dancing Script 폰트를 래스터화한 뒤 Zhang-Suen thinning으로 단일 픽셀 펜 경로로 만들고, 획 추적 후 애니메이션 재생함
- 표시 백엔드는 두 가지임
- qtfb: xochitl 내부에서 창 모드로 실행되는 AppLoad 앱
- quill: xochitl을 중지하고 vendor e-ink 엔진을 직접 구동하는 full takeover 모드
저장소 구성
riddle/은 Rust 앱이며 펜 입력, 잉크 표면, 손글씨 합성, oracle 프로세스 관리자, 두 표시 백엔드를 포함함quill/은 C/C++로 된 takeover display host임- quill은 vendor
libqsgepaper.sowaveform engine 위에 epfb-re 스타일 QImage constructor interposition shim을 두고,quill_init,quill_buffer,quill_swapC ABI를 제공함 - quill에는
scribble지연시간 테스트와 지도, 이미지, GIF 렌더러 데모도 포함됨
제스처
- 글을 쓰고 펜을 쉬게 두면 일기장이 잉크를 흡수하고 Tom이 답함
- 마커를 뒤집으면 지우개로 동작함
- 큰 ? 를 그리면 내장 가이드를 호출함
- 다섯 손가락으로 동시에 탭하면 일기장을 나감
- 전원 버튼을 누르면 페이지에 “The diary sleeps.”가 표시된 뒤 태블릿이 suspend되고, 다시 누르면 같은 위치에서 깨어남
LLM 백엔드
- 답변은 커밋된 페이지를 inline PNG로 받아 손글씨를 읽는 비전 LLM에서 생성됨
- 시작 시 두 백엔드 중 하나를 선택함
-
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은 따뜻하게 유지되는 residentpi --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과 사용자 기기에서 가져온 proprietarylibqsgepaper.so가 필요함 - takeover 번들은 binary,
libquill.so, launch script, manifest를 포함한 self-containeddist/riddle/로 staged됨 - AppLoad로 실행하면 transient systemd unit으로 분리 실행되고, xochitl을 중지한 뒤 일기장을 실행하며 종료 시 항상 xochitl을 복원함
- 종료 방법은 전원 버튼, 다섯 손가락 탭, SIGTERM임
- 문제가 생기면 SSH로
systemctl start xochitl을 실행해 xochitl을 다시 시작할 수 있음
폰트와 라이선스
- 답변 손글씨는 Dancing Script를 사용하며 SIL OFL 1.1 라이선스임
- 저장소의 코드는 MIT 라이선스임
- interpose 대상인 vendor
libqsgepaper.so와 Qt 라이브러리는 포함되지 않으며, 사용자의 기기나 SDK에서 가져와야 함
댓글과 토론
Hacker News 의견들
-
아이러니하게도 Tom Riddle의 일기장이 아이들에게 자살을 부추기고 [1] 방법까지 알려주는 쪽이 책에 나온 버전보다 더 캐릭터에 맞아 보임
[1] https://en.wikipedia.org/wiki/Deaths_linked_to_chatbots#Suic...- 그런 프롬프트는 모든 AI가 거부할 것임. Nordic 조력 사망을 조사하면서 정확히 어떤 약을 얼마만큼 투여하는지 물었다가 Claude가 거부하고 Anthropic에 알렸고, 며칠 뒤 계정이 정지됐음
다행히 이의신청 양식은 통했지만, 그때는 이미 다른 Claude 계정을 쓰면서 또 정지당하지 않길 빌고 있었음
llama.cpp로 로컬 실행할 수 있는 검열 없는 모델도 떠돌고 있음: https://www.reddit.com/r/LocalLLaMA/comments/1rq7jtm/qwen353...
다만 문맥 창이 금방 차서 쓰기 귀찮고, 프로덕션 배포용은 전혀 아님. 말하자면 서비스형 Tom Riddle의 일기장은 불가능함
좋든 나쁘든 이제 재미는 허용되지 않는 시대가 됐고, 그 시점이 “AI psychosis”라는 용어가 생긴 때와 겹침 - ChatGPT만으로 이미 발생한 사망자가 이렇게 많은 줄은 몰랐음. 2~3건 정도일 줄 알았는데 목록이 생각보다 훨씬 길다
- 그런 프롬프트는 모든 AI가 거부할 것임. Nordic 조력 사망을 조사하면서 정확히 어떤 약을 얼마만큼 투여하는지 물었다가 Claude가 거부하고 Anthropic에 알렸고, 며칠 뒤 계정이 정지됐음
-
스스로 생각할 수 있는 무언가를 절대 믿지 마라. 그 두뇌가 어디 있는지 볼 수 없다면
- 오히려 그게 Tom Riddle의 일기장이 작동하는 방식에 더 가깝다
- 그래서 클라우드와 통신하는 게 아니라 완전 독립 로컬 모델로 만들었으면 더 인상적이었을 것 같음
-
논점에서 조금 벗어나긴 하지만, 사용자를 정신 지배해서 친구를 배신하고 강력한 악의 존재에게 넘기게 만든 저주받은 유물에 발명품을 비유하는 건 별로 좋아 보이지 않음
다만 이게 생성형 AI로 돌아가고, 생성형 AI도 사람들을 나쁜 행동으로 몰아간 적이 있으니 어쩌면 적절한 비교일 수도 있음- SF 작가: 내 책에서 Torment Nexus를 경고성 장치로 발명했음
기술 회사: 마침내 고전 SF 소설 《Torment Nexus를 만들지 마라》에 나오는 Torment Nexus를 만들었습니다 - 마침내 고전 SF 소설 “Don’t Create The Torment Nexus”에 나오는 Torment Nexus를 만들었음
https://x.com/AlexBlechman/status/1457842724128833538?lang=e... - 정확한 비교라면 왜 나쁜 비교가 되나?
그리고 “충분히 발전한 기술은 마법과 구별할 수 없다”는 말도 있음. 둘 다 선하게도 악하게도 만들 수 있음 - 이게 이 프로젝트의 매력 중 하나라고 생각했음. 뭔가 으스스하고 아이러니한 느낌이 있음
- 다시 봐야 했음. 이 비교를 긍정적인 것처럼 포장하고 있는 건가?!
다시 생각해보니, 아마 LLM이 이 비유를 스스로 지어냈을 텐데… 어떤 의미에선 그게 더 나쁨
- SF 작가: 내 책에서 Torment Nexus를 경고성 장치로 발명했음
-
이건 90년대 Tony Hawk식 의미로 sick함
사람들이 이제 그냥 두드려서 뭔가를 존재하게 만들 수 있다는 게 좋음
예전에는 버튼 색 하나 바꾸려고 엔지니어링 팀을 하루에서 일주일씩 기다리던 때도 있었음
이제 우리는 느린 시대에 살고 있지 않음- 기술이 병목이었다고 생각함?
그 버튼은 중요하지 않았고 어떤 종류의 자원도, 특히 엔지니어링 자원을 써선 안 됐음. 일주일 걸린 건 버그가 아니라 기능이었음. 엔지니어링이 작업의 우선순위와 긴급도를 제대로 평가했다는 뜻임
당신의 마법 슬롯머신은 쓰레기 생산과 엔지니어링 노력에 대한 왜곡된 인식을 엄청난 규모로 가능하게 만들 것임. 결과가 따를 것임 - 팀이 버튼 색 하나 바꾸는 데 일주일이 걸렸다면, 그건 코드 변경이 어려워서가 아님
혹시 그 프로젝트의 PM이었음? - 웃긴 건 입출력 메커니즘을 만드는 일은 Hacker News가 자주 폄하하는 기반 LLM 기술보다 훨씬 덜 인상적이고 특히 훨씬 덜 유용하다는 점임
- 버튼 색 하나 바꾸는 데 엔지니어링 팀을 하루에서 일주일 기다렸다고?
농담이겠지
- 기술이 병목이었다고 생각함?
-
이런 아이디어는 README에 짧은 동영상 데모, GIF, 아니면 스크린샷 하나만 직접 넣어도 훨씬 좋아질 듯함
그렇지 않으면 제목이 “Curtains for Zoosha?” 밈처럼 읽힘. [0]
[0]: https://www.reddit.com/r/BrandNewSentence/comments/15hcc4x/c...- 여기저기 클릭하면 동영상이 있음
https://x.com/MaximeRivest/status/2073544461473169432?s=20 - Baby Gronk가 새 Drip King인 건가, 아니면 Livvy에게 rizz 당한 건가?
- README에 있음: https://x.com/MaximeRivest/status/2073544461473169432?s=20
- 제목이 “Curtains for Zoosha?” 밈처럼 읽히는 이유이기도 해서 대소문자 표기가 중요함
제목의 “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 아닌가?- 그냥 채팅 인터페이스가 아니라, 글로 소통하는 프런트엔드임 :sparkle:!
- “no x no y no z” 형식은 반드시 넣어야 함
- 맞음. 생각하려고 멈출 수 없으니 오히려 더 나쁜 형태라고도 볼 수 있음
그래도 정말 멋지다는 사실은 변하지 않음 - 이건 명백히 채팅 UI임
- 사람들은 이걸 보고 감탄하면서도 LLM은 쓰레기라고 부를 것임
-
LLM 전반은 A Young Lady's Illustrated Primer 느낌이 강함. 무엇이든 물어볼 수 있는 마법 같은 블랙박스임
특히 openclaw/soul 같은 가짜 정체성까지 붙어 있으면 더 그렇다 -
정말 재미있는 프로젝트임. 실제로 Paper Pro를 사서 이 앱을 돌릴 일은 없겠지만, 이런 게 존재하고 사람들이 즐겁게 쓰고 있다는 점이 좋음