Private, local-first RSVP reading with optional semantic pacing from 50 to 2,000 WPM.
XYZ is a free, open-source speed reading application that runs entirely in your browser. No servers, no logins, no tracking—just you and your books.
- 🚀 RSVP Technology - Rapid Serial Visual Presentation displays words at a fixed point, eliminating eye movement
- 🧠 AI-Powered Pacing - Local LLM analyzes text complexity and adjusts speed automatically
- 🔒 100% Private - Everything runs in your browser. Your books never leave your device
- 📚 Multi-Format Support - Upload EPUB, PDF, Markdown, or TXT files from your library
- ⚡ 50-2000 WPM - Adjustable reading speed to match your comfort level
- 📱 Works Offline - Once loaded, works without internet connection
- 🔄 P2P Sync - Sync between devices via QR code (no cloud needed)
Traditional speed reading apps force you to process simple words like "hello" at the same speed as complex philosophical concepts. Your brain doesn't work that way.
XYZ uses a local AI model (running entirely in your browser via WebLLM) to analyze text density and automatically adjust pacing:
- Simple passages → Speed up
- Complex ideas → Slow down
This creates a natural reading rhythm that matches how your brain actually processes information.
- Visit xyz.com
- Upload a supported file: EPUB, PDF, Markdown, or TXT (or try the demo)
- Start reading!
No installation, no account, no setup.
# Clone the repo
git clone https://github.com/arpheno/lalange.git
cd lalange
# Install dependencies
npm install
# Start dev server
npm run dev
# Optional: add TURN for networks that cannot establish a direct WebRTC path
VITE_WEBRTC_ICE_SERVERS='[{"urls":"turns:relay.example.com:5349","username":"app-user","credential":"app-password"}]' npm run dev
# Run tests
npm test -- --run
# Download a small deterministic Gutenberg EPUB corpus and run structure/TOC checks
npm run gutenberg:corpus -- --count=6 --seed=xyz-epub-corpus --clean
# Build for production
npm run buildProduction releases are staged and promoted through GitHub Actions. See docs/deployment.md for the release flow and one-time Cloudflare setup.
- Frontend: React + TypeScript + Vite
- Styling: Tailwind CSS
- AI: WebLLM (local LLM inference via WebGPU)
- Storage: RxDB + IndexedDB (local-first)
- Sync: WebRTC (peer-to-peer through STUN, with optional TURN relay)
- Field Manual - How to use XYZ effectively
- Research - The theory behind neuro-semantic pacing
- Manifesto - Our philosophy on local-first AI
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- WebLLM for enabling local LLM inference (embedded under Apache License 2.0)
- Project Gutenberg for free public domain books
- The open source community
Made with ❤️ by Arphen
No logins. No tracking. Just reading.