{"id":49560580,"url":"https://github.com/syncable-dev/memtrace-public","last_synced_at":"2026-05-16T00:21:16.456Z","repository":{"id":350961622,"uuid":"1207780921","full_name":"syncable-dev/memtrace-public","owner":"syncable-dev","description":"Structural memory for AI coding agents. Bi-temporal graph, MCP-native, zero LLM calls. Cursor · Claude Code · Codex · Hermes · VS Code · Windsurf.","archived":false,"fork":false,"pushed_at":"2026-05-05T23:54:24.000Z","size":8993,"stargazers_count":140,"open_issues_count":0,"forks_count":8,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-05-06T00:39:11.225Z","etag":null,"topics":["agent-memory","ai-agents","bi-temporal-graph","claude-code","code-intelligence","code-search","coding-agents","cursor","developer-tools","knowledge-graph","llm","local-first","mcp","mcp-server","rag","rust","semantic-search","structural-memory","temporal-analysis","tree-sitter"],"latest_commit_sha":null,"homepage":"https://memtrace.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/syncable-dev.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":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-04-11T11:49:55.000Z","updated_at":"2026-05-05T22:11:40.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/syncable-dev/memtrace-public","commit_stats":null,"previous_names":["syncable-dev/memtrace-public"],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/syncable-dev/memtrace-public","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syncable-dev%2Fmemtrace-public","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syncable-dev%2Fmemtrace-public/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syncable-dev%2Fmemtrace-public/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syncable-dev%2Fmemtrace-public/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/syncable-dev","download_url":"https://codeload.github.com/syncable-dev/memtrace-public/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syncable-dev%2Fmemtrace-public/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32898229,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-10T13:40:02.631Z","status":"online","status_checked_at":"2026-05-11T02:00:05.975Z","response_time":120,"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":["agent-memory","ai-agents","bi-temporal-graph","claude-code","code-intelligence","code-search","coding-agents","cursor","developer-tools","knowledge-graph","llm","local-first","mcp","mcp-server","rag","rust","semantic-search","structural-memory","temporal-analysis","tree-sitter"],"created_at":"2026-05-03T08:06:44.943Z","updated_at":"2026-05-12T00:02:04.592Z","avatar_url":"https://github.com/syncable-dev.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/memtrace-hero.svg\" alt=\"Memtrace — structural memory for AI coding agents\" width=\"100%\"/\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eYour agents deserve \u003ci\u003estructural memory\u003c/i\u003e.\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"docs/\"\u003e📖 Docs\u003c/a\u003e \u0026nbsp;·\u0026nbsp;\n  \u003ca href=\"https://github.com/syncable-dev/memtrace-public/stargazers\"\u003e⭐ Star us\u003c/a\u003e \u0026nbsp;·\u0026nbsp;\n  \u003ca href=\"https://memtrace.io\"\u003ememtrace.io\u003c/a\u003e \u0026nbsp;·\u0026nbsp;\n  \u003ca href=\"https://www.npmjs.com/package/memtrace\"\u003enpm\u003c/a\u003e \u0026nbsp;·\u0026nbsp;\n  \u003ca href=\"https://discord.gg/gzedUSNbna\"\u003eDiscord\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  Memtrace turns your codebase into a live knowledge graph that AI coding agents can query in milliseconds — every function, class, call edge, and version, across every session, without re-reading files or breaking things they can't see.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cb\u003eGet your fleet on shared structural memory in under 90 seconds.\u003c/b\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cb\u003eStructural\u003c/b\u003e · zero LLM calls \u0026nbsp;·\u0026nbsp; \u003cb\u003eBi-temporal\u003c/b\u003e · time-travel queries \u0026nbsp;·\u0026nbsp; \u003cb\u003eReplay-aware\u003c/b\u003e · zero blind refactors\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/syncable-dev/memtrace-public/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/syncable-dev/memtrace-public?style=flat-square\u0026color=00d4b8\u0026logo=github\u0026logoColor=white\u0026label=stars\u0026cacheSeconds=300\" alt=\"Stars\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/memtrace\"\u003e\u003cimg src=\"https://img.shields.io/npm/v/memtrace?style=flat-square\u0026color=00d4b8\u0026logo=npm\u0026logoColor=white\u0026label=npm\u0026cacheSeconds=300\" alt=\"npm version\"/\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/license-Proprietary%20EULA-E879F9?style=flat-square\" alt=\"License\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/runtime-Rust-orange?style=flat-square\u0026logo=rust\" alt=\"Rust\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/MCP-native-00d4b8?style=flat-square\" alt=\"MCP\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/languages-20%2B-22d3ee?style=flat-square\" alt=\"Languages\"/\u003e\n  \u003ca href=\"https://discord.gg/gzedUSNbna\"\u003e\u003cimg src=\"https://img.shields.io/badge/Discord-join-5865F2?style=flat-square\u0026logo=discord\u0026logoColor=white\" alt=\"Discord\" /\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/private%20beta-active-f59e0b?style=flat-square\" alt=\"Private Beta\"/\u003e\n\u003c/p\u003e\n\n---\n\n## What it does\n\n**Three things, every release.**\n\n🧭 \u0026nbsp; **Run a fleet of coding agents on the same repo without merge hell.**\nEach agent reads the same call graph, sees the same blast radius, inherits the same temporal history. No collisions. No stale context.\n\n🔁 \u0026nbsp; **Replay any refactor with full causal awareness.**\nAgents see exactly what depends on what, and what changed when. No more *\"I refactored a function and 14 tests broke that nobody saw.\"*\n\n⚡ \u0026nbsp; **Index a 50k-file repo in under 90 seconds.**\nRust + Tree-sitter, $0 in API costs, 20+ languages plus framework-aware scanners (Vapor, Lapis, Kong, GitHub Actions, Terraform, RLS policies, …), fully local. Your code never leaves your machine.\n\n🆕 \u0026nbsp; **LeanCTX Native — compressed reads, smart trees, and a value ledger.**\nFour new compression modes on `get_source_window`, single-call directory maps, real-time token-savings dashboard, and an opt-in adaptive learner that beats the static table by ~14%. Full breakdown: [`docs/leanctx-native.md`](docs/leanctx-native.md). Available in v0.3.57+.\n\nhttps://github.com/user-attachments/assets/e7d6a1e9-c912-4e65-a421-bd0256dffa5a\n\n---\n\n## Numbers\n\n| Operation | Memtrace | Best alternative | Δ |\n|---|---|---|---|\n| Index 1,500 files | **1.5s · $0** | Mem0: 31 min · $10–50 | **~1,200× faster** |\n| Exact symbol query (acc@1, lat) | **96.6% · 0.07 ms** | GitNexus: 97.0% · 8.95 ms | 128× lower latency |\n| Graph callers recall (Django) | **81.6%** | GitNexus: 5.3% | **15.4×** |\n| Incremental re-index p95 | **42.5 ms** | CodeGrapher: 613.7 ms | 14.4× |\n| Hybrid acc@1 (Django, 3K cases) | **73.9%** | GitNexus: 38.6% | 1.91× |\n| RSS / process | **26 MB** | ChromaDB: 1,060 MB | **41× tighter** |\n| Languages | **16+** (Tree-sitter) | varies | — |\n\nReproducible benchmark suite: [`benchmarks/`](benchmarks/README.md). Same machine, same corpora, same adapter contract. Ground truth from Python's `ast` and `pyright` LSP — never from any tool's own index. **No system gets a home-field advantage in the dataset.**\n\nDetailed breakdowns: [BENCHMARKS-v0.3.22.md](BENCHMARKS-v0.3.22.md) · [BENCHMARKS-v0.3.29.md](BENCHMARKS-v0.3.29.md)\n\n---\n\n## GitHub Star Growth\n\n\u003ca href=\"https://www.star-history.com/syncable-dev/memtrace-public\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/chart?repos=syncable-dev/memtrace-public\u0026type=date\u0026theme=dark\u0026legend=top-left\" /\u003e\n    \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/chart?repos=syncable-dev/memtrace-public\u0026type=date\u0026legend=top-left\" /\u003e\n    \u003cimg alt=\"Memtrace GitHub star growth over time\" src=\"https://api.star-history.com/chart?repos=syncable-dev/memtrace-public\u0026type=date\u0026legend=top-left\" /\u003e\n  \u003c/picture\u003e\n\u003c/a\u003e\n\n---\n\n## Get access\n\nMemtrace is in **private beta**. We're rolling out access in batches to keep the feedback loop tight — every cohort lands in a Discord channel where we ship fixes from real bug reports inside a week.\n\n→ **Join the waitlist at [memtrace.io](https://memtrace.io).**\n\nAlready have access? `npm install -g memtrace` and you're indexing in 90 seconds. Full setup below.\n\n\u003e 🔒 **Privacy.** Memtrace runs entirely on your machine. Source code never leaves it. The only network traffic is license validation, aggregate node/edge counts, and opt-out crash telemetry — no source, no file paths, no symbol names. Full breakdown: [PRIVACY.md](PRIVACY.md), [TELEMETRY.md](TELEMETRY.md). Disable telemetry with `MEMTRACE_TELEMETRY=off`.\n\n---\n\n## Why Memtrace exists\n\nGood code-intelligence tools already exist. GitNexus and CodeGrapherContext build AST-based graphs that work for *\"what's in my repo right now.\"*\n\n**Memtrace is a bi-temporal episodic structural knowledge graph.** It builds on the same AST foundation and adds two dimensions:\n\n- **Temporal memory** — every symbol carries its full version history. Six scoring algorithms (impact, novelty, recency, directional, compound, overview) let agents ask different temporal questions: *\"what changed?\"*, *\"what's unexpected?\"*, *\"what'll break?\"*.\n- **Cross-service API topology** — Memtrace maps HTTP call graphs *between* repositories, detecting which services call which endpoints across your architecture.\n\nOn top of that, the structural layer is comprehensive:\n\n| | |\n|---|---|\n| **Symbols are nodes** | functions, classes, interfaces, types, endpoints |\n| **Relationships are edges** | `CALLS`, `IMPLEMENTS`, `IMPORTS`, `EXPORTS`, `CONTAINS` |\n| **Community detection** | Louvain algorithm identifies architectural modules automatically |\n| **Hybrid retrieval** | Tantivy BM25 + vector embeddings + Reciprocal Rank Fusion + cross-encoder rerank |\n| **Rust-native** | compiled binary, no Python/JS runtime overhead, sub-8 ms p95 query latency |\n\nThe agent doesn't just search your code. **It remembers it.**\n\n---\n\n## Memtrace vs. general memory systems (Mem0, Graphiti)\n\nMem0 and Graphiti are strong conversational memory engines designed for tracking entity knowledge (e.g. `User -\u003e Likes -\u003e Apples`). They excel at that. For code intelligence specifically, the tradeoff is that they rely on LLM inference to build their graphs — which adds cost and time when processing thousands of source files.\n\n**Graphiti** processes data through `add_episode()`, which triggers multiple LLM calls per episode — entity extraction, relationship resolution, deduplication. At ~50 episodes/minute ([source](https://github.com/getzep/graphiti)), ingesting 1,500 code files takes **1–2 hours**.\n\n**Mem0** processes data through `client.add()`, which queues async LLM extraction and conflict resolution per memory item ([source](https://mem0.ai)). Bulk ingestion with `infer=True` (default) means every file passes through an LLM pipeline. Throughput is bounded by your LLM provider's rate limits.\n\n**Both** accumulate $10–50+ in API costs for large codebases because every relationship is inferred rather than parsed.\n\n**Memtrace takes a different approach:** it indexes 1,500 files in 1.2–1.8 seconds for $0.00 — no LLM calls, no API costs, no rate limits. Native Tree-sitter AST parsers resolve deterministic symbol references (`CALLS`, `IMPLEMENTS`, `IMPORTS`) locally. The tradeoff is that Memtrace is purpose-built for code — it doesn't handle conversational entity memory the way Mem0 and Graphiti do.\n\n---\n\n## 25+ MCP tools\n\nMemtrace exposes a full structural toolkit via the Model Context Protocol.\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\n**Search \u0026 Discovery**\n- `find_code` — hybrid BM25 + semantic + RRF\n- `find_symbol` — exact / fuzzy with Levenshtein\n\n**Relationships**\n- `analyze_relationships` — callers, callees, hierarchy, imports\n- `get_symbol_context` — 360° view in one call\n\n**Impact Analysis**\n- `get_impact` — blast radius with risk rating\n- `detect_changes` — diff-to-symbols scope mapping\n\n**Code Quality**\n- `find_dead_code` — zero-caller detection\n- `find_most_complex_functions` — complexity hotspots\n- `calculate_cyclomatic_complexity`\n- `get_repository_stats`\n\n\u003c/td\u003e\n\u003ctd\u003e\n\n**Temporal Analysis**\n- `get_evolution` — 6 scoring modes\n- `get_timeline` — full version history\n- `detect_changes` — diff-based scope\n\n**Graph Algorithms**\n- `find_bridge_symbols` — betweenness centrality\n- `find_central_symbols` — PageRank / degree\n- `list_communities` — Louvain modules\n- `list_processes` / `get_process_flow`\n\n**API Topology**\n- `get_api_topology` — cross-repo HTTP graph\n- `find_api_endpoints`\n- `find_api_calls`\n\n**Indexing \u0026 Watch**\n- `index_directory` — parse, resolve, embed\n- `watch_directory` — live incremental\n- `execute_cypher` — direct graph queries\n\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n---\n\n## 17 agent skills\n\nMemtrace ships skills/guidance that teach agents how to use the graph. They fire automatically based on what you ask — no prompt engineering required.\n\n| Skill | You say… |\n|---|---|\n| `memtrace-search` | \"find this function\", \"where is X defined\" |\n| `memtrace-relationships` | \"who calls this\", \"show class hierarchy\" |\n| `memtrace-evolution` | \"what changed this week\", \"how did this evolve\" |\n| `memtrace-impact` | \"what breaks if I change this\", \"blast radius\" |\n| `memtrace-quality` | \"find dead code\", \"complexity hotspots\" |\n| `memtrace-graph` | \"show me the architecture\", \"find bottlenecks\" |\n| `memtrace-api-topology` | \"list API endpoints\", \"service dependencies\" |\n| `memtrace-index` | \"index this project\", \"parse this codebase\" |\n| `memtrace-cochange` | \"what else changes with this\", \"hidden coupling\" |\n\nPlus 8 workflow skills that chain multiple tools with decision logic: `memtrace-first`, `codebase-exploration`, `change-impact-analysis`, `incident-investigation`, `refactoring-guide`, `continuous-memory`, `episode-replay`, and `session-continuity`.\n\n---\n\n## Temporal Engine\n\nSix scoring algorithms for different temporal questions:\n\n| Mode | Best for |\n|---|---|\n| `compound` | General-purpose \"what changed?\" — weighted blend of impact, novelty, recency |\n| `impact` | \"What broke?\" — ranks by blast radius (`in_degree^0.7 × (1 + out_degree)^0.3`) |\n| `novel` | \"What's unexpected?\" — anomaly detection via surprise scoring |\n| `recent` | \"What changed near the incident?\" — exponential time decay |\n| `directional` | \"What was added vs removed?\" — asymmetric scoring |\n| `overview` | Quick module-level summary |\n\nUses **Structural Significance Budgeting** to surface the minimum set of changes covering ≥80% of total significance.\n\n---\n\n## Compatibility\n\n| Editor / Agent | MCP Tools (25+) | Skills / Guidance | Install |\n|---|---|---|---|\n| Claude Code | ✅ | ✅ | `npm install -g memtrace` — fully automatic |\n| Claude Desktop | ✅ | ✅ | Automatic — shared with Claude Code |\n| Cursor (v2.4+) | ✅ | ✅ | `npm install -g memtrace` — fully automatic |\n| Codex CLI | ✅ | ✅ | `npm install -g memtrace` — fully automatic |\n| Windsurf | ✅ | ✅ | `npm install -g memtrace` — fully automatic |\n| VS Code (Copilot) | ✅ | ✅ | `npm install -g memtrace` — fully automatic |\n| Hermes | ✅ | ✅ | `npm install -g memtrace` — fully automatic |\n| OpenCode | ✅ | ✅ | `npm install -g memtrace` — fully automatic |\n| Kiro | ✅ | Steering | `npm install -g memtrace` — fully automatic |\n| Cline / Roo Code | ✅ | — | Add MCP server manually |\n| Any MCP client | ✅ | — | Add MCP server manually |\n\nSkills are workflow prompts that teach the agent how to chain tools. Kiro does not use `SKILL.md`, so Memtrace writes equivalent auto steering files instead.\n\n---\n\n## Setup\n\n### Claude Code + Claude Desktop\n\n```bash\nnpm install -g memtrace\n```\n\nHandles everything — binary, 17 skills, MCP server, plugin, marketplace. One command, both editors.\n\nFor manual setup:\n\n```bash\nclaude plugin marketplace add https://github.com/syncable-dev/memtrace-public.git\nclaude plugin install memtrace-skills@memtrace --scope user\nclaude mcp add memtrace -- memtrace mcp -e MEMTRACE_ARCADEDB_BOLT_URL=bolt://localhost:7687\n```\n\n### Cursor\n\n`npm install -g memtrace` handles everything automatically. Cursor v2.4+ reads the same `SKILL.md` format as Claude.\n\nFor project-local install (skills travel with your repo):\n\n```bash\nnpx memtrace-skills install --only cursor --local\n```\n\n### Codex, Windsurf, VS Code, Hermes, OpenCode, and Kiro\n\nThe installer also writes skills/guidance and MCP configuration for the newer agent surfaces:\n\n| Agent | Global skills / guidance | Global MCP config | Project-local support |\n|---|---|---|---|\n| Codex | `~/.agents/skills/` | `~/.codex/config.toml` | `.agents/skills/`, `.codex/config.toml` |\n| Windsurf | `~/.codeium/windsurf/skills/` | `~/.codeium/windsurf/mcp_config.json` | `.windsurf/skills/`; MCP remains user-level |\n| VS Code / Copilot | `~/.copilot/skills/` | VS Code user `mcp.json` | `.github/skills/`, `.vscode/mcp.json` |\n| Hermes | `~/.hermes/skills/` | `~/.hermes/config.yaml` | user-level only |\n| OpenCode | `~/.config/opencode/skills/` | `~/.config/opencode/opencode.json` | `.opencode/skills/`, `opencode.json` |\n| Kiro | `~/.kiro/steering/` | `~/.kiro/settings/mcp.json` | `.kiro/steering/`, `.kiro/settings/mcp.json` |\n\nInstall only selected integrations:\n\n```bash\nnpx memtrace-skills install --only codex,windsurf,vscode,hermes,opencode,kiro\n```\n\nInstall project-local config where supported:\n\n```bash\nnpx memtrace-skills install --only codex,vscode,opencode,kiro --local\n```\n\n### Other MCP clients\n\nFor Cline, Roo Code, or any client that only needs MCP tools, add this server manually:\n\n```json\n{\n  \"mcpServers\": {\n    \"memtrace\": {\n      \"command\": \"memtrace\",\n      \"args\": [\"mcp\"],\n      \"env\": {\n        \"MEMTRACE_ARCADEDB_BOLT_URL\": \"bolt://localhost:7687\"\n      }\n    }\n  }\n}\n```\n\n| Editor | Config file |\n|---|---|\n| Windsurf | `~/.codeium/windsurf/mcp_config.json` |\n| VS Code (Copilot) | `.vscode/mcp.json` in your project root |\n| Codex | `~/.codex/config.toml` or `.codex/config.toml` |\n| Hermes | `~/.hermes/config.yaml` |\n| OpenCode | `~/.config/opencode/opencode.json` or project `opencode.json` |\n| Kiro | `~/.kiro/settings/mcp.json` or `.kiro/settings/mcp.json` |\n| Cline | Cline MCP settings in the extension panel |\n\n### Uninstall\n\n```bash\nmemtrace uninstall      # removes skills, MCP server, plugin, settings\nnpm uninstall -g memtrace\n```\n\nAlready ran `npm uninstall` first? The cleanup script is at `~/.memtrace/uninstall.js`:\n\n```bash\nnode ~/.memtrace/uninstall.js\n```\n\n### Install troubleshooting\n\n`npm install -g memtrace` ships a small main package + a platform-specific binary (one of `@memtrace/darwin-arm64`, `@memtrace/linux-x64`, `@memtrace/win32-x64`). If `memtrace start` ever says *\"Could not find binary for your platform\"*:\n\n```bash\n# Re-run install, asking npm to keep optional deps\nnpm install -g memtrace --include=optional\n\n# Or refresh from latest\nmemtrace install         # built-in self-update\nnpm install -g memtrace@latest --force\n\n# Or install the platform binary directly (Apple Silicon shown — swap for your platform)\nnpm install -g @memtrace/darwin-arm64\n```\n\nThis typically only happens on machines where npm is configured to skip optional dependencies (corporate npmrc, certain CI caches).\n\n---\n\n## Languages\n\n**Programming:** Rust · Go · TypeScript · JavaScript · Python · Java · C · C++ · C# · Swift · Kotlin · Ruby · PHP · Dart · Scala · Perl · **Lua** — full AST: functions, classes, types, calls, complexity.\n\n**Infrastructure \u0026 config:** **YAML** · **HCL / Terraform** · **JSON** · **TOML** · **SQL** (including PostgreSQL `CREATE POLICY` for RLS, with cross-language edges from policies to Drizzle / Prisma / TS schema symbols).\n\n**Framework-aware scanners** on top of the AST layer:\n\n- **Backend HTTP:** Express · NestJS · Encore · Fastify · Vapor · Hummingbird · FastAPI · Flask · Django · Gin · Chi · Echo · Actix · Lapis · Kong · OpenResty · Rails routes\n- **Frontend / client:** RTK Query · TanStack Query · SWR · URLSession · AsyncHTTPClient · axios · fetch · SwiftUI views\n- **CI / infra:** GitHub Actions workflows (jobs, steps, `needs:` edges) · Terraform variables / modules / data sources · Helm charts · K8s manifests\n- **Package \u0026 dependency graphs:** `package.json` scripts + deps · `Cargo.toml` deps · `pyproject.toml` (best-effort)\n- **Database:** PostgreSQL RLS policies + triggers + functions, with heuristic edges to ORM schema\n\n---\n\n## Requirements\n\nMemtrace runs locally — first index is CPU/RAM intensive, subsequent queries and incremental indexing are much lighter.\n\n| | Minimum | Recommended |\n|---|---|---|\n| CPU | 4 cores | 8+ cores for large monorepos |\n| Memory | 8 GB RAM | 16–32 GB RAM |\n| Disk | 5 GB free | 10–20 GB free |\n| GPU | Not required | Not required |\n| Node.js | ≥ 18 | Current LTS |\n| Git | Required for temporal analysis | Full repo history for best results |\n\n---\n\n## Telemetry\n\nSince v0.3.17 Memtrace ships with **opt-out** telemetry that helps us catch crashes, regressions, and performance issues before someone files an issue.\n\n- **Collected:** app-start events, indexing/embedding durations, panic reports, WARN/ERROR log lines from Memtrace's own crates.\n- **NOT collected:** source code, file contents, symbol names, embeddings, repository names or paths, branch names, commit data.\n- **Sanitisation:** every payload is run through a sanitiser that strips home-dir paths, token-shaped strings, and email addresses before it touches disk.\n\nDisable with one env var:\n\n```bash\nMEMTRACE_TELEMETRY=off memtrace start                    # per-run\nexport MEMTRACE_TELEMETRY=off                             # permanent (~/.zshrc, ~/.bashrc)\n```\n\nOr in your editor's MCP config: `\"env\": { \"MEMTRACE_TELEMETRY\": \"off\" }`.\n\nFull breakdown — including the on-disk queue layout, where data is stored on the receiving end, and how to inspect what would have shipped — is in [TELEMETRY.md](TELEMETRY.md).\n\n---\n\n## License \u0026 ownership\n\n**Proprietary EULA.** Free to use during private beta and after general availability for individual developers. Indexer + database (MemDB) are closed-source.\n\nBenchmark suite under MIT in [`benchmarks/`](benchmarks/) — fully reproducible, no proprietary code required to run them.\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://memtrace.io\"\u003ememtrace.io\u003c/a\u003e \u0026nbsp;·\u0026nbsp;\n  \u003ca href=\"https://discord.gg/gzedUSNbna\"\u003eDiscord\u003c/a\u003e \u0026nbsp;·\u0026nbsp;\n  \u003ca href=\"https://www.npmjs.com/package/memtrace\"\u003enpm\u003c/a\u003e \u0026nbsp;·\u0026nbsp;\n  \u003ca href=\"https://github.com/syncable-dev/memtrace-public/issues\"\u003eIssues\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  Built by \u003ca href=\"https://syncable.dev\"\u003eSyncable\u003c/a\u003e · Copenhagen 🇩🇰\n\u003c/p\u003e\n\n\n[![MseeP.ai Security Assessment Badge](https://mseep.net/pr/syncable-dev-memtrace-public-badge.png)](https://mseep.ai/app/syncable-dev-memtrace-public)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsyncable-dev%2Fmemtrace-public","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsyncable-dev%2Fmemtrace-public","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsyncable-dev%2Fmemtrace-public/lists"}