{"id":50780057,"url":"https://github.com/eurfelux/marginalia","last_synced_at":"2026-06-12T03:00:26.643Z","repository":{"id":361564928,"uuid":"1254918210","full_name":"EurFelux/marginalia","owner":"EurFelux","description":"Talk to AI in the margins of your ebooks — local‑first, bilingual ePub/PDF reader with contextual assistants.","archived":false,"fork":false,"pushed_at":"2026-06-07T14:42:16.000Z","size":4781,"stargazers_count":0,"open_issues_count":29,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-07T15:06:30.530Z","etag":null,"topics":["ai-reader","bilingual","desktop-app","electron","epub-reader","local-first","react","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EurFelux.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"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-31T06:53:18.000Z","updated_at":"2026-06-07T14:24:46.000Z","dependencies_parsed_at":null,"dependency_job_id":"29c4cf28-f12b-4cf3-874b-d3f27b0a9d24","html_url":"https://github.com/EurFelux/marginalia","commit_stats":null,"previous_names":["eurfelux/marginalia"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/EurFelux/marginalia","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EurFelux%2Fmarginalia","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EurFelux%2Fmarginalia/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EurFelux%2Fmarginalia/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EurFelux%2Fmarginalia/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EurFelux","download_url":"https://codeload.github.com/EurFelux/marginalia/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EurFelux%2Fmarginalia/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34226629,"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-12T02:00:06.859Z","response_time":109,"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":["ai-reader","bilingual","desktop-app","electron","epub-reader","local-first","react","typescript"],"created_at":"2026-06-12T03:00:18.581Z","updated_at":"2026-06-12T03:00:26.626Z","avatar_url":"https://github.com/EurFelux.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"assets/icon.svg\" width=\"128\" alt=\"Marginalia app icon\"\u003e\n\n# Marginalia\n\n**Talk to AI in the margins.**\n\nA desktop AI reader for ePub and PDF books.\n\nEnglish · [简体中文](README.zh-CN.md)\n\n\u003c/div\u003e\n\n![Reading in Marginalia — select a passage and the AI answers in the side panel, context in hand](assets/reader.png)\n\n## What is Marginalia\n\nMarginalia puts AI right in the margins of your reading. Open an ePub or PDF, hit a sentence you want to dig into, **select it**, and an assistant joins you in the side panel — already holding the context of the book. Explain an allusion, translate a passage, summarize the thread, or just ask. No breaking your flow, no copy-pasting into another window.\n\nIt's local-first, bring-your-own-key, and tied to no single model provider — your books and notes stay quietly on your own machine.\n\n## ✨ Features\n\n### 🪄 Ask by selecting — the core\n\nSelect text in an ePub or text-layer PDF and a floating toolbar appears: **Explain / Translate / Summarize** in one click, or hit \"Ask AI\" for an open question. Answers **stream** into the side panel, so you can read and ask in the same breath.\n\n### 🧩 Transparent context\n\nEvery question ships its context as visible, toggleable **chips**: your exact selection, its surrounding paragraph, the chapter summary, the whole-book summary — each labeled, each switchable. **You always know what the AI sees.**\n\n### 🖍️ Highlights \u0026 notes\n\nFive highlight colors plus underline, with sticky notes on any passage. Every annotation collects into a side-panel list in reading order — one click jumps you back to the spot.\n\n### 📖 Immersive reading\n\nReal, continuously-scrolling reading that remembers and restores your place. ePub gets tuneable typography; PDF gets fit-to-width rendering, zoom controls, clickable links, and text-layer selection when the document provides text. Switch between dark / light / system themes anytime.\n\n### 🗂️ Cover-wall library\n\nAn Apple Books-style cover wall to spot your books at a glance. **Drag an ePub or PDF into the window** to import it; books without a cover get a tasteful generated tile.\n\n![The library — an Apple Books-style cover wall](assets/library.jpg)\n\n### 🔌 Bring your own key, any provider\n\nConnect OpenAI, Anthropic, Google, or any **OpenAI-compatible endpoint** (self-hosted gateway or proxy).\n\n### 🌍 Local-first · bilingual\n\nA bilingual interface (English / 简体中文) that follows your system language. Everything lives on your machine — no uploads, no account required.\n\n## 📦 Installation\n\n### Homebrew (recommended)\n\n```bash\nbrew tap eurfelux/tap\nbrew install --cask marginalia\n```\n\nThe cask clears the quarantine flag for you, so the app opens right away — no Gatekeeper hoops.\n\n### Manual download\n\nGrab the latest `.dmg` from [Releases](https://github.com/EurFelux/marginalia/releases), open it, and drag Marginalia into Applications.\n\n\u003e [!IMPORTANT]\n\u003e **macOS will warn that the app \"cannot be verified\"** on first launch — Marginalia is ad-hoc signed but not notarized by Apple (that requires a paid developer certificate). To open it anyway:\n\u003e\n\u003e 1. Double-click the app once (the warning appears) — then go to **System Settings → Privacy \u0026 Security**, scroll down, and click **Open Anyway**.\n\u003e 2. Or, from a terminal: `xattr -d com.apple.quarantine /Applications/marginalia.app`\n\u003e\n\u003e The app is open source — you can always audit the code and build it yourself with `pnpm make`.\n\n## 🪄 A glance at getting started\n\n1. **Drop in a book** — drag an ePub or PDF into the library and start reading.\n2. **Select text, hit \"Ask AI\"** — the side panel picks up the passage's context automatically.\n3. **Watch the answer stream in** — read, annotate, follow up, and summarize, all in one window.\n\n## 🧭 Principles\n\n- **Transparent context** — every piece of context sent to the AI is shown and switchable.\n- **Local-first** — books, progress, notes, and conversations stay on your own machine.\n- **No lock-in** — bring your own API key, switch models and providers freely.\n\n## License\n\n[GPL-3.0-or-later](LICENSE) © 2026 eurfelux\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feurfelux%2Fmarginalia","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feurfelux%2Fmarginalia","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feurfelux%2Fmarginalia/lists"}