{"id":51251322,"url":"https://github.com/sparshsam/openreader","last_synced_at":"2026-06-29T07:02:04.229Z","repository":{"id":359276104,"uuid":"1245273987","full_name":"sparshsam/openreader","owner":"sparshsam","description":"Private desktop PDF tooling for local reading, annotation, search, diff, and workspace restore.","archived":false,"fork":false,"pushed_at":"2026-06-21T05:15:47.000Z","size":5154,"stargazers_count":1,"open_issues_count":4,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-21T05:18:01.963Z","etag":null,"topics":["calm-software","desktop-app","desktop-utility","document-tools","local-first","macos","non-commercial","pdf","pdf-reader","personal-data","privacy","privacy-first","pyinstaller","pymupdf","pyside6","python","release-engineering","windows"],"latest_commit_sha":null,"homepage":"https://apps.microsoft.com/detail/9MXDVW2645LL","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sparshsam.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":"SUPPORT.md","governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-21T04:30:13.000Z","updated_at":"2026-06-21T05:15:40.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/sparshsam/openreader","commit_stats":null,"previous_names":["sparshsam/pdfreader-by-sparsh","sparshsam/openreader"],"tags_count":46,"template":false,"template_full_name":null,"purl":"pkg:github/sparshsam/openreader","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sparshsam%2Fopenreader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sparshsam%2Fopenreader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sparshsam%2Fopenreader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sparshsam%2Fopenreader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sparshsam","download_url":"https://codeload.github.com/sparshsam/openreader/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sparshsam%2Fopenreader/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34916411,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-29T02:00:05.398Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["calm-software","desktop-app","desktop-utility","document-tools","local-first","macos","non-commercial","pdf","pdf-reader","personal-data","privacy","privacy-first","pyinstaller","pymupdf","pyside6","python","release-engineering","windows"],"created_at":"2026-06-29T07:02:01.306Z","updated_at":"2026-06-29T07:02:04.221Z","avatar_url":"https://github.com/sparshsam.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/branding/AppIcon.iconset/icon_256x256.png\" alt=\"OpenReader\" width=\"72\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\" style=\"font-size: 2.75rem; font-weight: 700; letter-spacing: -0.02em; margin: 0.5rem 0 0.25rem;\"\u003e\n  OpenReader\n\u003c/h1\u003e\n\n\u003cp align=\"center\" style=\"font-size: 1.2rem; color: #666; margin: 0 0 0.5rem;\"\u003e\n  Private PDF tools for your computer. No uploads. No accounts. No cloud.\n\u003c/p\u003e\n\n\u003cbr\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/hero/reader-main.png\" alt=\"OpenReader reading a PDF\" width=\"880\" style=\"border-radius: 12px; box-shadow: 0 8px 32px rgba(0,0,0,0.15);\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\" style=\"font-size: 0.95rem; color: #888; margin: 0.75rem 0 1.5rem;\"\u003e\n  Built for Windows 10 \u0026amp; 11 · 100% Offline · Open Source · AI-ready\n\u003c/p\u003e\n\n\u003cbr\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong style=\"font-size: 1.15rem;\"\u003e⭐ Get OpenReader\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://apps.microsoft.com/detail/9MXDVW2645LL\"\u003e\u003cimg alt=\"Microsoft Store (Recommended)\" src=\"https://img.shields.io/badge/Microsoft%20Store%20(Recommended)-ff255f?style=for-the-badge\u0026logo=microsoft\u0026logoColor=white\"\u003e\u003c/a\u003e\n  \u0026nbsp;\n  \u003ca href=\"https://github.com/sparshsam/openreader/releases/latest\"\u003e\u003cimg alt=\"Portable Release\" src=\"https://img.shields.io/badge/Portable%20Release-1a1b26?style=for-the-badge\u0026logo=github\u0026logoColor=white\"\u003e\u003c/a\u003e\n  \u0026nbsp;\n  \u003ca href=\"https://reader.kovina.org\"\u003e\u003cimg alt=\"Project Website\" src=\"https://img.shields.io/badge/Project%20Website-000000?style=for-the-badge\u0026logo=googlechrome\u0026logoColor=white\"\u003e\u003c/a\u003e\n  \u0026nbsp;\n  \u003ca href=\"https://github.com/sparshsam/openreader\"\u003e\u003cimg alt=\"Source Code\" src=\"https://img.shields.io/badge/Source%20Code-ffffff?style=for-the-badge\u0026logo=github\u0026logoColor=black\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## Gallery\n\n| Dark Mode | PDF Tools |\n|---|---|\n| ![Dark Mode](assets/screenshots/dark-mode.png) | ![PDF Tools: merge, split, compress](assets/screenshots/merge-split.png) |\n\n| About \u0026 Keyboard Shortcuts | Sample Document |\n|---|---|\n| ![About dialog with keyboard shortcuts](assets/screenshots/about.png) | ![Sample PDF loaded in OpenReader](assets/screenshots/sample-pdf.png) |\n\n---\n\n## Why OpenReader\n\n| | |\n|---|---|\n| **Truly private** | Every operation runs on your machine. No accounts, no telemetry, no cloud uploads. |\n| **Works offline** | No internet required. Open, read, and annotate PDFs anywhere. |\n| **Built for Windows** | A native reading experience with proper Windows 10/11 integration. |\n| **AI-ready** | Built-in MCP server lets AI agents interact with your PDFs — entirely local. |\n\n---\n\n## Features\n\n| | |\n|---|---|\n| \u003cimg src=\"assets/icons/feature-read.svg\" width=\"28\" height=\"28\" alt=\"\"\u003e **Read** — Open PDFs, one-page or continuous scroll, fit-width zoom, page jump. | \u003cimg src=\"assets/icons/feature-annotate.svg\" width=\"28\" height=\"28\" alt=\"\"\u003e **Annotate** — Highlight, underline, strikethrough, and sticky notes. Saved as native PDF annotations. |\n| \u003cimg src=\"assets/icons/feature-search.svg\" width=\"28\" height=\"28\" alt=\"\"\u003e **Search** — Full-document keyword search with match count and navigation. | \u003cimg src=\"assets/icons/feature-session.svg\" width=\"28\" height=\"28\" alt=\"\"\u003e **Library search** — Index entire folders with SQLite FTS5 for cross-document BM25-ranked search. |\n| \u003cimg src=\"assets/icons/feature-offline.svg\" width=\"28\" height=\"28\" alt=\"\"\u003e **Semantic search** — TF-IDF cosine similarity — meaning-based matching, no external ML. | \u003cimg src=\"assets/icons/feature-compare.svg\" width=\"28\" height=\"28\" alt=\"\"\u003e **Compare** — Side-by-side diff with color-coded changes and structured summary. |\n| \u003cimg src=\"assets/icons/feature-tabs.svg\" width=\"28\" height=\"28\" alt=\"\"\u003e **Multi-tab** — Open several documents in one window with movable tabs. | \u003cimg src=\"assets/icons/feature-darkmode.svg\" width=\"28\" height=\"28\" alt=\"\"\u003e **Dark mode** — System-aware theme with Auto/Light/Dark toggle. |\n| \u003cimg src=\"assets/icons/feature-tools.svg\" width=\"28\" height=\"28\" alt=\"\"\u003e **PDF tools** — Merge, split, extract page ranges, compress. | \u003cimg src=\"assets/icons/feature-ocr.svg\" width=\"28\" height=\"28\" alt=\"\"\u003e **OCR fallback** — Automatic OCR on scanned/image-based pages when Tesseract is available. |\n| \u003cimg src=\"assets/icons/feature-platform.svg\" width=\"28\" height=\"28\" alt=\"\"\u003e **Session restore** — Remembers open documents and page positions across restarts. | \u003cimg src=\"assets/icons/feature-ai.svg\" width=\"28\" height=\"28\" alt=\"\"\u003e **AI agent integration** — Built-in MCP server with 14 tools for automated PDF workflows. |\n\n---\n\n## Designed for\n\n| Audience | Why OpenReader |\n|----------|---------------|\n| **Students** | Read textbooks, annotate lecture notes, search across research papers — all offline. |\n| **Professionals** | Review contracts, compare document versions, merge reports without uploading to any service. |\n| **Researchers** | Index and search across PDF libraries, extract text, build automated PDF pipelines. |\n| **Privacy-conscious users** | Full-featured PDF tool that never sends your documents anywhere. |\n| **AI adopters** | Connect AI agents to your local documents for automated reading, searching, and processing. |\n\n---\n\n## Design Philosophy\n\n\u003e *\"Software should respect your documents. They stay on your computer, under your control.\"*\n\nOpenReader is built around a single idea: **a PDF reader should feel like a well‑made tool, not a web page.** The interface follows native Windows conventions — real menus, keyboard shortcuts, proper window management — with a refined dark theme (Tokyo Night‑inspired) and a clean light option. Every interaction is immediate, every feature discoverable without tutorials.\n\nThe focus is on reading and working with documents, not fighting the interface. Toolbar buttons have clear vector‑drawn icons, tabs are movable, zoom is instant, and the reading view puts your document first.\n\n---\n\n## Built With\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/icons/tech-python.svg\" width=\"40\" height=\"40\" alt=\"Python\"\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003cimg src=\"assets/icons/tech-qt.svg\" width=\"40\" height=\"40\" alt=\"Qt 6\"\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003cimg src=\"assets/icons/tech-mupdf.svg\" width=\"40\" height=\"40\" alt=\"MuPDF\"\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003cimg src=\"assets/icons/tech-sqlite.svg\" width=\"40\" height=\"40\" alt=\"SQLite\"\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003cimg src=\"assets/icons/tech-tesseract.svg\" width=\"40\" height=\"40\" alt=\"Tesseract\"\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003cimg src=\"assets/icons/tech-mcp.svg\" width=\"40\" height=\"40\" alt=\"MCP\"\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003cimg src=\"assets/icons/tech-pyinstaller.svg\" width=\"40\" height=\"40\" alt=\"PyInstaller\"\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003cimg src=\"assets/icons/tech-msix.svg\" width=\"40\" height=\"40\" alt=\"MSIX\"\u003e\n\u003c/p\u003e\n\n---\n\n## Version Journey\n\n| Release | Date | Milestone |\n|---------|------|-----------|\n| **v1.2.4** | Jun 2026 | Toolbar icon redesign — all buttons use QPainter vector icons |\n| **v1.2.3** | Jun 2026 | Reader UX polish — Fit Page on open, Ctrl+Mouse Wheel zoom |\n| **v1.2.2** | Jun 2026 | Store submission fix — XML DOM patching, CI validation |\n| **v1.2.1** | Jun 2026 | First Microsoft Store release candidate |\n| **v1.2.0** | Jun 2026 | MSIX packaging, self‑update removed, App Installer integration |\n| **v1.1.0** | Jun 2026 | MCP server — 14 AI agent tools, local document automation |\n| **v1.0.6** | Jun 2026 | Single‑instance IPC, icon bundling, Qt file dialog fallback chain |\n| **v1.0.0** | Jun 2026 | Stable release — reliability, security audit, regression suite |\n| **v0.3.0** | May 2026 | Library search, PDF comparison, semantic search, modular refactor |\n| **v0.2.0** | May 2026 | Annotations (highlight, underline, strikethrough, sticky notes) |\n| **v0.1.0** | May 2026 | First release — PySide6 PDF reader, text search, merge/split/compress |\n\n[Full changelog →](CHANGELOG.md)\n\n---\n\n## License\n\nOpenReader is free software under the [GNU AGPLv3](LICENSE).\n\nCopyright \u0026copy; 2026 Sparsh Sam.\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://apps.microsoft.com/detail/9MXDVW2645LL\"\u003e\u003cimg alt=\"Get it from Microsoft Store\" src=\"https://img.shields.io/badge/Get%20it%20from%20Microsoft%20Store-ff255f?style=for-the-badge\u0026logo=microsoft\u0026logoColor=white\"\u003e\u003c/a\u003e\n  \u0026nbsp;\n  \u003ca href=\"https://github.com/sparshsam/openreader/releases/latest\"\u003e\u003cimg alt=\"Download from GitHub\" src=\"https://img.shields.io/badge/Download%20from%20GitHub-1a1b26?style=for-the-badge\u0026logo=github\u0026logoColor=white\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## Part of the Open Collection\n\nOpen\\* is a family of privacy-first, open-source applications. Every app is local-first, respects your data, and is built with care.\n\n| | App | Description | Links |\n|---|---|---|---|\n| \u003cimg src=\"assets/icons/openreader.svg\" width=\"28\" height=\"28\" alt=\"\"\u003e | **OpenReader** | Private PDF tools for your computer. | [Repo](https://github.com/sparshsam/openreader) · [Web](https://reader.kovina.org) |\n| \u003cimg src=\"assets/icons/openreader.svg\" width=\"28\" height=\"28\" alt=\"\"\u003e | **OpenLedger** | Local-first personal finance ledger. No noise. | [Repo](https://github.com/sparshsam/openledger) · [Web](https://ledger.kovina.org) |\n| \u003cimg src=\"assets/icons/openreader.svg\" width=\"28\" height=\"28\" alt=\"\"\u003e | **OpenProof** | Privacy-first proof-of-existence for files, onchain. | [Repo](https://github.com/sparshsam/openproof) · [Web](https://proof.kovina.org) |\n| \u003cimg src=\"assets/icons/openreader.svg\" width=\"28\" height=\"28\" alt=\"\"\u003e | **OpenSend** | Free, ad-free, open-source file sharing between devices. | [Repo](https://github.com/sparshsam/opensend) |\n| \u003cimg src=\"assets/icons/openreader.svg\" width=\"28\" height=\"28\" alt=\"\"\u003e | **OpenSnap** | Minimal always-on-top screenshot widget for Windows. | [Repo](https://github.com/sparshsam/opensnap) |\n| \u003cimg src=\"assets/icons/openreader.svg\" width=\"28\" height=\"28\" alt=\"\"\u003e | **OpenJournal** | Privacy-first local activity journal for Windows. | [Repo](https://github.com/sparshsam/openjournal) |\n| \u003cimg src=\"assets/icons/openreader.svg\" width=\"28\" height=\"28\" alt=\"\"\u003e | **OpenPalette** | Local-first color studio — harmonies, tokens, accessibility. | [Repo](https://github.com/sparshsam/openpalette) |\n| \u003cimg src=\"assets/icons/openreader.svg\" width=\"28\" height=\"28\" alt=\"\"\u003e | **OpenScrabble** | Multiplayer Scrabble with chat and shared boards. | [Repo](https://github.com/sparshsam/openscrabble) |\n| \u003cimg src=\"assets/icons/openreader.svg\" width=\"28\" height=\"28\" alt=\"\"\u003e | **OpenSprout** | Privacy-minded plant care dashboard and watering logs. | [Repo](https://github.com/sparshsam/opensprout) |\n\n---\n\n*Last updated: June 2026*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsparshsam%2Fopenreader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsparshsam%2Fopenreader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsparshsam%2Fopenreader/lists"}