{"id":45739026,"url":"https://github.com/abhinandan-khurana/gitstarrecall","last_synced_at":"2026-03-04T13:00:39.024Z","repository":{"id":338881092,"uuid":"1159545516","full_name":"Abhinandan-Khurana/GitStarRecall","owner":"Abhinandan-Khurana","description":"GitStarRecall is a local-first AI enabled web app that turns your GitHub stars into a searchable memory system on your browser locally.","archived":false,"fork":false,"pushed_at":"2026-02-25T11:37:00.000Z","size":86696,"stargazers_count":1,"open_issues_count":6,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-25T15:09:26.250Z","etag":null,"topics":["ai","ai-search","developer-tools","github-stars","llm","local-first","local-first-ai","memory","ollama","privacy","privacy-focused","rag","recall","security","semantic-search","starred-repositories","vector-search","webgpu","webllm"],"latest_commit_sha":null,"homepage":"https://git-star-recall.vercel.app","language":"TypeScript","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/Abhinandan-Khurana.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/security-review-stride.md","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-02-16T21:23:27.000Z","updated_at":"2026-02-25T10:56:18.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Abhinandan-Khurana/GitStarRecall","commit_stats":null,"previous_names":["abhinandan-khurana/gitstarrecall"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/Abhinandan-Khurana/GitStarRecall","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Abhinandan-Khurana%2FGitStarRecall","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Abhinandan-Khurana%2FGitStarRecall/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Abhinandan-Khurana%2FGitStarRecall/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Abhinandan-Khurana%2FGitStarRecall/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Abhinandan-Khurana","download_url":"https://codeload.github.com/Abhinandan-Khurana/GitStarRecall/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Abhinandan-Khurana%2FGitStarRecall/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30081043,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T12:28:08.313Z","status":"ssl_error","status_checked_at":"2026-03-04T12:27:28.210Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["ai","ai-search","developer-tools","github-stars","llm","local-first","local-first-ai","memory","ollama","privacy","privacy-focused","rag","recall","security","semantic-search","starred-repositories","vector-search","webgpu","webllm"],"created_at":"2026-02-25T12:31:02.576Z","updated_at":"2026-03-04T13:00:39.012Z","avatar_url":"https://github.com/Abhinandan-Khurana.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./static/gitstarrecall-logo.png\" width=\"220\" alt=\"GitStarRecall logo\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eGitStarRecall\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eFind your starred repos by memory, not by name.\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://deepwiki.com/Abhinandan-Khurana/GitStarRecall\"\u003e\u003cimg src=\"https://deepwiki.com/badge.svg\" alt=\"Ask DeepWiki\"\u003e\u003c/a\u003e\n  \u003ca href=\"./docs/Usage.md\"\u003e\u003cimg alt=\"Usage Guide\" src=\"https://img.shields.io/badge/docs-Usage_Guide-0ea5e9\"\u003e\u003c/a\u003e\n  \u003ca href=\"./docs/release-notes.md\"\u003e\u003cimg alt=\"Release Notes\" src=\"https://img.shields.io/badge/docs-Release_Notes-1d4ed8\"\u003e\u003c/a\u003e\n  \u003ca href=\"./docs/security-review-stride.md\"\u003e\u003cimg alt=\"Security Review\" src=\"https://img.shields.io/badge/security-STRIDE_Reviewed-059669\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n**GitStarRecall** is a local-first web app that turns your GitHub stars into a searchable memory system.\n\n### Ask it like this\n\n- \"I starred a GraphQL security testing repo months ago, what was it?\"\n- \"Show me TypeScript auth projects with clean architecture vibes.\"\n- \"Recommend the best-fit repos from my stars for my use case.\"\n\n\u003e **This project exists because starred repos are great until your brain says, \"I know what it does, but not what it is called.\"**\n\n### Keywords\n\n`github stars search` · `semantic search` · `local-first rag` · `browser embeddings` · `webllm` · `ollama` · `privacy-focused ai` · `vector search`\n\n---\n\n## Why This Exists\n\nPeople star a lot of useful repos.\nLater, they remember functionality, not names.\nGitHub search is good, but semantic memory search is better for this exact problem.\n\nGitStarRecall solves this by:\n- Fetching your starred repositories (including private stars if token scope allows).\n- Pulling README content and metadata.\n- Chunking and embedding content locally.\n- Letting you search in natural language.\n- Optionally generating an LLM answer from the top local matches.\n\nFull usage instructions:\n- `docs/Usage.md`\n\n---\n\n## Core Principles\n\n- Local-first by default.\n- Security before convenience.\n- Explainability over magic.\n- Practical performance for real star counts (1k+ repos).\n\n---\n\n## Security Model (Short Version)\n\nGitStarRecall is designed to keep your data in the browser unless you explicitly opt into remote LLM usage.\n\nWhat stays local by default:\n- GitHub star metadata.\n- README content.\n- Chunks and embeddings.\n- Chat sessions and message history.\n\nWhat can go remote (opt-in only):\n- Prompt context sent to a remote LLM provider when you enable it.\n\nBuilt-in security posture:\n- Strict CSP with explicit allowlist.\n- OAuth code exchange via backend endpoint to avoid exposing client secret.\n- PAT fallback supported for power users.\n- Local data delete flow for cleanup/reset.\n- Threat-model-driven docs in `docs/`.\n\nRead more:\n- `docs/tech-stack-architecture-security-prd.md`\n- `docs/threat-modeling-stride.md`\n- `docs/dfd-diagrams.md`\n\n---\n\n## Product Capabilities\n\n- GitHub OAuth and PAT authentication paths.\n- Star sync with pagination handling (manual via `Fetch Stars`).\n- Checksum-based diff sync for changed/new/removed stars.\n- README fetch pipeline with missing/failure tracking.\n- Adaptive batched README ingestion pipeline (feature-flagged rollout).\n- Local chunking + embedding generation.\n- Persistent chat sessions with ordered messages.\n- Session-aware search and follow-up flow on existing local embeddings.\n- Local and remote LLM answer modes.\n- Browser-local LLM mode via WebLLM (feature-flagged, explicit download consent).\n- Embedding acceleration controls (batching, worker pool, backend fallback).\n\n---\n\n## Architecture Snapshot\n\n```mermaid\nflowchart LR\n    A[Browser UI] --\u003e B[GitHub API]\n    A --\u003e X[OAuth Exchange API]\n    A --\u003e C[Local DB: sql.js + OPFS]\n    A --\u003e C2[Chat Backup: IndexedDB/localStorage]\n    A --\u003e D[Embedding Pipeline]\n    D --\u003e E[Browser Workers + Xenova]\n    D --\u003e G[Ollama Embeddings - opt-in]\n    C --\u003e S[Local Semantic Search]\n    A --\u003e F[LLM Provider Adapter]\n    F --\u003e W[WebLLM in Browser - opt-in]\n    F --\u003e L[Local LLM: Ollama/LM Studio - opt-in]\n    F --\u003e R[Remote OpenAI-Compatible - opt-in]\n```\n\nNotes:\n- Star sync is user-triggered via `Fetch Stars`; search runs on existing local embeddings.\n- Vector data is stored as Float32 blobs in local SQLite tables.\n- Retrieval/search is local; no server-side vector index is required.\n- Embedding backend policy is browser `webgpu` preferred with deterministic `wasm` fallback.\n- WebLLM/local/remote generation paths are explicit opt-in with consent controls.\n\n---\n\n## Getting Started\n\n### Prerequisites\n\n- Node.js 20+\n- pnpm 9+\n- A GitHub OAuth app (recommended) or GitHub PAT\n\n### Install\n\n```bash\npnpm install\n```\n\n### Configure environment\n\nCopy `.env.example` to `.env` and set values:\n\n```bash\ncp .env.example .env\n```\n\nThen follow the complete setup and environment guide:\n- `docs/Usage.md`\n\n### Run dev server\n\n```bash\npnpm dev\n```\n\n### Production build\n\n```bash\npnpm build\npnpm preview\n```\n\n---\n\n## Developer Commands\n\n- `pnpm dev` - start Vite dev server\n- `pnpm lint` - run ESLint\n- `pnpm test` - run Vitest test suite\n- `pnpm build` - typecheck + production build\n- `pnpm ci` - lint + test + build\n\n---\n\n## Usage Guide\n\nFor full setup, auth, deployment, runtime modes, tuning, and troubleshooting:\n- `docs/Usage.md`\n\n---\n\n## Product Docs\n\n- `docs/Usage.md`\n- `docs/codex-claude-build-guide.md`\n- `docs/embedding-acceleration-plan.md`\n- `docs/tech-stack-architecture-security-prd.md`\n- `docs/threat-modeling-stride.md`\n- `docs/security-review-stride.md`\n- `docs/release-notes.md`\n\n---\n\n## Contributing\n\nPlease read `CONTRIBUTING.md` before opening a PR.\n\nWe prioritize:\n- security correctness,\n- local-first behavior,\n- deterministic tests,\n- clear operational diagnostics.\n\n---\n\n## License\n\n[MIT](./LICENSE)\n\n---\n\n## Author\n\n- Made with \u003c3 by [Abhinandan-Khurana](https://github.com/Abhinandan-Khurana)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabhinandan-khurana%2Fgitstarrecall","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabhinandan-khurana%2Fgitstarrecall","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabhinandan-khurana%2Fgitstarrecall/lists"}