{"id":31665304,"url":"https://github.com/zrg-team/memorall","last_synced_at":"2026-04-14T06:32:24.617Z","repository":{"id":315297715,"uuid":"1054381638","full_name":"zrg-team/memorall","owner":"zrg-team","description":"Local-first AI extension that turns what you read into a searchable knowledge graph with hybrid search, temporal context, and proactive recall—fully private.","archived":false,"fork":false,"pushed_at":"2026-04-12T09:46:01.000Z","size":98564,"stargazers_count":8,"open_issues_count":0,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-12T11:21:52.438Z","etag":null,"topics":["agent","agentic-ai","ai","browser-extension","context","embeddings","knowledge-graph","langgraph","local-first","memory","pglite","rag","wasm","webllm","wllama"],"latest_commit_sha":null,"homepage":"https://chromewebstore.google.com/detail/memorall/kcienfpnencfkniagcjlpaehofblfhab","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zrg-team.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":null,"dco":null,"cla":null}},"created_at":"2025-09-10T18:50:06.000Z","updated_at":"2026-04-12T09:45:48.000Z","dependencies_parsed_at":"2025-10-16T12:07:26.479Z","dependency_job_id":"efa4f128-d4dc-4adf-a08d-12e492641131","html_url":"https://github.com/zrg-team/memorall","commit_stats":null,"previous_names":["zrg-team/memorall"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/zrg-team/memorall","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zrg-team%2Fmemorall","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zrg-team%2Fmemorall/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zrg-team%2Fmemorall/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zrg-team%2Fmemorall/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zrg-team","download_url":"https://codeload.github.com/zrg-team/memorall/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zrg-team%2Fmemorall/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31785566,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T02:24:21.117Z","status":"ssl_error","status_checked_at":"2026-04-14T02:24:20.627Z","response_time":153,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["agent","agentic-ai","ai","browser-extension","context","embeddings","knowledge-graph","langgraph","local-first","memory","pglite","rag","wasm","webllm","wllama"],"created_at":"2025-10-07T21:54:13.542Z","updated_at":"2026-04-14T06:32:24.611Z","avatar_url":"https://github.com/zrg-team.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"images/origin.png\" alt=\"Memorall icon\" width=\"128\" /\u003e\n\n# Memorall\n\n### The browser is your agent's full workspace.\n\nMemorall turns your browser into a local-first agent workspace with memory, tools, and model choice.\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n[![Extension.js](https://img.shields.io/badge/Built%20with-Extension.js-0971fe)](https://extension.js.org)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.x-3178C6?logo=typescript\u0026logoColor=white)](https://www.typescriptlang.org/)\n[![React](https://img.shields.io/badge/React-19-20232A?logo=react\u0026logoColor=61DAFB)](https://react.dev/)\n[![Local First](https://img.shields.io/badge/AI-Local--First-2f855a)](https://github.com/zrg-team/memorall)\n[![Offline First](https://img.shields.io/badge/Architecture-Offline--First-0f766e)](https://github.com/zrg-team/memorall)\n[![Agent Tools](https://img.shields.io/badge/Agent-Sandbox%20%2B%20Browser-c05621)](https://github.com/zrg-team/memorall)\n[![Custom Flows](https://img.shields.io/badge/Flows-Customizable-7c3aed)](https://github.com/zrg-team/memorall)\n\n[Quick Start](#quick-start) • [Agent Power](#agent-power) • [Custom Agents](#custom-agents) • [Architecture](#architecture-at-a-glance) • [Documentation](#documentation-map) • [GitHub](https://github.com/zrg-team/memorall)\n\n\u003c/div\u003e\n\n## 🧠 Why Memorall\n\nMemorall is built for people who do serious work in tabs. Instead of treating the browser as disposable context, it turns pages, selections, documents, and workspaces into durable memory that you can search, inspect, and chat with later.\n\nWhat makes the current app distinctive:\n\n- 🏠 Local-first by default. The app can run with in-browser runtimes such as Wllama, WebLLM, and Transformers, while still supporting OpenAI, OpenRouter, LM Studio, and Ollama when you want external or local server-backed models.\n- 🤖 More than a chat window. The shipped UI includes a document library, topic system, knowledge graph explorer, model manager, debug tools, and advanced flow/activity surfaces.\n- 🌐 Embedded where work happens. The content script can open a page-aware assistant, capture selected text, visible content, page HTML, and screenshots, and route saved content into a topic.\n- ⚙️ Built for long-running work. Heavy operations are moved off the UI thread through background jobs, offscreen/runtime services, and proxy/main service pairs.\n- 🔐 Privacy-aware. Supabase auth is optional, the core app can run local-only, and encrypted provider credentials are restored through the app's passkey flow.\n\n\u003ca id=\"agent-power\"\u003e\u003c/a\u003e\n## ⚡ Agent Power\n\nMemorall's agent is designed to be powerful on your machine, not just impressive in a demo.\n\n- 🧪 Sandbox container access. The agent can use the browser-hosted sandbox runtime to execute Node.js code, install npm packages, work with files, start backend servers, and render UI/server output for iterative workflows such as Vite-style app work.\n- 🌐 Browser access. The agent can open pages, keep an active browser session, inspect DOM state, search rendered HTML, wait for selectors, and perform DOM actions instead of working from raw text alone.\n- 🧩 Custom flows and agents. The flow layer is not fixed to one canned assistant. Memorall ships configurable graph-based flows, feature steps, and a visual flow builder for custom agent behavior.\n- 📁 Workspace access. The agent is not isolated from your knowledge base. It can work across the document library and writable workspace trees, giving it access to documents, notes, and workspace files.\n- 🛠️ MCP integration is WIP. The repository already includes MCP adapter groundwork, but this should be treated as in-progress rather than a stable, documented feature today.\n\n## Demo\n\n![Memorall demo](docs/assets/demo.gif)\n\n![Memorall screenshot](docs/assets/screenshot.jpg)\n\n## ✨ Core Capabilities\n\n| Area | Capabilities |\n| --- | --- |\n| Chat workspace | Stream conversations, switch between chat and knowledge-aware flows, choose topics, manage agent settings, and inspect active runtime sessions for sandbox/browser tooling. |\n| In-page assistant | Open an embedded chat overlay on any page, send selected text or extracted page context into chat, capture screenshots, and jump to the full app when needed. |\n| Topic capture | Save selected content or full-page context into a topic from the page itself using the embedded topic selector. |\n| Document library | Manage two trees: stored documents and writable workspace files. Upload/create/rename/move/delete/download files, preview PDFs/images/Excel, edit text/Markdown, and tag files with topics. |\n| Knowledge conversion | Convert text, Markdown, PDF pages, and Excel sheets into topic-scoped knowledge graph data through the background job pipeline. |\n| Knowledge graph | Explore nodes and edges in a D3 graph, filter by topic, search nodes, and curate graph data directly from the graph view. |\n| Models and embeddings | Load local/browser models, connect remote providers, inspect current model status, and switch embedding sizes with live reload support. |\n| Agent tooling | Let the agent use browser tools, filesystem-style tools, and sandbox runtime tools instead of responding with plain text only. |\n| Diagnostics | Query the database, inspect vector similarity results, browse/export logs, and monitor long-running jobs from the UI. |\n| Power-user routes | Use a visual flow builder and an activity timeline that can feed captured activity sessions back into AI analysis. |\n\n## 🕸️ Memory And Knowledge Context\n\nMemorall is not just a retrieval cache. It is meant to build an evolving memory context that the agent can follow over time.\n\n- Topic-scoped knowledge graphs let the system keep relationships, facts, and sources grouped around what you are actually working on.\n- Document-to-knowledge conversion turns notes, Markdown files, PDF pages, and Excel sheets into graph-ready context instead of leaving them as disconnected files.\n- Hybrid retrieval combines structured storage, text matching, and embeddings so the agent can recall both exact facts and semantically related context.\n- The result is a stronger \"knowledge context\" for the agent: not only what you saved, but what it means, how it connects, and where it came from.\n- This makes the assistant better at staying aligned with your projects, vocabulary, past work, and long-running research threads.\n\n\u003ca id=\"custom-agents\"\u003e\u003c/a\u003e\n## 🧩 Custom Agents\n\nMemorall is not a fixed assistant — it is a foundation for building any agent you need.\n\nEvery agent is a **graph you fully own**: define any nodes, any flow logic, any tools, any conditions. Plug in new graphs, tools, or capability steps without touching existing code. Toggle features like web browsing, sandbox execution, or filesystem access per-agent at runtime.\n\nThe shipped graphs are examples of what the system can do, not the limit of what it supports.\n\n→ Architecture and extension guide: [docs/customize-agents.md](./docs/customize-agents.md)\n\n## 💾 Local-First Architecture\n\nOffline-first in Memorall is architectural, not decorative. The product is fully functional without any external service.\n\n- Local/browser-hosted model runtimes — Wllama, WebLLM, Transformers — are first-class citizens, not fallbacks.\n- PGlite keeps the entire knowledge store in-browser; no server database required.\n- Background jobs and offscreen services keep heavy embedding and LLM work local to the extension runtime.\n- Supabase auth is optional. The app runs local-only by default; Supabase becomes available when configured.\n- Remote providers — OpenAI, OpenRouter, LM Studio, Ollama — are available when you want them, not when you need them.\n- Embedding sizes: small `384d`, medium `768d`, and large `1536d` (remote-backed).\n- Storage: PGlite + Drizzle with vectors, migrations, topics, conversations, sources, nodes/edges, activities, and flow-builder state.\n\n---\n\n## 🗂️ Product Surfaces\n\n### Main app surfaces\n\nRoutes currently wired in [`src/main/App.tsx`](./src/main/App.tsx):\n\n- `/` - chat workspace\n- `/documents` - document and workspace library\n- `/knowledge-graph` - graph explorer\n- `/llm` - model and provider management\n- `/embeddings` - vector search/debug view\n- `/database` - database inspector/query builder\n- `/logs` - log viewer/export surface\n- `/auth` - optional Supabase auth flow\n- `/activities` - activity timeline and AI session analysis\n- `/flow-builder` - visual flow authoring surface\n\n### Embedded page surfaces\n\nThe content script and embedded pages provide two user-facing overlays:\n\n- [`src/embedded/pages/EmbeddedChat.tsx`](./src/embedded/pages/EmbeddedChat.tsx) - a page-aware chat panel that can include selected text, visible content, full-page content, HTML structure, and captured images as context\n- [`src/embedded/pages/TopicSelector.tsx`](./src/embedded/pages/TopicSelector.tsx) - a lightweight topic picker for saving page content into the knowledge system\n\n### App shell\n\n[`src/main/components/Layout.tsx`](./src/main/components/Layout.tsx) shows what the shared shell actually supports today:\n\n- primary navigation for chat, documents, knowledge graph, and models\n- a debug dropdown for embeddings, database, and logs\n- theme switching\n- English and Vietnamese UI switching\n- embedding-size management\n- process monitoring and standalone launch from popup mode\n- optional account sign-in/sign-out\n\n\u003ca id=\"architecture-at-a-glance\"\u003e\u003c/a\u003e\n## 🏗️ Architecture At A Glance\n\n```mermaid\ngraph TD\n  PAGE[\"Web pages\"] --\u003e|content extraction, overlays, activity tracking| CONTENT[\"content.ts + src/embedded/*\"]\n  CONTENT --\u003e|messages, extracted payloads, web DOM actions| BG[\"src/background.ts\"]\n\n  UI[\"Popup + standalone app\"] --\u003e|proxy services + jobs| JOBS[\"Background jobs\"]\n  BG --\u003e|relay, context menus, watchdog| JOBS\n\n  JOBS --\u003e OFF[\"Offscreen/runtime processing\"]\n  OFF --\u003e SM[\"ServiceManager\"]\n\n  SM --\u003e DB[\"Database service: PGlite + Drizzle\"]\n  SM --\u003e EMB[\"Embedding service\"]\n  SM --\u003e LLM[\"LLM service\"]\n  SM --\u003e FLOWS[\"Flows + Flow Builder\"]\n\n  FLOWS --\u003e TOOLS[\"Documents FS, workspace FS, web browser tools, Node sandbox\"]\n```\n\nThe runtime split in the current codebase is deliberate:\n\n- UI surfaces use lightweight proxy services so popup and standalone stay responsive.\n- heavy database, embedding, and LLM work runs in the runtime/offscreen side managed through [`src/services/service-manager.ts`](./src/services/service-manager.ts)\n- cross-context execution goes through [`src/services/background-jobs`](./src/services/background-jobs)\n- the MV3 background worker in [`src/background.ts`](./src/background.ts) stays thin: it registers listeners synchronously, manages context menus, relays browser work, and watches offscreen health\n\n## 📦 Core `src/` Layout\n\n```text\nsrc/\n  background.ts\n  content.ts\n  popup.tsx\n  standalone.tsx\n  background/          MV3 worker helpers, messaging, menus, watchdogs\n  embedded/            in-page assistant, topic selector, extractors, trackers\n  main/                React pages, modules, layout, auth, documents, chat UI\n  services/            shared runtime services and infrastructure\n    background-jobs/   cross-context job queue and handlers\n    database/          PGlite, Drizzle schema, entities, migrations, RPC bridge\n    embedding/         local and remote embedding implementations\n    filesystem/        document/workspace virtual filesystem\n    flows/             graph runtime, step/tool registry, flow builder catalog\n    llm/               local/browser/API-backed model adapters\n    sandbox-container/ browser-hosted execution runtime\n    shared-storage/    cross-context shared state\n    web-browser/       browser session and DOM automation service\n```\n\nIf you want the shortest accurate mental model:\n\n- [`src/main`](./src/main) is the user application\n- [`src/embedded`](./src/embedded) is the page-integrated assistant/capture layer\n- [`src/background`](./src/background) is the MV3 coordination layer\n- [`src/services`](./src/services) is the real engine room\n\n\u003ca id=\"documentation-map\"\u003e\u003c/a\u003e\n## 📚 Documentation Map\n\nThese are the current docs that match the codebase today:\n\n### Architecture and services\n\n- [Services overview](./docs/services.md)\n- [Background jobs](./docs/background-jobs.md)\n- [Shared storage](./docs/shared-storage.md)\n- [Database service](./docs/database-service.md)\n- [Embedding service](./docs/embedding-service.md)\n- [LLM service](./docs/llm-service.md)\n- [Flows service](./docs/flows-service.md)\n- [Customize agents](./docs/customize-agents.md)\n\n### Knowledge system\n\n- [Knowledge graph service and flow](./docs/knowledge-graph-service.md)\n- [Knowledge RAG flow](./docs/knowledge-rag-service.md)\n- [Smart retrieval notes](./docs/graph/smart_retrieval.md)\n- [MMR usage notes](./docs/graph/mmr_usage.md)\n\n### Auth, storage, and migration\n\n- [Supabase docs index](./docs/supabase/index.md)\n- [Supabase quickstart](./docs/supabase/quickstart.md)\n- [Supabase setup](./docs/supabase/setup.md)\n- [Supabase implementation](./docs/supabase/implementation.md)\n- [Migration notes](./docs/migration.md)\n\nNotes about stale docs from older README versions:\n\n- `knowledge-pipeline.md` has been replaced by [`docs/knowledge-graph-service.md`](./docs/knowledge-graph-service.md)\n- `remember-service.md` no longer exists as a standalone current doc\n\n\u003ca id=\"quick-start\"\u003e\u003c/a\u003e\n## 🚀 Quick Start\n\n```bash\ngit clone https://github.com/zrg-team/memorall.git\ncd memorall\nnpm install\n```\n\nThen:\n\n1. Create `.env` from `.env.example`.\n2. Set `CHROME_PATH` if you want to use `npm run dev`.\n3. Optionally add Supabase keys, or configure Supabase later through the app.\n4. Build or run the extension.\n\nRecommended Chrome build flow:\n\n```bash\nnpm run build:chrome\n```\n\nLoad the unpacked extension from `dist/chrome`.\n\nIf you want live development:\n\n```bash\nnpm run dev\n```\n\n## 🛠️ Development Commands\n\n| Command | Purpose |\n| --- | --- |\n| `npm run dev` | Hot-reload development build for Chromium (`CHROME_PATH` required). |\n| `npm run build` | Default production build. |\n| `npm run build:chrome` | Build Chrome MV3 output in `dist/chrome`. |\n| `npm run build:edge` | Build Edge MV3 output. |\n| `npm run build:firefox` | Build Firefox MV3 output. |\n| `npm run build:all` | Build Chrome, Edge, and Firefox outputs. |\n| `npm run type-check` | Run TypeScript without emitting files. |\n| `npm run lint` | Run the Extension.js lint step. |\n| `npm run format` | Format `src` and `scripts` with Biome. |\n| `npm run package` | Build the publish/package output. |\n\n## 🤝 Contributing\n\nIssues and pull requests are welcome at [github.com/zrg-team/memorall](https://github.com/zrg-team/memorall).\n\nWhen contributing, it helps to understand the runtime split first:\n\n- UI and interaction work usually lives in [`src/main`](./src/main) or [`src/embedded`](./src/embedded)\n- extension wiring lives in [`src/background`](./src/background), [`src/background.ts`](./src/background.ts), and [`src/content.ts`](./src/content.ts)\n- anything stateful or heavy likely belongs in [`src/services`](./src/services)\n\n## 📄 License\n\nMemorall is licensed under the [MIT License](LICENSE).\n\n\u003cdiv align=\"center\"\u003e\n\nBuilt on Extension.js, React, TypeScript, PGlite, and browser-native AI runtimes.\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzrg-team%2Fmemorall","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzrg-team%2Fmemorall","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzrg-team%2Fmemorall/lists"}