Skip to content

liminallyspaced/aethelreader

Repository files navigation

AethelReader

AethelReader

License Platform Built with Local-first

A local-first, distraction-free reader for Windows that lets you absorb text 2–3× faster using RSVP focus mode — with a built-in local AI layer that understands your documents and a synced voice that reads to you.

Read PDFs, EPUBs, Markdown, plain text, or any text you highlight on screen. Local AI (Ollama) analyzes each document for difficulty, key terms, sections, and recall prompts. A natural voice reads aloud in sync with the visual reader. Everything runs on your machine — no accounts, no cloud, no telemetry.

📚 Local-first libraryImport TXT, MD, PDF (via PDF.js), EPUB (via JSZip). Stored in localStorage on your machine. No cloud, ever.
🎯 RSVP focus modeOne word at a time, focal letter highlighted in red at the Optimal Recognition Point. Backed by 50 years of reading research.
🧠 Local AI intelligenceOllama or Foundry Local analyses your document for difficulty, key terms, sections, recall prompts, and pacing hints. Reader auto-slows on hard passages.
🗣 Synced voiceThree voice modes — off / shadow / listen. Listen mode lets the voice drive RSVP, perfectly synced via word-boundary events.
📖 Context trail layoutSurrounding paragraphs ghost in above and below the focal word so you keep narrative context while reading at speed.
⚡ Quick Read hotkeyHighlight any text on Windows, press Alt+Ctrl+R, and AethelReader opens an instant RSVP window for it.
🔒 Truly privateNo accounts. No telemetry. No analytics. Source-available. Verify yourself in the code.

Quick Install

Download the latest installer from Releases:

File Best for
AethelReader_x.y.z_x64-setup.exe Recommended — installs to %LOCALAPPDATA%\AethelReader
AethelReader_x.y.z_x64_en-US.msi IT-managed installs
AethelReader_x.y.z_portable.exe No-install, run from anywhere

Windows SmartScreen will warn about an unsigned binary on first launch. Click More infoRun anyway. Code signing arrives in v1.0.

First-run setup

  1. Add a document with Add First Read (paste text, or pick a PDF/EPUB).
  2. Click the document, then Start Reading.
  3. (Optional) Open SettingsLocal IntelligenceSet Up Ollama for AI analysis and richer pacing.

Why RSVP works

Conventional reading is bottlenecked by saccades — your eye jumps 4–5 times per second, with ~30ms of dead time per jump and additional cycles spent re-locating your place. For an average reader at 250 WPM, fixations and saccades together waste ~30% of total reading time.

RSVP (Rapid Serial Visual Presentation) removes the saccade entirely. Words appear one at a time at a fixed visual point — your eye stays still, the words come to you. The trick is the Optimal Recognition Point (ORP): every word has one specific letter that, when fixated at the visual center, lets your brain identify the whole word fastest. AethelReader colors that letter red and aligns it to a center guide so your eye locks on and stays.

What you can expect:

  • Most readers comfortably hit 400–500 WPM after a 10-minute warm-up.
  • Trained readers hit 700–1000+ WPM.
  • Comprehension stays roughly equal to your normal reading pace at 1.5–2× speed; it drops above ~3×.
  • Long sessions tire you faster than skim reading because there's no sub-vocal recovery time. Smart Mode addresses this by automatically slowing down on long or punctuation-heavy words. Local AI Pacing Hints further slow the reader on dense, technical, or visual-heavy passages.

Features in depth

Local document library

Import via paste, file picker, or the global Quick Read hotkey. Supported formats:

  • Plain text (.txt)
  • Markdown (.md)
  • PDF — text extracted via PDF.js page by page
  • EPUB — container/OPF/spine walked via JSZip + fast-xml-parser

Documents are stored in localStorage under the key read.library.v1. Open DevTools and inspect it any time. Reading progress, highlights, and stats persist across launches.

RSVP focus mode

The visual reader displays one word at a time. The Optimal Recognition Point letter is bolded and rendered in red, aligned to a vertical center guide. Settings:

  • WPM — words per minute (80–1250)
  • Hold to Play — press and hold mouse to read; release to pause
  • Smart Mode — longer / unfamiliar words get a small extra delay
  • Sentence Pauses — short / medium / long pause at periods
  • Focal Lines — show the alignment guides above and below the active word
  • Focal Letter Position — early / middle / late visual offset (the ORP letter is fixed per word; this controls the word's position relative to the focal lines)

Local AI intelligence

Optional. Connect Ollama or Foundry Local in Settings. AethelReader sends your document text to the local model and stores the analysis with the document. The model receives the text once at import; nothing is re-sent during reading.

What you get:

  • Difficulty score (1–5) with per-region difficulty marking — reader auto-slows on hard regions
  • Key terms — the top concepts in the document
  • Sections — auto-detected chapter / section starts
  • Recall prompts — comprehension questions placed at section boundaries
  • Pacing hints — explicit slow-down regions (with reasons)
  • Semantic pauses — extra pauses at clause / chapter boundaries
  • Visual cards — text descriptions of figures and graphs

If no AI provider is configured, AethelReader runs heuristic analysis locally — about 60% of the value with zero setup.

Voice modes

Three modes, picked in Settings:

Mode Behavior
Off Silent visual reading.
Shadow Voice plays in the background, reading each word as the visual reader hits it. Good for retention boost.
Listen Voice drives the pace. The visual reader follows speech word-boundary events for perfect sync. Hands-free reading.

Currently uses the Web Speech API (works on Windows out of the box). A bundled neural voice (Piper TTS) is planned for v0.4.

Quick Read hotkey

Press Alt+Ctrl+R (Windows) or Alt+Cmd+R (Mac) anywhere on Windows. AethelReader captures whatever text you've selected and opens it in a temporary RSVP window. Close it, and your library state is unchanged. Configurable in Settings (planned v0.4).

Context-trail reading

While RSVP is active, the surrounding document text fades in above and below the focal area, so you keep narrative context while reading word-by-word. Configurable: off / low / medium / high.

Scan mode

Alternate to RSVP — show 2–4 words at a time as a chunk. Useful for reading natural-language prose at a relaxed pace. Set readingPreset: "scan" and chunkSize in Settings.


Privacy

AethelReader is genuinely local-first. To verify yourself:

  • All document storage is in browser localStorage, key read.library.v1. Inspect it via DevTools.
  • The only HTTP requests in the entire codebase are to localhost:11434 (Ollama) and localhost:5273 (Foundry Local). Both opt-in.
  • No telemetry. No analytics SDKs. No phone-home. Zero tracking dependencies in package.json.
  • Auto-updater intentionally disabled. To upgrade, download a new release.
  • All voice synthesis runs through the local Web Speech API.

Architecture

+-----------------------------------------+
|  React + TypeScript Frontend            |
|  +--------+----------+---------------+  |
|  | App.tsx| ReadingP.| RsvpReader    |  |
|  +--------+----------+---------------+  |
|  | Doc    | Settings | Onboarding    |  |
|  | Detail | Drawer   | Tour          |  |
|  +--------+----------+---------------+  |
|  | Cleanup| Cover    | Ollama        |  |
|  | Review | Crop     | Setup         |  |
|  +--------+----------+---------------+  |
|  +----------------------------------+   |
|  | lib/   intelligence | narration  |   |
|  |        importers    | cleanup    |   |
|  |        tokenize     | storage    |   |
|  +----------------------------------+   |
+----------------+------------------------+
                 | Tauri bridge
                 v
+-----------------------------------------+
|  Rust + Tauri 2 Shell                   |
|  - Window management                    |
|  - start_ollama_provider command        |
|  - opener plugin                        |
+-----------------------------------------+

Tech stack:

  • Tauri 2 — native shell, ~15 MB base binary
  • React 18 + TypeScript strict mode — UI
  • Vite — bundler
  • PDF.js — PDF text extraction
  • JSZip + fast-xml-parser — EPUB extraction
  • lucide-react — icons
  • Vitest + @testing-library/react — tests (61 passing as of v0.3.0)

Building from source

Prerequisites: Node.js 20+, Rust 1.78+, Microsoft C++ Build Tools, WebView2 (preinstalled on Windows 11).

git clone https://github.com/liminallyspaced/aethelreader
cd aethelreader
npm install
npm run tauri dev          # development with hot reload
npm test                   # run vitest suite
npm run tauri build        # production installer in src-tauri/target/release/bundle/
pwsh scripts/build-release.ps1   # full release packaging into release/AethelReader-X.Y.Z-windows-x64/

Roadmap

  • v0.3 (current) — RSVP + local AI + Web Speech voice + Ollama setup wizard + context trail
  • v0.4 — Bundled Piper TTS sidecar (neural local voice), audiobook export (book → MP3 chapters), OCR for image-only PDFs (Tesseract sidecar)
  • v0.5 — Multi-voice narration (different voice per chapter / character), voice cloning via XTTS
  • Future — macOS / Linux ports, code signing, automated update channel (opt-in)

Contributing

See CONTRIBUTING.md. Bug reports and small PRs are welcome. For larger feature work, please open an issue first to discuss.

For security disclosures, see SECURITY.md.


Support the project

If AethelReader saves you time:

  • Star the repo — helps discoverability
  • 💜 GitHub Sponsors — recurring or one-time
  • 🐛 File detailed bug reports — these are more valuable than money
  • 📣 Share it — tell people who read a lot

For commercial licensing inquiries: syntheye.help@gmail.com


License

PolyForm Noncommercial 1.0.0 — free for personal, educational, research, and non-profit use. Commercial use (deployment within a for-profit company, embedding in a commercial product, paid services built on top, etc.) requires a separate commercial license; contact the address above.

Built by Nicholas Siegel.

About

Local-first focus reader for Windows with RSVP, local AI document analysis, and neural TTS. Pre-restoration snapshot — build currently broken; see CLAUDE.md.

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors