Convert reMarkable tablet notebooks to markdown via Claude Vision.
Prose Desktop This Lambda
┌────────────────────┐ ┌─────────────────────────┐
│ Sync Button │ │ .rm ──► Parse │
│ │ │ POST /ocr │ ──► Render PNG │
│ ▼ │ ─────────────► │ ──► Claude Vision │
│ rmapi-js │ │ ──► Markdown │
│ Download .rm │ ◄───────────── │ │
└────────────────────┘ JSON └─────────────────────────┘
- Typed text — Extracted directly from .rm files (firmware v3.3+), no OCR needed
- Handwriting — Rendered to PNG, then OCR'd via Claude Vision API
- Mixed pages — Both methods combined, returned as unified markdown
Headers
| Header | Required | Description |
|---|---|---|
x-api-key |
Yes | Lambda authentication |
x-anthropic-key |
For handwriting | Your Anthropic API key (BYOK model) |
Request
{
"pages": [
{ "id": "page-uuid", "data": "<base64 .rm data>" }
]
}Response
{
"pages": [
{
"id": "page-uuid",
"markdown": "# Meeting Notes\n\nDiscussed the Q1 roadmap...",
"confidence": 0.92
}
]
}Errors
| Code | Description |
|---|---|
401 |
Invalid or missing x-api-key |
MISSING_ANTHROPIC_KEY |
Handwriting detected but no x-anthropic-key provided |
pip install -r src/requirements.txt # Install deps
pytest # Run tests
pytest tests/test_handler.py -v # Single file
API_KEY=test-key ./scripts/test-local.sh path/to/page.rm# Infrastructure
cd terraform && terraform init && terraform apply
# Lambda code
./scripts/deploy.sh| Variable | Description |
|---|---|
API_KEY_SECRET_ARN |
Secrets Manager ARN for Lambda auth key |
API_KEY |
Local override for testing |
Bring Your Own Key (BYOK) — Users provide their Anthropic API key per-request via x-anthropic-key. Keys pass through to Anthropic but are never stored or logged. Typed-text-only pages skip Claude Vision entirely.
| Package | Purpose |
|---|---|
| rmscene | Parse .rm v6 files |
| Pillow | Render strokes to PNG |
| anthropic | Claude Vision API |
| boto3 | AWS Secrets Manager |
- Prose — Writing app that consumes this API