Transformando o reMarkable no diário de Tom Riddle, de Harry Potter, com Fable
(github.com/MaximeRivest)- riddle é um app para o reMarkable Paper Pro em que a escrita feita com a caneta desaparece após alguns instantes, e respostas são reescritas em traços manuscritos, como no diário de Tom Riddle, antes de sumirem novamente
- O fluxo de funcionamento recebe a entrada da caneta, confirma a página como PNG após 2,8 segundos de inatividade e usa um LLM de visão para ler a caligrafia e transmitir a resposta frase por frase
- A instalação é mais fácil via remagic; também é possível instalar um bundle pré-compilado ou compilar a partir do código-fonte, mas é necessário o modo de desenvolvedor do reMarkable Paper Pro e um launcher
- O app é executado como root e, no modo takeover, interrompe a UI do fornecedor e aciona diretamente o mecanismo de e-ink; os testes se limitam ao reMarkable Paper Pro ferrari, aarch64, OS 3.26–3.27
- O backend de LLM pode usar uma API
/chat/completionscompatível com OpenAI ou um processo residentpi --mode rpc; modificações no dispositivo e uso de bibliotecas do fornecedor ficam por conta e risco do usuário
App para reMarkable que funciona como o diário de Tom Riddle
- riddle é um app para o reMarkable Paper Pro em que, ao escrever em uma página com a caneta, a escrita desaparece após alguns instantes como se fosse absorvida pelo papel, e uma resposta aparece em traços de caligrafia fluida, traço por traço
- O objetivo é oferecer a experiência de tinta aparecendo no papel, sem luz de tela, teclado ou interface de chat
- É o app de diário mostrado na demo, usado no formato de escrever para “Tom”
Instalação e modo de execução
- Para o primeiro uso, é preciso colocar o reMarkable Paper Pro em modo de desenvolvedor e instalar um launcher
- remagic orienta a ativação do modo de desenvolvedor e a configuração do ambiente com um único comando
- Comandos de instalação do remagic:
remagic install riddle: baixa com verificação de checksum e instala no AppLoadremagic config riddle: abre um formulário de configuração no navegador e também fornece um QR para celular
- Se você já tiver xovi e AppLoad, é possível instalar por um catálogo do remagic, por um bundle pré-compilado ou por build a partir do código-fonte
- Após a instalação, clique em Reload no AppLoad, execute The Diary, escreva algo e deixe a caneta parada para o app funcionar
Instalação por bundle pré-compilado
- Baixe
riddle-<version>.zipda versão mais recente e extraia para uma pastariddle - Copie a pasta para
/home/root/xovi/exthome/appload/no tablet - Copie
oracle.env.exampleparaoracle.enve coloque uma chave de API compatível com OpenAI emRIDDLE_OPENAI_KEY - Se não inserir uma chave de API, é possível usar o caminho
pi - Depois de Reload no AppLoad, execute The Diary
Modificação do dispositivo e escopo de suporte
- riddle modifica o dispositivo e é executado como root
- No modo takeover, ele interrompe a UI do fornecedor e aciona diretamente o mecanismo de e-ink
- O ambiente testado é apenas reMarkable Paper Pro ferrari, aarch64, OS 3.26–3.27
- Pode não funcionar em outros modelos ou versões do SO
- Não tem relação com a reMarkable AS, e o acesso via SSH deve continuar disponível antes da instalação para garantir um caminho de recuperação
Estrutura interna de funcionamento
- A entrada é recebida via evdev bruto, usando 4096 níveis de pressão e a velocidade de eventos do hardware
- Quando o usuário escreve e para por 2,8 segundos, a página é confirmada e convertida em PNG
- O oracle, um processo LLM resident, lê o PNG e transmite a resposta frase por frase
- A resposta é rasterizada com a fonte Dancing Script, transformada em um caminho de caneta de pixel único por Zhang-Suen thinning e, após o rastreamento dos traços, reproduzida como animação
- Há dois backends de exibição
- qtfb: app do AppLoad executado em modo janela dentro do xochitl
- quill: modo full takeover que interrompe o xochitl e aciona diretamente o mecanismo de e-ink do fornecedor
Organização do repositório
riddle/é um app em Rust e inclui entrada da caneta, superfície de tinta, síntese de caligrafia, gerenciador do processo oracle e os dois backends de exibiçãoquill/é o display host de takeover em C/C++- quill coloca um shim de interposição do construtor QImage no estilo epfb-re sobre o waveform engine
libqsgepaper.sodo fornecedor e fornece a ABI Cquill_init,quill_buffer,quill_swap - quill também inclui um teste de latência
scribblee demos de renderizadores de mapas, imagens e GIFs
Gestos
- Ao escrever e deixar a caneta parada, o diário absorve a tinta e Tom responde
- Virar o marker faz com que ele funcione como borracha
- Desenhar um ? grande chama o guia integrado
- Tocar simultaneamente com cinco dedos sai do diário
- Pressionar o botão liga/desliga exibe “The diary sleeps.” na página, suspende o tablet e, ao pressioná-lo novamente, o tablet desperta no mesmo ponto
Backend de LLM
- As respostas são geradas por um LLM de visão que recebe a página confirmada como PNG inline e lê a caligrafia
- Na inicialização, um dos dois backends é escolhido
-
API compatível com OpenAI
- Ao definir
RIDDLE_OPENAI_KEY, as requisições são feitas diretamente para um endpoint/chat/completionscompatível com OpenAI - Funciona com destinos que suportam o mesmo formato, como OpenAI, OpenRouter, Groq e servidores locais
- Exemplos de configuração padrão:
RIDDLE_OPENAI_KEY: obrigatórioRIDDLE_OPENAI_BASE: opcional, padrãohttps://api.openai.com/v1RIDDLE_OPENAI_MODEL: opcional, padrãogpt-4o-mini; precisa conseguir ver imagensRIDDLE_OPENAI_REASONING: para modelos thinkingRIDDLE_OPENAI_MAX_TOKENS: proteção contra runaway- Em modelos thinking, como Gemini 3.x ou o-series, é possível definir
RIDDLE_OPENAI_REASONING=lowpara reduzir o tempo até a primeira tinta - Alguns provedores rejeitam o campo reasoning em modelos non-thinking; nesse caso, a configuração não deve ser definida
- Tokens de hidden reasoning também contam em
RIDDLE_OPENAI_MAX_TOKENS, então um limite baixo demais pode deixar a resposta visível insuficiente - Antes de executar, é possível verificar a resposta em streaming com
riddle --oracle-test path/to/handwriting.png - No dispositivo, o tempo medido até a primeira tinta é de cerca de 0,9–1,1 segundo, e HTTPS é incorporado ao riddle em pure-Rust
- Ao definir
-
Caminho pi
- Se
pijá estiver em execução, o riddle usa um processo residentpi --mode rpcmantido aquecido - Esse caminho carrega Node e a autenticação de assinatura uma vez, e em cada turno paga apenas a latência do modelo
- É usado automaticamente quando
RIDDLE_OPENAI_KEYnão está definido - Ambos os backends transmitem a resposta frase por frase, então o quill pode começar a escrever antes de o modelo terminar
- O persona prompt fica em
riddle/src/oracle.rs
- Se
Build
- Cross-compila a partir de x86_64
- O build AppLoad/qtfb em modo janela exige xovi + AppLoad no dispositivo
- O build takeover é o método usado na demo e exige a toolchain do reMarkable SDK em
~/rm-sdk-3.26e alibqsgepaper.soproprietária extraída do dispositivo do usuário - O bundle takeover é preparado em um
dist/riddle/autocontido, incluindo binary,libquill.so, launch script e manifest - Ao executar pelo AppLoad, ele roda separado como uma transient systemd unit, interrompe o xochitl e executa o diário; ao sair, sempre restaura o xochitl
- As formas de sair são o botão liga/desliga, toque com cinco dedos ou SIGTERM
- Se houver problema, é possível reiniciar o xochitl por SSH com
systemctl start xochitl
Fonte e licenças
- A caligrafia das respostas usa Dancing Script, sob licença SIL OFL 1.1
- O código do repositório está sob licença MIT
- A
libqsgepaper.sodo fornecedor e as bibliotecas Qt usadas como alvo de interposição não estão incluídas e devem ser obtidas do dispositivo ou SDK do usuário
1 comentários
Opiniões no Hacker News
Ironicamente, o diário de Tom Riddle incentivando crianças ao suicídio e até ensinando [1] como fazer parece mais fiel ao personagem do que a versão que aparece no livro
[1] https://en.wikipedia.org/wiki/Deaths_linked_to_chatbots#Suic...
Felizmente, o formulário de apelação funcionou, mas àquela altura eu já estava usando outra conta do Claude e torcendo para não ser suspenso de novo
Também há modelos sem censura circulando que podem rodar localmente com llama.cpp: https://www.reddit.com/r/LocalLLaMA/comments/1rq7jtm/qwen353...
Só que a janela de contexto enche rápido, então é incômodo de usar, e não serve de jeito nenhum para deploy em produção. Ou seja, um diário de Tom Riddle como serviço é impossível
Para o bem ou para o mal, agora vivemos numa época em que a diversão não é permitida, e esse momento coincide com o surgimento do termo “psicose por IA”
Nunca confie em algo que consegue pensar por si só se você não consegue ver onde fica o cérebro dele
Embora fuja um pouco do ponto, não parece uma boa ideia comparar uma invenção a um artefato amaldiçoado que controla mentalmente o usuário para trair os amigos e entregá-los a uma entidade maligna poderosa
Mas, como isso roda com IA generativa, e a IA generativa já levou pessoas a fazerem coisas ruins, talvez a comparação seja apropriada
Empresa de tecnologia: finalmente criamos o Torment Nexus do clássico romance de ficção científica 《Não crie o Torment Nexus》
https://x.com/AlexBlechman/status/1457842724128833538?lang=e...
E também existe aquela frase: “qualquer tecnologia suficientemente avançada é indistinguível de magia”. Ambas podem ser usadas para o bem ou para o mal
Pensando melhor, provavelmente foi o próprio LLM que inventou essa analogia… o que, de certo modo, é ainda pior
Isso é sick no sentido Tony Hawk dos anos 90
Gosto do fato de que agora as pessoas podem simplesmente bater algumas teclas e fazer algo existir
Antigamente, às vezes era preciso esperar de um dia a uma semana por uma equipe de engenharia só para mudar a cor de um botão
Já não vivemos numa era lenta
Aquele botão não era importante e não deveria consumir nenhum tipo de recurso, especialmente recursos de engenharia. Levar uma semana não era bug, era feature. Significava que a engenharia tinha avaliado corretamente a prioridade e a urgência da tarefa
Sua máquina caça-níqueis mágica vai viabilizar, em escala enorme, a produção de lixo e uma percepção distorcida do esforço de engenharia. Haverá consequências
Por acaso você era o PM desse projeto?
Só pode ser piada
Ideias assim ficariam muito melhores se o README incluísse diretamente uma demonstração em vídeo curta, um GIF ou até uma captura de tela
Caso contrário, o título fica parecendo o meme “Curtains for Zoosha?” [0]
[0]: https://www.reddit.com/r/BrandNewSentence/comments/15hcc4x/c...
https://x.com/MaximeRivest/status/2073544461473169432?s=20
O “remarkable” no título se refere ao tablet “Remarkable Paper Pro”. Sem saber disso, “Fable turned remarkable into Tom Riddle's diary” é bem difícil de interpretar
Curiosamente, fiz algo parecido no fim do ano passado. Só que era uma versão em que se podia desenhar no navegador em um computador comum
Usei pageflip [0] para deixar o estilo parecido com o diário real de Riddle, e conectei um pequeno modelo local para roleplay via ollama
Lembro que, quando eu escrevia “my name is Harry Potter, what is yours?”, em várias iterações ele respondia Snape, Malfoy e até Harry Potter
Depois de terminar o experimento, descobri que eu não tinha sido o primeiro a pensar nessa ideia e encontrei alguns diários de Riddle com IA parecidos
Além disso, tenho um Remarkable 2 e, a partir deste fim de semana, também terei um iPad Air M4, então talvez eu teste isso e veja como está o ambiente para rodar modelos no iOS
0) https://nodlik.github.io/react-pageflip/
Se a Fable agora consegue criar horcruxes, o Departamento de Comércio deveria considerar seriamente mais uma pausa forçada
“Sem brilho de tela, sem teclado, sem UI de chat.”
Isso não é simplesmente uma UI de chat?
Ainda assim, isso não muda o fato de que é muito legal
LLMs em geral têm uma vibe muito forte de A Young Lady's Illustrated Primer. Uma caixa-preta mágica à qual você pode perguntar qualquer coisa
Especialmente quando vêm com uma identidade falsa como openclaw/soul
Projeto realmente divertido. Não vou comprar um Paper Pro de fato para rodar este app, mas gosto que algo assim exista e que as pessoas estejam se divertindo com ele