{"id":51670273,"url":"https://github.com/darshi1337/apogee","last_synced_at":"2026-07-15T00:00:18.401Z","repository":{"id":361251642,"uuid":"1249973862","full_name":"darshi1337/apogee","owner":"darshi1337","description":"Apogee is a browser extension that uses large language models to summarize articles, videos, emails, PDFs, and more. It runs entirely on-device using WebGPU or through a local Ollama backend, ensuring your content never leaves your machine.","archived":false,"fork":false,"pushed_at":"2026-07-14T17:58:55.000Z","size":1316,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-14T18:23:24.930Z","etag":null,"topics":["addon","browser","extension-mozilla","firefox","firefox-addon","firefox-customization","firefox-extension","firefox-theme","firefox-tweaks","firefox-webextension","tabs","webextension"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/darshi1337.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":null,"dco":null,"cla":null}},"created_at":"2026-05-26T07:33:58.000Z","updated_at":"2026-07-14T17:59:35.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/darshi1337/apogee","commit_stats":null,"previous_names":["darshi1337/apogee"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/darshi1337/apogee","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darshi1337%2Fapogee","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darshi1337%2Fapogee/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darshi1337%2Fapogee/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darshi1337%2Fapogee/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/darshi1337","download_url":"https://codeload.github.com/darshi1337/apogee/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darshi1337%2Fapogee/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35483857,"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-07-14T02:00:06.603Z","response_time":114,"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":["addon","browser","extension-mozilla","firefox","firefox-addon","firefox-customization","firefox-extension","firefox-theme","firefox-tweaks","firefox-webextension","tabs","webextension"],"created_at":"2026-07-15T00:00:17.683Z","updated_at":"2026-07-15T00:00:18.353Z","avatar_url":"https://github.com/darshi1337.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Apogee\n\n\u003cpicture\u003e\n  \u003csource\n    media=\"(prefers-color-scheme: dark)\"\n    srcset=\"assets/dark_main_logo.png\"\u003e\n  \u003csource\n    media=\"(prefers-color-scheme: light)\"\n    srcset=\"assets/light_main_logo.png\"\u003e\n  \u003cimg\n    alt=\"Apogee Demo\"\n    src=\"assets/light_main_logo.png\"\u003e\n\u003c/picture\u003e\n\n\u003cdiv align=\"center\"\u003e\n\nPrivate, in-browser AI summarizer powered by WebGPU and Ollama.\n\n\u003c/div\u003e\n\n**Apogee** is an AI browser assistant for articles, videos, emails, and more.\nIt runs **entirely in your browser** via WebGPU, no backend, no API keys,\nno cloud. Just install the extension and go.\n\nFor power users, Apogee also supports a local Ollama backend with larger models.\n\n**TL;DR**: Apogee is an offline-first, private AI assistant that runs entirely in your browser using WebGPU, requiring zero cloud dependencies or API keys. It allows users to summarize pages, chat with articles, and process text with complete privacy. For power users, it also features a fallback to local Ollama instances to run larger models. It is designed as a fully local, privacy-respecting alternative to cloud-dependent solutions.\n\n## Inspiration: Orbit (Killed by Mozilla)\n\nApogee was inspired by Mozilla's discontinued **Orbit** project (read the [Review of Orbit by Mozilla](https://matduggan.com/review-of-orbit-by-mozilla/)). Orbit attempted to provide browser-based page summarization, but it relied on centralized API servers (Mistral 7B) and cached summaries on the server side using endpoints like `store_result`.\n\nApogee fixes Orbit's architectural and privacy flaws by being fully local-first:\n\n- **Zero Server Overhead**: Instead of routing queries through remote cloud APIs, Apogee performs tokenization and inference completely on-device via WebGPU.\n- **No Data Leaks**: Apogee does not send page content or generated summaries to any external endpoint—your data never leaves your machine.\n- **Corporate Independence**: Because Apogee has no server dependencies or cloud infrastructure to pay for, it can never be shut down or sunset.\n\n## How It Works\n\nApogee uses [WebLLM](https://github.com/mlc-ai/web-llm) to run quantized\nlanguage models directly in your browser using WebGPU. The first time you use\nit, the model weights (~700 MB – 2 GB depending on your choice) are downloaded\nand cached locally. After that, everything runs offline.\n\n## Quick Start\n\n1. **Install the extension** (see below).\n2. Open any webpage.\n3. Click the Apogee icon → **Summarize this page**.\n4. On first use, the model downloads automatically. After that it's instant.\n\nThat's it. No backend installation, no terminal commands.\n\n### Two Ways to Use Apogee\n\nApogee offers two modes of operation to balance ease-of-use and raw capabilities:\n\n| WebLLM (In-Browser AI)                                          | Ollama (Local Backend)                                           |\n| --------------------------------------------------------------- | ---------------------------------------------------------------- |\n| **Model Size**: Small, fast models (~700 MB – 2.2 GB)           | **Model Size**: Larger, more capable models (4B–8B+)             |\n| **Setup**: Zero setup required; automatic download on first run | **Setup**: Requires installing Ollama \u0026 Apogee Python backend    |\n| **Execution**: Runs directly in the browser via WebGPU          | **Execution**: Runs locally on your machine via localhost server |\n| **Offline**: Fully offline after model weights are cached       | **Offline**: Fully offline, communicating over `127.0.0.1`       |\n\n## Supported In-Browser Models\n\n| Model                   | Download Size | Best For                   |\n| ----------------------- | ------------- | -------------------------- |\n| Qwen 2.5 1.5B (default) | ~900 MB       | Multilingual summarization |\n| SmolLM2 1.7B            | ~1 GB         | General tasks              |\n| Llama 3.2 1B            | ~700 MB       | Lightweight, fast          |\n| Phi 3.5 Mini            | ~2.2 GB       | Stronger reasoning         |\n\n## Supported Ollama Models\n\n| Model          | Size | Command to pull              | Recommended For               |\n| -------------- | ---- | ---------------------------- | ----------------------------- |\n| Gemma 3        | ~4B  | `ollama pull gemma3:4b`      | Excellent lightweight tasks   |\n| Qwen 3 8B      | ~8B  | `ollama pull qwen3:8b`       | Multi-turn chat \u0026 reasoning   |\n| Mistral Latest | ~7B  | `ollama pull mistral:latest` | General language capabilities |\n| Llama 3.1 8B   | ~8B  | `ollama pull llama3.1:8b`    | General reasoning \u0026 coding    |\n\n## Browser Requirements\n\n- **Chrome 113+** or **Edge 113+** or **Dia** (WebGPU required)\n- A GPU with WebGPU support (most modern GPUs)\n- Firefox: WebGPU is not yet stable so use **Local Ollama** mode instead\n\n## Install the Extension\n\n### Chrome / Dia\n\n1. Download the packaged extension `.zip` from [Releases](https://github.com/darshi1337/apogee/releases).\n2. Extract/unzip the downloaded `.zip` file on your machine.\n3. Open the browser and go to `chrome://extensions` or `dia://extensions/`.\n4. Enable **Developer mode** (toggle in the top-right).\n5. Click **Load unpacked** and select the extracted folder (containing `manifest.json`, not the ZIP file itself).\n\n#### Build from Source (Developer Option)\n\n1. Clone this repository.\n2. `cd apogee-extension \u0026\u0026 npm install \u0026\u0026 npm run build`\n3. Go to `chrome://extensions` or `dia://extensions/` and enable **Developer mode**.\n4. Click **Load unpacked** and select the `apogee-extension/dist/chrome` folder.\n\n   \u003e `npm run build` produces both `dist/chrome` and `dist/firefox`. Use `dist/chrome` for Chrome/Edge/Dia and `dist/firefox` for Firefox. You can also build a single target with `npm run build:chrome` or `npm run build:firefox`.\n\n### Firefox\n\nYou can install Apogee directly from [Mozilla Add-ons](https://addons.mozilla.org/en-US/firefox/addon/apogeeext/) or download the package from [Releases](https://github.com/darshi1337/apogee/releases).\n\n_Note: WebGPU is not yet stable in Firefox, so switch to **Local Ollama** mode in settings after installation._\n\n## Advanced: Local Ollama Backend\n\nIf you prefer running larger models (8B+) locally through Ollama, Apogee still\nsupports that as a fallback.\n\n### 1. Install Ollama\n\nInstall from https://ollama.com, then:\n\n```bash\nollama pull gemma3:4b   # and qwen3:8b, mistral:latest, llama3.1:8b\n```\n\n### 2. Install and Start Apogee Backend\n\nTo use the Local Ollama mode, install the Apogee backend package. Download the latest release package distribution file (`apogee_browser-0.1.4-py3-none-any.whl` or `apogee_browser-0.1.4.tar.gz`) from releases, or clone this repository and install it locally:\n\n```bash\npip install apogee_browser-0.1.4-py3-none-any.whl\napogee setup\napogee doctor\napogee\n```\n\nOr install from source:\n\n```bash\ncd apogee-backend\npip install .\napogee setup\napogee\n```\n\n### CLI Commands Reference\n\nThe backend CLI provides commands to set up, verify, and run the service:\n\n- **`apogee`**: Starts the local FastAPI backend server on `127.0.0.1:8000` (configurable via `APOGEE_PORT`).\n- **`apogee setup`**: Checks if Ollama is installed and automatically pulls the recommended models (`gemma3:4b`, `qwen3:8b`, `mistral:latest`, `llama3.1:8b`).\n- **`apogee doctor`**: Runs local diagnostics to verify the Ollama installation, check connection status, and list installed models.\n\n### 3. Switch the Extension\n\nOpen the extension → Settings → select **Local Ollama** → set the URL\n(defaults to `http://127.0.0.1:8000`).\n\nUpdate the extension backend URL to match.\n\n## Performance Benchmarks\n\n### In-Browser AI (WebGPU)\n\n- **Generation Throughput**: ~30–50 tokens/s (GPU dependent)\n- **Model Cold-load**: ~1–3 seconds (once cached in browser storage)\n- **First-run Cache Download**: ~1–3 minutes depending on network bandwidth (to download the ~700 MB – 2.2 GB model weights)\n\n### Local Ollama Backend\n\nMeasured locally on an Apple M2 (`gemma3:4b`, GPU via Metal):\n\n| Metric                              | Value                              |\n| ----------------------------------- | ---------------------------------- |\n| Generation throughput               | ~73 tokens/s                       |\n| Model cold-load                     | ~0.25 s                            |\n| Short page / question               | ~1–1.5 s end to end                |\n| Long page (~40k chars, multi-chunk) | first bullets in ~2 s, ~12 s total |\n\n## Privacy \u0026 Permissions\n\nPrivacy is the core pillar of Apogee. The key guarantee is simple: **your page content and the summaries/answers generated from it are never sent to any cloud service or third party.** Inference happens on your own device (WebGPU) or your own machine (`127.0.0.1` Ollama). The details below are precise about the few network requests that do occur and what is kept on disk.\n\n- **Where inference happens**:\n  - **In-Browser mode**: Tokenization and inference run entirely on your local device's GPU via WebGPU. Your page content and summaries are never transmitted anywhere.\n  - **Local Ollama mode**: Page content travels exclusively over local loopback (`127.0.0.1`) to your own Ollama service, never to the cloud.\n- **The only outbound network requests Apogee makes**:\n  - **Model weights** are downloaded once from **Hugging Face** (in-browser mode) or pulled by **Ollama** (local mode), then cached and reused offline. This transfers no page content, only the model files themselves.\n  - **YouTube transcripts**: on a YouTube page, the extractor fetches that video's caption track from YouTube/Google (the site you're already on) to feed the transcript to the model. It is restricted to genuine `youtube.com`/`googlevideo.com` hosts.\n  - That's it — there are no other external calls.\n- **No Telemetry, Tracking, or Analytics**: Apogee includes no Google Analytics, Mixpanel, crash-reporting SDKs, or telemetry of any kind. No usage data is collected.\n- **What's stored on your device (and how to control it)**:\n  - To make reopening the popup instant, Apogee caches **summaries, suggested prompts, extracted page text (for articles), and your recent questions/answers** in local extension storage (`chrome.storage.local`), never transmitted, capped in size, and keyed by a hash of the URL (so URLs with tokens aren't stored in plaintext keys).\n  - **Sensitive sites are never cached**, pages on known webmail/messaging hosts (Gmail, Outlook, Proton Mail, Yahoo Mail, Google Messages, WhatsApp Web) are always treated as ephemeral, regardless of your setting.\n  - **Settings → Privacy** lets you switch to **\"Don't save (this session only)\"** so nothing page-derived is written to disk, and **\"Clear cached summaries \u0026 page data\"** wipes all cached content on demand (your preferences are kept).\n- **Browser Permission Sandboxing**:\n  - **`activeTab` + `scripting`**: Apogee cannot read your browsing history or inspect other open tabs. It reads the _currently active tab_ only when you click \"Summarize\" or \"Ask\".\n  - **`storage`**: Holds your preferences plus the local cache described above.\n- **Model weights** are stored in standard browser cache structures locally and never transmitted.\n\n## Development\n\n```bash\ncd apogee-extension\nnpm install\nnpm run dev    # watch mode — rebuilds on changes\n```\n\nLoad the `dist/chrome` folder (or `dist/firefox`) as an unpacked extension in your browser.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarshi1337%2Fapogee","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdarshi1337%2Fapogee","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarshi1337%2Fapogee/lists"}