diff --git a/docs-site/docs/docker-quick-start.md b/docs-site/docs/docker-quick-start.md
index d51d351..8a725f8 100644
--- a/docs-site/docs/docker-quick-start.md
+++ b/docs-site/docs/docker-quick-start.md
@@ -41,7 +41,6 @@ docker run --name openreader \
-p 3003:3003 \
-p 8333:8333 \
-v openreader_docstore:/app/docstore \
- -v /path/to/your/library:/app/docstore/library:ro \
-e API_BASE=http://host.docker.internal:8880/v1 \
-e API_KEY=none \
-e BASE_URL=http://localhost:3003 \
@@ -55,7 +54,6 @@ What this command enables:
- `-p 3003:3003`: exposes the OpenReader web app/API.
- `-p 8333:8333`: exposes embedded SeaweedFS S3 endpoint for direct browser presigned upload/download.
- `-v openreader_docstore:/app/docstore`: persists SQLite metadata, SeaweedFS blob data, and migration/runtime state.
-- `-v /path/to/your/library:/app/docstore/library:ro`: mounts a read-only importable library source.
- `-e API_BASE=...` / `-e API_KEY=...`: **first-boot seed only.** On the first container start, these are auto-migrated into a `default-openai` admin shared provider stored in the DB (key encrypted at rest). After that, the running app no longer reads them — manage the provider from **Settings → Admin → Shared providers**. See [Admin Panel](./configure/admin-panel).
- `-e BASE_URL=...` and `-e AUTH_SECRET=...`: required for v4+ auth/session startup.
- `-e ADMIN_EMAILS=...`: (optional, requires auth) comma-separated emails auto-promoted to admin. Admins see the **Admin** tab in Settings.
diff --git a/src/app/(public)/page.tsx b/src/app/(public)/page.tsx
index dd56459..fd661ae 100644
--- a/src/app/(public)/page.tsx
+++ b/src/app/(public)/page.tsx
@@ -91,9 +91,10 @@ export default async function LandingPage() {
OpenReader turns EPUB, PDF, TXT, Markdown, and DOCX into a
- synchronized read-along surface, with genuine text-to-speech,
- word-level highlighting, and audiobook export. It’s open
- source, and entirely yours to self-host.
+ synchronized read-along surface, reading your original file in a
+ native viewer with genuine text-to-speech, word-level
+ highlighting, and audiobook export. It’s open source, and
+ entirely yours to self-host.
@@ -221,9 +222,9 @@ export default async function LandingPage() {
03
Read, listen, export
- Follow word-level highlighting as it plays, pick up where you
- left off on any device, and export a chaptered m4b or mp3
- audiobook for the road.
+ Follow word-level highlighting right on the original page as it
+ plays, pick up where you left off on any device, and export a
+ chaptered m4b or mp3 audiobook for the road.
@@ -240,12 +241,14 @@ export default async function LandingPage() {
- Parsing
- Layout-aware PDF understanding
+ Formats
+ Native EPUB and PDF, kept intact
- PP-DocLayoutV3 (ONNX) detects structured blocks, stitches
- content across pages, and aligns highlights to real geometry,
- so even dense, multi-column PDFs read in the right order.
+ Your file renders in a built-in EPUB and PDF reader, never
+ flattened to plain text. Layout-aware parsing (PP-DocLayoutV3,
+ ONNX) maps the structure underneath, so read-along highlighting
+ follows the true reading order, even in dense, multi-column
+ PDFs.
@@ -346,10 +349,13 @@ export default async function LandingPage() {
$ docker run --name openreader \{'\n'}
{' '}-p
3003:3003 -p{' '}
8333:8333 \{'\n'}
+ {' '}-v
openreader_docstore:/app/docstore \{'\n'}
{' '}-e BASE_URL=
http://localhost:3003 \{'\n'}
{' '}-e AUTH_SECRET=
$(openssl rand -hex 32) \{'\n'}
+ {' '}-e ADMIN_EMAILS=
+
you@example.com \{'\n'}
{' '}ghcr.io/richardr1126/openreader:latest{'\n'}
{'\n'}
# open the reading room