Transform your reMarkable handwriting into structured, searchable, AI-enhanced content.
InkSight is a CLI and Node.js library that connects your reMarkable Paper Pro to AI, letting you:
- 📝 Convert handwriting to text — accurate HTR with layout preservation
- 🔍 Search handwritten notes — semantic search across your entire notebook library
- 📊 Clean up diagrams — vectorise and export hand-drawn sketches
- 🗒️ Summarise long notes — GPT-4o or Claude distills pages into bullets
- 🔄 Sync automatically — watch for new documents via Cloud API or direct SSH
Works offline. Supports both reMarkable Cloud sync and direct SSH/USB access.
npm install -g inksightinksight setupThis wizard will walk you through:
- Authenticating with reMarkable Cloud (or entering your device IP for SSH)
- Adding your OpenAI or Anthropic API key
- Choosing a local storage path for the cache database
# List documents synced from your device
inksight list
# Convert handwriting to text
inksight transform --type htr "My Meeting Notes"
# Summarise a document
inksight transform --type summarise "Research Notes"
# Search across all documents
inksight search "project timeline"Write transformed notes directly into an Obsidian vault as Markdown files with
YAML frontmatter. InkSight stamps each note with source: remarkable so you
can filter by origin inside Obsidian.
# Write a note to your vault (title becomes the filename)
inksight transform "Meeting Notes" --obsidian-vault ~/Documents/MyVault
# Override the title and add tags
inksight transform "2024-03-15 Call" \
--obsidian-vault ~/Documents/MyVault \
--obsidian-title "Q1 Strategy Call" \
--obsidian-tags "meeting,q1,strategy"The generated file looks like:
---
title: Q1 Strategy Call
date: 2024-03-15
tags:
- meeting
- q1
- strategy
source: remarkable
---
Your transformed note content here…Filename rules:
- Title is sanitized and used as the filename (
Q1 Strategy Call.md). - If no title is available, the date is used (
2024-03-15.md). - If a file with the same name already exists, a timestamp suffix is appended
(
Q1 Strategy Call 2024-03-15T14-30-00.md).
--obsidian-vault can be used alongside --type, --page, and all other
transform flags.
import { InkSightClient } from 'inksight';
const client = new InkSightClient({ /* config */ });
await client.connect();
const docs = await client.listDocuments();
const result = await client.transform(docs[0], { type: 'htr' });
console.log(result.text);- Node.js >= 18
- reMarkable Paper Pro (or reMarkable 2)
- reMarkable Cloud account or SSH access to your device
- OpenAI or Anthropic API key
See ARCHITECTURE.md for the full system design.
inksight/
├── src/
│ ├── cloud/ # reMarkable Cloud API client
│ ├── device/ # SSH/USB direct device access
│ ├── renderer/ # .rm file parser + PNG renderer
│ ├── ai/ # Multi-provider AI (OpenAI, Anthropic)
│ ├── storage/ # SQLite cache & document index
│ ├── performance/ # Parallel processing & batch AI
│ └── cli/ # Interactive CLI
└── tests/
git clone https://github.com/talosgunn/inksight.git
cd inksight
npm install
# Build
npm run build
# Watch mode
npm run dev
# Run tests (642 tests, ~4s)
npm test
# Lint / format
npm run lint
npm run formatSee CONTRIBUTING.md. Issues and PRs welcome.
MIT — see LICENSE.