Most reading tools solve the wrong half of the problem. They are very good at getting you away from a difficult document — a summary, an outline, a chat transcript that stands in for the thing you were supposed to read. That is useful exactly once, for orientation, and then it quietly becomes a way of not reading.

Pageflow is built on the opposite bet. The document is the point. Intelligence should appear at the passage that confused you, do something specific, and get out of the way. Everything below is an expression of that one idea.

Stay with the difficult page.

The 0.2 public beta is free, runs on Apple silicon Macs with macOS 15 or later, and works on local PDFs, EPUBs, HTML pages, Markdown files, CSVs, code files, and article URLs.

1. Intelligent reading

“Intelligent reading” in Pageflow means a small set of things that stay attached to the source, rather than one big chat box that floats free of it.

Grounded answers that carry a page number

Ask a question about what you are reading and Pageflow searches the open document, answers from the retrieved passage, and keeps the page reference live — selecting it takes you back to the page the claim came from. On supported Macs the small questions can run on-device through Apple Intelligence; harder synthesis can be sent to a cloud provider you configure yourself with your own key. Which one ran is always visible.

Passage threads, not a chat log

This is the deliberate design choice in Pageflow. There is no general chat tab that accumulates a transcript detached from the text. Select a passage, press Cmd+Shift+T, and the conversation is anchored to that passage — it opens as a card next to the text, jumps back to its anchor with Cmd+J, and resolves with Cmd+D when the confusion is gone. Your questions end up organized the way the document is organized, because they are pinned to it.

Question chips

Press q and Pageflow surfaces the questions the current passage raises. Tapping one opens it as a passage thread. It is a way of being asked something at the moment you are most able to notice you cannot answer it.

Document X-Ray

:xray indexes the characters, places, and named entities in a long document so you can see where each one actually appears — useful when a paper introduces a term on page 12 and relies on it on page 130. :xray diane jumps straight to one entity's occurrences.

Live Mode

New work in this build. :live records or imports audio — a lecture, a meeting, a talk — and transcribes it on-device with a streaming model. The transcript becomes a timestamped, click-to-seek timeline you can replay. While it runs, Pageflow matches what is being said against the documents you have open and drafts source-bound notes: each draft is tied to a specific page and snippet, and nothing is added to your document until you choose to add it. Sessions survive a crash and can be reopened later.

On models and privacy: the speech and narration models run locally through a bundled model service, and the model files download from Hugging Face the first time you use a feature that needs them. Your documents are not uploaded for local narration, local transcription, or reading and progress tracking. Cloud features send only the text needed, to the provider you chose.

2. Going deep

Reading something once and feeling that it made sense is not the same as knowing it. Pageflow has a deliberate second loop for the material you actually need to retain.

Quizzes from what you just read

:quiz turns the current page — or a page range, a saved artifact, or a Live session — into a comprehension check. :practice runs the same thing continuously. :fastquiz generates a local cloze quiz with no model call at all, and for code files Pageflow generates multiple-choice line-reconstruction questions instead of prose cloze. Every question keeps a link to its source excerpt, which you can reveal with h mid-question. Quizzes save and resume per document.

Flashcards and scheduled review

c toggles flashcards; :review starts a scheduled review session over cards that are due. The point is that the cards come from the reading you were already doing, so there is no second system to maintain.

Source-linked artifacts

:artifact builds a flow or comparison from your recent reading, with every node still pointing back at the page it came from, and :artifacts browses the ones you have saved. You can quiz yourself against an artifact the same way you quiz a page range.

Progress you can actually read

Pageflow tracks dwell time, revisits, and completion per page, and shows them as a heatmap. It is less a productivity score than a map of where the document was genuinely hard — the pages you kept returning to are usually the ones worth a second pass.

3. Pacing: read, listen, or both

Narration

v opens the voice panel for the current selection or page; Cmd+Shift+S speaks the selected text, an OCR'd region, or the whole page immediately. Narration is generated on your Mac by default — no per-minute bill, no upload — and audio is cached per page so re-listening is instant. Cloud voices remain an option if you want them.

Speed reader and auto-scroll

s or :speedreader opens an ORP speed reader for previews and review passes. :autoscroll 1.2 scrolls at a set number of pages per minute, adjustable with j and k while it runs. The interesting one is Cmd+Shift+Option+S: a voice-synced speed reader where the narration drives the word highlighting, so listening and reading are the same act rather than two competing ones.

4. Working with the document

The unglamorous half, and the reason the app is usable for real work.

5. The full keyboard reference

Pageflow is a modal, keyboard-first app in the vim tradition: no modifier for the common moves, : for everything else. Press ? in the app for this same list.

Navigation

h / l / ← / →Previous / next page
j / kScroll down / up
d / uScroll down / up (large)
Space / Shift+SpacePage down / up
ggJump to top
:30Jump directly to page 30
:prevlocJump back to previous reading location
n / mScroll side panel down / up
xClose current tab

View

w / e / rRead (fit width) / Read + Notes (leave rail room) / Research (fit page)
Cmd+= / − / 0Zoom in / out / reset
pToggle side panel
oToggle left activity panel
Cmd+Shift+[ / ]Cycle panel tabs
tToggle dark / light theme
:Focus the command bar
?Show keyboard shortcuts
EscClose modal / blur command bar

Listening and pacing

vOpen / close voice panel for selection or page
Cmd+Shift+SSpeak selected text, region OCR, or current page
Space / g / − / + / EscVoice panel: play, use cached or generate, speed, close
:speedreaderSpeed reader (current page by default)
Cmd+Shift+Option+SVoice-synced speed reader (narration drives the words)
:autoscroll 1.2Auto-scroll in pages per minute
j / k / SpaceAuto-scroll: slower, faster, play/pause

Understanding and recall

Cmd+Shift+TAdd a passage thread from the current text selection
Esc / Cmd+J / Cmd+D / Cmd+Shift+DeleteThread card: close, jump to passage, resolve, clear messages
qToggle question chips (tap one to open it as a passage thread)
:quizQuiz (current page by default)
:practiceContinuous practice (same options as quiz)
1–4 / Enter / b / y / Space / h / r / xQuiz: answer, next, previous, retry, live voice, hint, source, exit
cToggle flashcards
Option+ShiftToggle live voice for quiz or agent
Control+OptionHold to talk, release to submit

Regions and capture

Cmd+Shift+RSelect a PDF region
Cmd+CCopy selected region as an image
Cmd+Shift+OOCR selected region and copy the text
Cmd+AAttach selected region to the command bar
Cmd+SSpeak selected region (OCR)
Cmd+RSpeed-read selected region
Cmd+MMark selected region as an annotation
Cmd+Option+RRename current tab

6. The command bar

Press : and type. A bare number jumps to that page; everything else is a verb. The list, more or less complete:

Documents

:openOpen a file, folder, or webpage (:open https://…)
:newtab / :newdocFile picker in a new tab / Markdown document from the clipboard
:recent 1Open a recent document by index
:refreshReload the current document from disk or URL
:finder / :copypathReveal in Finder / copy the document path
:workspace saveCopy the current document into a workspace folder
:edit / :preview / :saveEdit Markdown or CSV, preview it, save edits and PDF form fields
:csv / :codeCSV selection actions and transformations / code selection and line actions
:findFind text in the document
:copymarkdown 93-135 / :sliceCopy pages as Markdown / export a PDF slice

Reading and audio

:voiceNarrate (defaults to the current page)
:listaudio / :clearaudioList saved page audio / clear it
:fit / :fullwidthFit width, page, or notes / edge-to-edge centered
:liveStart Live Mode; also stop, replay, reveal, or import

Understanding and recall

:quiz / :practice / :fastquizQuiz pages, artifacts, and Live sources; continuous practice; fast local cloze
:quiz resume / :clearquizResume the last quiz for this document / clear saved quizzes
:next / :skip / :hint / :source / :exitIn-quiz controls
:review / :cardsScheduled flashcard review / show flashcard questions
:artifact / :artifactsBuild a source-linked flow or comparison / browse saved ones
:xrayIndex and browse entities (:xray diane)
:comment / :searchcomments / :exportcommentsAnchor a comment, search comments, export them as Markdown
:noteAdd a note on the selected region or at the viewport center
:region / :copyregion / :ocrSelect a region, copy it, OCR it

App

:setupSettings and API keys
:panel / :progressToggle the side panel / switch to the progress panel
:themeToggle dark and light
:helpShow keyboard shortcuts

Getting it

Download the 0.2.0 beta, or read the first-launch steps first. The build is ad-hoc signed rather than notarized with an Apple Developer ID, which means the first launch needs a right-click → Open instead of a double-click. It is free, it does not phone home, and it does not ask for an account.

No API key ships with it. Reading, progress, local narration, local transcription, OCR, exports, and the fast local quizzes all work with no key at all. Grounded answers against a cloud model, cloud voices, and LLM-generated quizzes use a provider you configure in Settings with a key from your own account.

If something breaks — and in a beta, something will — the issue tracker is the fastest way to reach me. Document-compatibility problems are the most useful reports: a PDF that extracts badly is a bug I can usually fix.