1 पॉइंट द्वारा GN⁺ 2025-02-10 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Ghostwriter एक experimental project है जो reMarkable पर यूज़र की handwritten सामग्री को मॉनिटर करता है, और gesture या स्क्रीन कंटेंट से trigger होने पर उसे Vision-LLM को भेजता है, फिर नतीजे को वापस स्क्रीन पर लिखावट या ड्रॉइंग के रूप में आउटपुट करता है
  • इसे चलाने के लिए OPENAI_API_KEY, ANTHROPIC_API_KEY, GOOGLE_API_KEY जैसी API keys चाहिए, और reMarkable2 तथा reMarkable Paper Pro के लिए binaries डाउनलोड करके डिवाइस पर कॉपी करने के बाद SSH में चलाया जाता है
  • डिफ़ॉल्ट मॉडल claude-sonnet-4-0 है, और --model gpt-4o-mini, --engine openai, --engine anthropic, --engine google, --engine-base-url आदि से मॉडल और इंजन बदले जा सकते हैं
  • आउटपुट के लिए SVG ड्रॉइंग और virtual keyboard-आधारित text input दोनों समर्थित हैं, और --no-svg, --no-keyboard, --thinking, --web-search, --apply-segmentation जैसे options से व्यवहार को समायोजित किया जा सकता है
  • प्रोजेक्ट स्क्रीन capture, Vision-LLM कॉल, tool use, image segments, evaluation scripts, और reMarkable Paper Pro के uinput मॉड्यूल support तक विस्तृत हो चुका है, लेकिन कुछ फीचर्स स्पष्ट रूप से experimental या WIP स्थिति में हैं

Ghostwriter क्या करता है

  • Ghostwriter reMarkable पर चलने वाला एक experimental interface है
    • यूज़र स्क्रीन पर handwriting या drawing बनाता है
    • उंगली से किसी खास कोने को छूकर या स्क्रीन कंटेंट से trigger करता है
    • मौजूदा स्क्रीन को Vision-LLM को भेजता है, और मॉडल का response फिर स्क्रीन पर आउटपुट करता है
  • उदाहरण के तौर पर, यूज़र ने हाथ से prompt लिखा और GPT-4o ने chihuahua की ड्रॉइंग बनाई — ऐसा एक case शामिल है
  • प्रोजेक्ट का उद्देश्य handwriting और screen के मिले-जुले माध्यम में अलग-अलग interaction तरीकों को explore करना है

इंस्टॉलेशन और रन करने का तरीका

  • चलाने से पहले reMarkable environment में API keys सेट करनी होती हैं
    • OPENAI_API_KEY
    • ANTHROPIC_API_KEY
    • GOOGLE_API_KEY
  • इंस्टॉलेशन लोकल कंप्यूटर से डिवाइस-विशिष्ट binaries डाउनलोड करके reMarkable में कॉपी करने के तरीके से होता है
    • reMarkable2: ghostwriter-rm2
    • reMarkable Paper Pro: ghostwriter-rmpp
  • डिवाइस पर SSH से कनेक्ट करके execute permission दी जाती है और ./ghostwriter चलाया जाता है
  • डिफ़ॉल्ट रन claude-sonnet-4-0 इस्तेमाल करता है
    • ./ghostwriter
    • ./ghostwriter --model gpt-4o-mini
  • background run का उदाहरण nohup ./ghostwriter --model gpt-4o-mini & है
  • boot पर auto-start अभी TODO के रूप में बाकी है

उपयोग प्रवाह और CLI options

  • यूज़र पहले reMarkable पर ghostwriter चलाता है, फिर स्क्रीन पर सामग्री बनाता है, और ऊपरी-दाएँ कोने को उंगली से tap करके assistant को trigger करता है
  • प्रोसेसिंग के दौरान SSH session में touch detection और processing logs दिखते हैं, और स्क्रीन पर progress के लिए dots बनते हैं, फिर typed response या drawn response दिखाई देता है
  • मॉडल और इंजन से जुड़े options
    • --model MODEL: इस्तेमाल होने वाला मॉडल, डिफ़ॉल्ट claude-sonnet-4-0
    • --engine ENGINE: openai, anthropic, google में से चुनें; मॉडल से auto-detect भी हो सकता है
    • --engine-api-key KEY: API key सीधे निर्दिष्ट करें
    • --engine-base-url URL: custom API base URL निर्दिष्ट करें
  • व्यवहार से जुड़े options
    • --prompt PROMPT: prompt file निर्दिष्ट करें, डिफ़ॉल्ट general.json
    • --trigger-corner CORNER: touch trigger corner निर्दिष्ट करें, डिफ़ॉल्ट UR है, UL, LR, LL भी समर्थित हैं
  • tools से जुड़े options
    • --no-svg: SVG drawing tool निष्क्रिय करें
    • --no-keyboard: text output निष्क्रिय करें
    • --thinking: Anthropic का thinking सक्रिय करें
    • --web-search: Anthropic का web search सक्रिय करें
  • टेस्ट और debugging से जुड़े options
    • --log-level LEVEL: info, debug, trace सेट करें
    • --no-loop: एक बार चलाकर समाप्त करें
    • --input-png FILE: screenshot की जगह PNG file इस्तेमाल करें
    • --output-file FILE: output सहेजें
    • --save-screenshot FILE: screenshot सहेजें
    • --save-bitmap FILE: rendering result सहेजें
    • --no-submit: मॉडल को submit न करें
    • --no-draw: output draw न करें
    • --no-trigger: touch trigger निष्क्रिय करें
    • --apply-segmentation: spatial recognition के लिए image segments जोड़ें

इम्प्लीमेंटेशन और डेवलपमेंट वर्कफ़्लो

  • डेवलपमेंट मुख्यतः Ubuntu पर हुआ, और OSX पर भी चलता है
  • डेवलपमेंट flow में dependencies install करना, reMarkable target के लिए cross-compile करना, scp से डिवाइस पर भेजना, और डिवाइस पर फिर से चलाना शामिल है
  • cross-compilation के लिए Docker, Rust, cross-rs, और ARM targets इस्तेमाल होते हैं
    • reMarkable2 target: armv7-unknown-linux-gnueabihf
    • reMarkable Paper Pro target: aarch64-unknown-linux-gnu
  • build के बाद transfer प्रक्रिया build.sh में wrap की गई है
    • ./build.sh: reMarkable2 के लिए build और transfer
    • ./build.sh rmpp: reMarkable Paper Pro के लिए build और transfer
  • release build में v2026.09.21-01 जैसे tag को main पर लगाने से GitHub Action latest release बनाता है

फीचर बदलाव और प्रयोग रिकॉर्ड

  • 2024-10-06 को बुनियादी proof of concept काम करने लगा
    • गणित सवाल 3 + 7 = का उत्तर भरने वाला उदाहरण काम करता है
    • “Draw a picture of a chihuahua. Use simple line-art” उदाहरण काम करता है
    • SVG output को rasterize करके बहुत सारे dots बनाने का तरीका कभी-कभी reMarkable पर ठीक से काम नहीं करता था
  • 2024-10-07 को ऊपरी-दाएँ touch trigger और status indicator जोड़े गए
    • touch करने पर स्क्रीन पर X बनता है, और processing के दौरान X पर अतिरिक्त रेखाएँ खींची जाती हैं
    • इसे यूज़र को खुद मिटाना पड़ता है
  • 2024-10-10 से virtual keyboard-आधारित text input का प्रयोग शुरू हुआ
    • reMarkable के हर page में एक बड़ा text area होता है और formatting बुनियादी स्तर की होती है
    • rM-input-devices के जरिए virtual keyboard बनाकर text layer में output देने के तरीके को verify किया गया
  • 2024-11-02 को draw_text और draw_svg tools उपलब्ध होने लगे
    • एक single overall assistant तय करता है कि keyboard text से जवाब देना है या SVG drawing से
  • 2024-11-07 को Claude/Anthropic support जोड़ा गया
    • OpenAI की लगभग वही tool-use configuration इस्तेमाल की जा सकती है
    • यह drawing को थोड़ा ज़्यादा पसंद करता दिखा, लेकिन drawing और spatial recognition अच्छे नहीं थे — ऐसा दर्ज है
  • 2024-12-02 को बुनियादी image segmentation step जोड़ा गया
    • segment coordinates Vision-LLM को भेजे जाते हैं ताकि वह उन्हें ध्यान में रखे
    • उस समय यह सिर्फ Claude से जुड़ा था
    • box के अंदर X रखने और math answer की position तय करने में सुधार के उदाहरण दर्ज हैं
    • इसे --apply-segmentation से स्पष्ट रूप से enable करना पड़ता है, और --input-png या --save-screenshot के आधार पर PNG को फिर से parse किया जाता है
  • 2024-12-15 को OpenAI और Anthropic backends के लिए polymorphic engine layer अलग की गई
    • engine और model को arguments के रूप में दिया जा सकता है
    • prompts और tool definitions को prompts/ directory में externalize करके एकीकृत किया गया
  • 2024-12-25 को CLI को सरल और विस्तृत किया गया
    • सिर्फ -m gpt-4o-mini देने पर engine को openai माना जाता है
    • Groq उपयोग उदाहरण जोड़ा गया
    • gemini-2.0-flash-exp और GOOGLE_API_KEY के साथ Google Gemini support जोड़ा गया
  • 2025-05-10 को Anthropic का thinking और web_search जोड़ा गया
    • thinking responses प्रोसेस किए जाते हैं, लेकिन स्क्रीन पर नहीं भेजे जाते
    • web search Anthropic के server-side feature के रूप में काम करता है
    • यह डिफ़ॉल्ट रूप से enabled नहीं है; ./ghostwriter --thinking --web-search से चलाया जाता है
  • 2025-09-21 को reMarkable Paper Pro से जुड़े fixes और options जोड़े गए
    • 3.20 में स्क्रीन resolution बदलने से screenshot ठीक से नहीं आने की समस्या ठीक की गई
    • यूज़र अनुरोध पर --no-svg जोड़ा गया
    • --trigger-corner LR जैसे trigger corner selection जोड़े गए

reMarkable Paper Pro और uinput

  • 2025-03-03 को Ghostwriter reMarkable Paper Pro पर भी चलने लगा
  • स्क्रीन और input तरीकों में कुछ अंतर अपेक्षित थे
  • अप्रत्याशित समस्या यह थी कि reMarkable Paper Pro में uinput kernel module शामिल नहीं था
  • reMarkable/linux-imx-rm का उपयोग करके uinput module build करके bundle किया गया
  • अगर uinput module लोड नहीं होता, तो Ghostwriter उसे लोड करने की कोशिश करता है
  • क्योंकि हर reMarkable release अक्सर नया Linux version इस्तेमाल करता है, इसलिए यह हिस्सा परस्पर compatible न होने के कारण बड़ा बोझ माना गया है
  • 2025-04-26 तक 3.16, 3.17, 3.18 के लिए modules तैयार थे
  • 2025-12-06 के रिकॉर्ड में लिखा है कि update के बाद rmpp Linux पहले से public था, और uinput module भी पहले से मौजूद था, लेकिन उसे load करना अभी भी ज़रूरी था

मूल्यांकन और आगे के विचार

  • बुनियादी evaluation system को completed items के रूप में व्यवस्थित किया गया है
    • input के लिए screenshot sets बनाना
    • अलग-अलग use cases को व्यक्त करना
    • text, SVG, action रूपों में output examples बनाना
    • कुछ मामलों में human या अलग Vision-LLM judge के जरिए evaluation की संभावना शामिल है
  • 2024-12-22 को run_eval.sh सहित evaluation system का विस्तार शुरू हुआ
    • उस समय parameters hardcoded थे, जैसे segmentation का उपयोग करना है या नहीं, और Claude 3.5 Sonnet या ChatGPT 4o-mini चुनना
    • प्रारंभिक evaluation report शामिल है
    • final report में 48 runs थे और लागत लगभग $1 दर्ज की गई
  • WIP items में prompt library शामिल है
    • prompts/ में शुरुआती ढांचा मौजूद है
    • tools को prompt से configure करने की योजना है
    • TODO management prompt example में todo ढूँढकर निकालना और add-todo.sh जैसे बाहरी command चलाना शामिल है
  • आगे के ideas में शुरुआती config file बनाना, API key input, auto-start और auto-recovery, PlantUML या Mermaid-आधारित diagram generation, external lookup, और email या Slack भेजना शामिल है
  • conversation mode की भी योजना है
    • एक ही स्क्रीन पर turn-by-turn screen versions को track करना
    • मूल input, model response, और नए input को रंगों से अलग दिखाने का प्रस्ताव है
    • “नया prompt” और “जारी रखें” को अलग-अलग triggers में बाँटने का तरीका भी शामिल है
  • local network Vision-LLM experiments भी हैं
    • Ollama का OpenAI API-compatible mode llama3.2-vision में tools support न होने से विफल हुआ
    • Groq का llama-3.2-vision tools support करता है, लेकिन रिकॉर्ड के अनुसार यह ChatGPT, Claude, Gemini जितना अच्छा नहीं है
  • अतिरिक्त ideas में streaming LLM services और interruption, async processing, OpenAI responses API, MCP(Model Context Protocol), और integrated web interface शामिल हैं

संदर्भ संसाधन

  • Awesome reMarkable: reMarkable से जुड़े resources
  • reSnap: screen capture आधारित
  • rmkit lamp: screen drawing techniques के संदर्भ में
  • resvg: SVG-to-PNG processing
  • rM-input-devices: keyboard के बिना virtual input devices बनाना
  • reMarkableAI: OCR→OpenAI→PDF→Device workflow वाला संबंधित project
  • rMAI: अलग app रूप का reMarkable-LLM interface
  • Crazy Cow: reMarkable1 के लिए text को pen strokes में बदलने वाला tool

1 टिप्पणियां

 
GN⁺ 2025-02-10
Hacker News की राय
  • मैं इस प्रोजेक्ट का निर्माता हूँ। यह अभी भी जारी काम है, और सबसे बड़ी सीख vision models की spatial reasoning limits रही है
    लगभग मूल्यांकन के उदाहरण यहाँ हैं: https://github.com/awwaiid/ghostwriter/blob/main/evaluation_...
    आगे मैं yaml+shell script आधारित agent framework/tool के रूप में build और extraction पर काम जारी रखने, pre-segmentation जैसी spatial reasoning methods को और explore करने, और बहुत सारे dots की जगह असली pen strokes भेजने वाला reSvg backend लिखने की योजना बना रहा हूँ

    • यह वाकई बहुत शानदार है। यह सिर्फ “unstyled turn-taking” नहीं है, बल्कि इस्तेमाल का एक ज़्यादा collaborative तरीका भी हो सकता है
      उदाहरण के लिए, अगर मैं ऐसे notes लिख रहा हूँ जिनमें शब्द, सरल गणित और diagrams मिले हुए हों, और किसी मुख्य वाक्यांश के नीचे लाइन खींच दूँ, तो “device” margin में उस वाक्यांश को expand कर सकता है
      अगर device diagram बना रहा हो और मैं बीच में दखल देकर उसका कुछ हिस्सा मिटाकर ठीक कर दूँ, तो वह उसे समझकर बदलाव भी कर सकता है
      handwriting recognition से मिला text, stroke gestures, एक छोटी icon language, और LLM मिलकर शायद नए user interaction paradigms खोल सकते हैं, जिन्हें हम अपनी पुरानी आदतों में फँसे होने की वजह से तुरंत सोच भी नहीं पाते
      ऐसा लगता है कि इससे जल्द ही “mother of all demos” जैसा कोई पल आ सकता है, लेकिन मैं UX designer नहीं हूँ इसलिए इसे साफ़ तौर पर imagine करना मुश्किल है, और शायद इसे बनाने वाला ही यह कर पाए
    • इसका effect वाकई बहुत अच्छा है। जानना चाहूँगा कि आपको लगता है इसे असल में कैसे इस्तेमाल किया जाएगा
      product नज़रिए से देखें तो ऐसा होना चाहिए कि हर बार stylus रुकते ही यह जवाब लिखना शुरू न कर दे, इसलिए LLM से response माँगने वाला mode आसानी से on/off किया जा सके
      हो सकता है कि कोई कुछ देर sketching और सोचने के बाद बातचीत फिर से शुरू करना चाहे, या सिर्फ कुछ pages पर LLM चालू रखना चाहे और बाकी पर बंद
      यह भी जानना चाहूँगा कि device पर SSH access पाने के लिए किस तरह का jailbreak चाहिए
  • reMarkable tablet के लिए apps को hack करके बनते देखना मुझे बहुत अच्छा लगता है
    मैंने पहले एक छोटा reMarkable app बनाया था और यहाँ share किया था: https://digest.ferrucc.io/

    • हर बार ऐसा कुछ देखता हूँ तो Remarkable 2 app development आज़माने का मन करता है। क्या कोई recommend करने लायक resources हैं?
      मुझे official developer site मिली: https://developer.remarkable.com/documentation
    • बढ़िया है। creative hacking के ज़रिए reMarkable की capabilities बढ़ती देखना अच्छा लगता है
      मैंने app देखा, और जानना चाहता हूँ कि reMarkable के लिए develop करते समय सबसे कठिन हिस्सा क्या था
  • काश reMarkable tablets थोड़े कम locked down होते
    यह मेरे पसंदीदा hardware में से एक है, इसलिए मैं चाहता हूँ कि और apps हों

    • Locked down? SSH से connect करो, shell मिल जाता है। जिस दिन iPad यह allow करेगा, उस दिन फिर बात करेंगे
  • मैं कुछ महीनों से इसे implement करना चाहता था, आपने इसे बहुत अच्छी तरह बनाया है

    • यह अभी work in progress है, लेकिन सीखने और inspiration लेने के लिए यह बहुत मज़ेदार project है
      इसमें थोड़ा Rust भी है, device constraints से जूझना पड़ा, कई LLM API normalizations, spatial vision LLM training जैसी चीज़ें भी शामिल हैं
    • एक समय मैं goMarkableStream को MCP server में बदलना चाहता था
      मैं screen तो ला पाया था, लेकिन “hacking” के बिना response वापस लिखकर डाल नहीं सकता था
  • मैं इस weekend इसे try करने वाला हूँ
    मेरे पास एक idea था कि to-do list लिखूँ, उसे PDF के रूप में email करूँ और LLM को भेजकर tasks auto-generate कराऊँ, लेकिन यह उस लक्ष्य को real-time में कहीं बेहतर तरीके से हासिल करने का रास्ता खोलता है

    • कुछ महीने पहले मैंने Claude और rMPP के साथ proof of concept किया था, और वह काफ़ी अच्छा चला
      उसने vague scheduling भी संभाल ली थी, जैसे “कभी करना है लेकिन कोई तय समय नहीं है, तो ऐसा समय चुनो जो मेरे actual schedule से न टकराए”
      prompt की भी लगभग ज़रूरत नहीं पड़ी, लेकिन workflow अच्छा नहीं था, इसलिए अंत में PDF को email करने वाला तरीका ही था
      शायद मुझे फिर देखना चाहिए, लेकिन वैसे भी मैं जो tasks बनाता हूँ उन्हें ignore कर देता हूँ, इसलिए motivation नहीं हुआ
    • ज़रूरत हो तो मैं मदद कर सकता हूँ। अभी तक लगता है कि इसे सच में चलाने वाला शायद सिर्फ एक ही व्यक्ति है
      मैं reMarkable Discord server https://discord.gg/u3P9sDW पर हूँ। इसका link https://github.com/reHackable/awesome-reMarkable में भी है
      यह Rust binary है, इसलिए installation आसान होना चाहिए। कम से कम सिद्धांत में :)
  • सोच रहा हूँ कि क्या यह Android आधारित Onyx Boox e-reader पर भी संभव होगा

    • reMarkable की सीमाओं की वजह से मैंने screenshots लेने और proprietary drawing app के साथ interact करने के लिए input events inject करने का तरीका इस्तेमाल किया
      Android पर सही permissions हों तो apps के बीच screenshot लेना शायद संभव होगा, लेकिन drawing event injection के बारे में पक्का नहीं हूँ
      दूसरा तरीका है dedicated app बनाना। मैंने अभी Apple Pencil खरीदी है, और सोच रहा हूँ कि इस concept को web app में ले जाऊँ; अभी तक यह हैरानी की बात है कि यह काफ़ी अच्छा काम कर रहा है
      फिर भी, अगर proper solution चाहिए तो बेहतर होगा कि यह agent मौजूदा apps के साथ interact करे
  • handwriting input और LLM को जोड़ना कहीं ज़्यादा natural workflow बनाने का शानदार use case है
    जानना चाहूँगा कि messy handwriting को यह कितना अच्छी तरह संभालता है, और क्या personal notes पर fine-tuning करने से समय के साथ recognition बेहतर हो सकता है

    • कुछ महीने पहले मैंने Remarkable Paper Pro और Claude के साथ यह आज़माया था, और यह काफ़ी अच्छा था
      मेरी handwriting काफ़ी खराब है, फिर भी अगर मैं करने वाले काम और मोटा-मोटी या specific time लिख दूँ, तो यह calendar में डालने लायक ical बना देता था
    • आमतौर पर अगर मैं अपनी handwriting पढ़ सकता हूँ, तो model भी पढ़ सकता है। वह हिस्सा समस्या नहीं था
      असली समस्या spatial reasoning के ज़्यादा करीब है। किसी box के अंदर X को reliably बनाना भी मुश्किल है, और tic-tac-toe या dot-connecting games तो और भी कठिन हैं
  • अच्छा है। कुछ vector diffusion models भी हैं; अगर model को लगे कि कुछ draw करना है, तो क्या उसे tool call के ज़रिए ऐसे model को सौंपा जा सकता है?
    तब coordinates की range और prompt specify किए जा सकते हैं

    • दो वजहें हैं। एक तो यह कि मैं अभी वहाँ तक पहुँचा ही नहीं हूँ, और दूसरी… दरअसल वही एक वजह है
      अगर कोई recommend करने लायक model हो, और बेहतर हो कि hosted API भी हो, तो जानना चाहूँगा
  • सोच रहा हूँ कि PDFs में papers पढ़ने के लिए reMarkable का 11-inch size काफ़ी है या नहीं
    मैं 13-inch Sony DPT 2nd gen इस्तेमाल कर रहा हूँ और viewing के लिए वह perfect है। फिर भी ऐसे projects की वजह से reMarkable products बार-बार आकर्षित करते हैं

    • मैंने Remarkable 2 पर papers पढ़े हैं, लेकिन text को आराम से पढ़ने के लिए वह थोड़ा छोटा लगा
      मैं active reading करता हूँ, इसलिए color highlighting न होना भी खलता है। annotation features शानदार हैं
      अब मैं iPad के Zotero app में papers review करना जारी रखता हूँ
    • मैंने हाल ही में reMarkable Pro tablet खरीदा, और उसी की वजह से मैं Sony DPT-S1 और reMarkable 2 से आगे बढ़ पाया
      reMarkable 2 hacking potential की वजह से अच्छा था, लेकिन Pro का screen size और color features इसे शानदार replacement बनाते हैं
    • PDFs के लिए यह बस जैसे-तैसे ठीक है
  • मैं Boox tablet इस्तेमाल कर रहा हूँ, और वह मूल रूप से e-ink screen वाला एक पूरा Android tablet है, इसलिए यह ऐसे features के लिए बिल्कुल सही लगता है
    सोचता हूँ कि 5 साल बाद mobile hardware शायद ऐसी चीज़ों को local execution के साथ support कर सके