|
20 | 20 | <a href="LICENSE"><img src="https://img.shields.io/badge/License-Apache%202.0-blue" alt="License: Apache-2.0"/></a> |
21 | 21 | <a href="https://pepy.tech/project/graphifyy"><img src="https://img.shields.io/pepy/dt/graphifyy?color=blue&label=downloads" alt="Downloads"/></a> |
22 | 22 | <a href="https://docs.graphify.com"><img src="https://img.shields.io/badge/Docs-docs.graphify.com-0b7285?style=flat&logo=readthedocs&logoColor=white" alt="Docs"/></a> |
| 23 | + <a href="https://smithery.ai/servers/graphify/graphify"><img src="https://img.shields.io/badge/Smithery-MCP%20server-5c4ee5?style=flat&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iI2ZmZiI+PHBhdGggZD0iTTEyIDJMMiA3djEwbDEwIDUgMTAtNVY3eiIvPjwvc3ZnPg==" alt="Smithery"/></a> |
23 | 24 | <a href="https://discord.gg/XDnKVpzdXB"><img src="https://img.shields.io/badge/Discord-Join-5865F2?style=flat&logo=discord&logoColor=white" alt="Discord"/></a> |
24 | 25 | <a href="https://www.youtube.com/@graphifylabs"><img src="https://img.shields.io/badge/YouTube-Graphify%20Labs-FF0000?style=flat&logo=youtube&logoColor=white" alt="YouTube"/></a> |
25 | 26 | <a href="https://www.linkedin.com/company/graphify-labs"><img src="https://img.shields.io/badge/LinkedIn-Graphify%20Labs-0077B5?logo=linkedin" alt="LinkedIn"/></a> |
26 | 27 | <a href="https://www.ycombinator.com/companies/graphify-labs"><img src="https://img.shields.io/badge/Y%20Combinator-S26-F0652F?style=flat&logo=ycombinator&logoColor=white" alt="YC S26"/></a> |
27 | 28 | </p> |
28 | 29 |
|
29 | 30 | <p align="center"> |
30 | | - <b>Early access to the graphify platform is open before the public v1 launch: <a href="https://app.graphify.com/login">app.graphify.com</a></b> |
| 31 | + <b>Try the graphify platform free for 14 days: <a href="https://app.graphify.com/login">app.graphify.com</a></b> |
31 | 32 | </p> |
32 | 33 |
|
33 | 34 | Type `/graphify` in your AI coding assistant and it maps your entire project (code, docs, PDFs, images, videos) into a **knowledge graph** you can **query instead of grepping** through files. |
@@ -67,6 +68,10 @@ graphify-out/ |
67 | 68 | └── graph.json the full graph — query it anytime without re-reading your files |
68 | 69 | ``` |
69 | 70 |
|
| 71 | +The persisted graph includes `graph.schema_version` so integrations can detect |
| 72 | +incompatible format changes, plus `graph.graphify_version` identifying the |
| 73 | +Graphify release that produced it. |
| 74 | + |
70 | 75 | **Works in** Claude Code, Cursor, Codex, Gemini CLI, GitHub Copilot, and 15+ more — [pick your platform](#install). |
71 | 76 |
|
72 | 77 | --- |
@@ -125,6 +130,7 @@ What you get out of the box: |
125 | 130 | | LOCOMO (n=300) | recall@10 | **0.497** | mem0 0.048, supermemory 0.149 | |
126 | 131 | | LOCOMO (n=300) | QA accuracy | 45.3% | supermemory 49.7%, mem0 27.3% | |
127 | 132 | | LongMemEval-S (n=50) | QA accuracy | **76%** | tied with dense RAG | |
| 133 | +| ERPNext cross-tool (n=6) | key-fact coverage | **82.0%** | grep/read baseline 70.8% | |
128 | 134 | | Graph build | LLM credits | **0** | per-token for most systems | |
129 | 135 |
|
130 | 136 | Every system ran on the same harness with the same model and budgets, scored by a judge blind-validated against a second judge (90.6% agreement, Cohen's kappa 0.81). Full per-system tables, the code-intelligence result, and reproduction commands: **[BENCHMARKS.md](./BENCHMARKS.md)**. |
@@ -344,7 +350,7 @@ To remove graphify from all platforms at once: `graphify uninstall` (add `--purg |
344 | 350 |
|
345 | 351 | | Type | Extensions | |
346 | 352 | |------|-----------| |
347 | | -| Code (37 tree-sitter grammars) | `.py .ts .mts .cts .js .jsx .tsx .mjs .go .rs .java .c .cpp .cc .cxx .h .hpp .cu .cuh .metal .rb .cs .kt .kts .scala .php .swift .lua .luau .toc .zig .ps1 .psm1 .psd1 .ex .exs .m .mm .ml .mli .jl .vue .svelte .astro .groovy .gradle .dart .v .sv .svh .sql .f .f90 .f95 .f03 .f08 .pas .pp .dpr .dpk .lpr .inc .dfm .lfm .lpk .sh .bash .json .dm .dme .dmi .dmm .dmf .sln .slnx .csproj .fsproj .vbproj .xaml .razor .cshtml` (`.dm`/`.dme` requires `uv tool install graphifyy[dm]`, `.ml`/`.mli` requires `uv tool install graphifyy[ocaml]`; `.mts`/`.cts` reuse the TypeScript grammar, `.cc`/`.cxx` and CUDA `.cu`/`.cuh` and Metal `.metal` reuse the C++ grammar) | |
| 353 | +| Code (37 tree-sitter grammars) | `.py .ts .mts .cts .js .jsx .tsx .mjs .go .rs .java .c .cpp .cc .cxx .h .hpp .cu .cuh .metal .rb .cs .kt .kts .scala .php .swift .lua .luau .toc .zig .ps1 .psm1 .psd1 .ex .exs .m .mm .ml .mli .jl .vue .svelte .astro .groovy .gradle .dart .v .sv .svh .vh .sql .f .f90 .f95 .f03 .f08 .pas .pp .dpr .dpk .lpr .inc .dfm .lfm .lpk .sh .bash .json .dm .dme .dmi .dmm .dmf .sln .slnx .csproj .fsproj .vbproj .xaml .razor .cshtml` (`.dm`/`.dme` requires `uv tool install graphifyy[dm]`, `.ml`/`.mli` requires `uv tool install graphifyy[ocaml]`; `.mts`/`.cts` reuse the TypeScript grammar, `.cc`/`.cxx` and CUDA `.cu`/`.cuh` and Metal `.metal` reuse the C++ grammar) | |
348 | 354 | | Salesforce Apex | `.cls .trigger` (regex-based; classes, interfaces, enums, methods, triggers, SOQL/DML edges) | |
349 | 355 | | Terraform / HCL | `.tf .tfvars .hcl` (requires `uv tool install graphifyy[terraform]`) | |
350 | 356 | | OCaml | `.ml .mli` (requires `uv tool install graphifyy[ocaml]`) | |
@@ -512,6 +518,19 @@ python -m graphify.serve graphify-out/graph.json --transport http --host 0.0.0.0 |
512 | 518 |
|
513 | 519 | The MCP server gives your assistant structured access: `query_graph`, `get_node`, `get_neighbors`, `shortest_path`, `list_prs`, `get_pr_impact`, `triage_prs`. |
514 | 520 |
|
| 521 | +### One-click install (VS Code · Smithery) |
| 522 | + |
| 523 | +Prefer not to edit MCP config by hand? Register the graphify MCP server in one step. Run `/graphify` first so a `graphify-out/graph.json` exists in the workspace; the server reads it on launch. |
| 524 | + |
| 525 | +[](https://insiders.vscode.dev/redirect/mcp/install?name=graphify&config=%7B%22command%22%3A%22uvx%22%2C%22args%22%3A%5B%22--from%22%2C%22graphifyy%5Bmcp%5D%22%2C%22graphify-mcp%22%5D%7D) |
| 526 | + |
| 527 | +The button adds a `graphify` server that launches with `uvx --from "graphifyy[mcp]" graphify-mcp` (no API key, no prior install). Or install via [Smithery](https://smithery.ai/servers/graphify/graphify) for Claude, Cursor, VS Code, and other clients: |
| 528 | + |
| 529 | +```bash |
| 530 | +# pick your client (claude, cursor, vscode, windsurf, ...) |
| 531 | +npx -y @smithery/cli install graphify/graphify --client claude |
| 532 | +``` |
| 533 | + |
515 | 534 | ### Shared HTTP server |
516 | 535 |
|
517 | 536 | `--transport stdio` (the default) spawns one local server per developer. `--transport http` serves the same tools over the MCP Streamable HTTP transport, so a single shared process can serve the graph for the whole team — clients point their IDE MCP config at `http://<host>:8080/mcp` instead of running graphify locally. |
@@ -579,6 +598,7 @@ These are only needed for **headless / CI extraction** (`graphify extract`). Whe |
579 | 598 | | `GRAPHIFY_QUERY_LOG` | Enable the query log and write it to this path instead of the default | optional — off unless this or `_ENABLE` is set | |
580 | 599 | | `GRAPHIFY_QUERY_LOG_DISABLE` | Set to `1` to force the query log off (wins over the enable vars) | optional | |
581 | 600 | | `GRAPHIFY_QUERY_LOG_RESPONSES` | When the log is enabled, also record full subgraph responses (off by default) | optional | |
| 601 | +| `GRAPHIFY_NO_AUTO_REFRESH` | Set to `1` to stop the CLI from refreshing installed skills that are older than the package after an upgrade | optional — refresh is on by default | |
582 | 602 | | `GRAPHIFY_MAX_GRAPH_BYTES` | Override the 512 MiB graph.json size cap — e.g. `700MB`, `2GB`, or plain bytes | optional — useful for very large corpora | |
583 | 603 | | `GRAPHIFY_MAX_CONTEXTS` | Maximum number of non-default project graphs retained by one multi-project MCP server | optional — default: `8`; invalid values use `8`, and values below `1` use `1` | |
584 | 604 | | `GRAPHIFY_LLM_TEMPERATURE` | Override LLM temperature for semantic extraction — e.g. `0.7`, or `none` to omit | optional — auto-omitted for o1/o3/o4/gpt-5 reasoning models | |
@@ -674,10 +694,10 @@ ANTHROPIC_API_KEY=sk-... graphify extract ./docs --backend claude |
674 | 694 | ``` |
675 | 695 |
|
676 | 696 | **Skill version mismatch warning in your IDE** |
677 | | -Your installed graphify version is different from the skill file. Update: |
| 697 | +Your installed graphify version is different from the skill file. After an upgrade, the first `graphify` command refreshes every installed skill that is older than the package, on all platforms at once, and keeps a locally edited `SKILL.md` as `SKILL.md.bak`. Set `GRAPHIFY_NO_AUTO_REFRESH=1` to turn this off. A skill it can't refresh safely keeps the warning: one newer than the package, or a directory that two installers share (for example Copilot and `graphify vscode install`). Reinstall that platform by hand: |
678 | 698 | ```bash |
679 | 699 | uv tool upgrade graphifyy |
680 | | -graphify install # overwrites the skill file |
| 700 | +graphify install --platform <name> # overwrites the skill file |
681 | 701 | ``` |
682 | 702 |
|
683 | 703 | **Claude Code prompt cache invalidated after every `graphify extract`** |
@@ -845,6 +865,12 @@ graphify label ./my-project # (re)name commun |
845 | 865 | graphify label ./my-project --backend=openai --model gpt-4o # force a specific backend and model |
846 | 866 | ``` |
847 | 867 |
|
| 868 | +`--no-dedup` also skips coalescing distinct non-AST nodes solely because they |
| 869 | +share a file and label. The Python equivalents are `build(chunks, dedup=False)`, |
| 870 | +`build_merge(chunks, graph_path, dedup=False)`, and |
| 871 | +`build_from_json(extraction, dedup=False)`. AST/semantic twins still reconcile to |
| 872 | +the canonical AST node, and document-file twin reconciliation remains enabled. |
| 873 | +
|
848 | 874 | > **Community names:** inside an agent (Claude Code, Gemini CLI) the agent names communities itself. When you run the bare CLI, `cluster-only` auto-names them with the configured backend (built-in or custom OpenAI-compatible provider) — pass `--no-label` to keep `Community N`, or run `graphify label` to (re)generate names on demand. |
849 | 875 |
|
850 | 876 | --- |
@@ -877,6 +903,22 @@ New here? Say hi on [Discord](https://discord.gg/XDnKVpzdXB) or in [GitHub Discu |
877 | 903 |
|
878 | 904 | --- |
879 | 905 |
|
| 906 | +## Contributors |
| 907 | +
|
| 908 | +<a href="https://github.com/Graphify-Labs/graphify/graphs/contributors"> |
| 909 | + <img src="https://contrib.rocks/image?repo=Graphify-Labs/graphify" alt="graphify contributors" /> |
| 910 | +</a> |
| 911 | +
|
| 912 | +Made with [contrib.rocks](https://contrib.rocks). |
| 913 | +
|
| 914 | +--- |
| 915 | +
|
| 916 | +## Translations |
| 917 | +
|
| 918 | +The README is available in 32 languages. Use the language switcher at the top of this file to read it in yours, or browse [`docs/translations/`](docs/translations/). To improve a translation or add a new one, open a pull request against the matching file there. |
| 919 | +
|
| 920 | +--- |
| 921 | +
|
880 | 922 | ## Community and links |
881 | 923 |
|
882 | 924 | <p align="center"> |
|
0 commit comments