<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>static-analysis on tomrochette.com</title>
    <link>https://tomrochette.com/tags/static-analysis/</link>
    <description>Recent content in static-analysis on tomrochette.com</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <managingEditor>tom@tomrochette.com (Tom Rochette)</managingEditor>
    <webMaster>tom@tomrochette.com (Tom Rochette)</webMaster>
    <copyright>© 2026 Tom Rochette</copyright>
    <lastBuildDate>Tue, 13 Oct 2026 21:32:54 -0400</lastBuildDate><atom:link href="https://tomrochette.com/tags/static-analysis/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>Repowise</title>
      <link>https://tomrochette.com/agents/context-engines/repowise/</link>
      <pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate>
      <author>tom@tomrochette.com (Tom Rochette)</author>
      <guid>https://tomrochette.com/agents/context-engines/repowise/</guid>
      <category>research-note</category><category>agent-curated</category><category>fully-ai-generated</category><category>llm=glm-5.3-flash</category><category>context-engines</category><category>code-intelligence</category><category>mcp</category><category>code-health</category><category>static-analysis</category>
      <description>&lt;p&gt;Repowise is an AGPL-3.0 local code-intelligence tool that parses a repository&amp;rsquo;s code, call graph, git history, tests, docs, and architectural decisions into one local index, then serves it to coding agents through ten task-shaped MCP tools and to humans through a dashboard and CLI.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Repowise is the broadest bet in this category that understanding, not retrieval, is the product: the same index that answers an agent&amp;rsquo;s &amp;ldquo;what calls this&amp;rdquo; also scores every file&amp;rsquo;s health, finds the dead code, and ranks what to fix first, and it is the only member that benchmarked itself against this table&amp;rsquo;s other columns directly.&lt;/strong&gt;&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;What it is&#xA;    &lt;div id=&#34;what-it-is&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#what-it-is&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;A Python CLI (&lt;code&gt;uv tool install repowise&lt;/code&gt;) that builds the index in &lt;code&gt;.repowise/&lt;/code&gt; with zero LLM calls, then serves it through &lt;code&gt;repowise serve&lt;/code&gt; as a local dashboard plus an MCP server with ten tools (&lt;code&gt;get_overview&lt;/code&gt;, &lt;code&gt;get_answer&lt;/code&gt;, &lt;code&gt;get_context&lt;/code&gt;, &lt;code&gt;get_symbol&lt;/code&gt;, &lt;code&gt;search_codebase&lt;/code&gt;, &lt;code&gt;get_risk&lt;/code&gt;, &lt;code&gt;get_change_risk&lt;/code&gt;, &lt;code&gt;get_why&lt;/code&gt;, &lt;code&gt;get_dead_code&lt;/code&gt;, &lt;code&gt;get_health&lt;/code&gt;, plus &lt;code&gt;list_repos&lt;/code&gt; for workspaces).&#xA;The deterministic layers (graph, git, health, tests, dead code, docs) never call a model; model-written prose and decision mining are opt-in on your own key or offline through Ollama.&#xA;Beyond the agent surface it writes &lt;code&gt;CLAUDE.md&lt;/code&gt; and &lt;code&gt;AGENTS.md&lt;/code&gt; from the real index, keeps them current, shrinks command output with &lt;code&gt;repowise distill&lt;/code&gt;, seeds linked worktrees from the base checkout, and spans repositories into workspaces with cross-repo contract checks.&#xA;Hosted repowise.dev runs the same engine as a service, and a commercial licence adds modification rights, in-VPC or air-gapped deployment, and SLA support, priced per seat, per indexed repository, or enterprise-wide.&#xA;Made by the repowise-dev organization, AGPL-3.0 or commercial, Python, active on PyPI as &lt;code&gt;repowise&lt;/code&gt;.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Status&#xA;    &lt;div id=&#34;status&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#status&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Young and growing: 7,617 stars, 856 forks, and 313 open issues as of 2026-10-13, created 2026-03-23 and pushed 2026-10-12, PyPI at 0.56.0.&#xA;&lt;strong&gt;The community footprint is thin for the star count: two Show HN posts drew 4 and 1 points in April 2026 and the vendor&amp;rsquo;s own blog threads stayed single-digit, so the adoption signal is stars and downloads (about 16.8k PyPI downloads in the trailing month) without practitioner debate.&lt;/strong&gt;&#xA;The vendor publishes the most checkable benchmark claims in this category: call-graph precision of 0.976 to 0.995 against the Go and TypeScript compilers&amp;rsquo; own resolution, and a self-built 42-instance context-tool comparison where its file coverage (0.876) leads Graphify, code-review-graph, and Serena, with the losing rows published.&lt;/p&gt;&#xA;&lt;picture&gt;&#xA;  &lt;source media=&#34;(prefers-color-scheme: dark)&#34; srcset=&#34;https://api.star-history.com/chart?repos=repowise-dev/repowise&amp;type=date&amp;theme=dark&amp;legend=top-left&#34; /&gt;&#xA;  &lt;source media=&#34;(prefers-color-scheme: light)&#34; srcset=&#34;https://api.star-history.com/chart?repos=repowise-dev/repowise&amp;type=date&amp;legend=top-left&#34; /&gt;&#xA;  &lt;img alt=&#34;Star History Chart&#34; src=&#34;https://api.star-history.com/chart?repos=repowise-dev/repowise&amp;type=date&amp;legend=top-left&#34; /&gt;&#xA;&lt;/picture&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Strengths&#xA;    &lt;div id=&#34;strengths&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#strengths&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The agent surface is genuinely task-shaped: a question like &amp;ldquo;what breaks if I change this&amp;rdquo; returns symbol-level blast radius plus the tests that reach it, in one call, which is the context-selection job this category exists for.&lt;/li&gt;&#xA;&lt;li&gt;The benchmark section is the category&amp;rsquo;s most falsifiable: compiler-graded call-graph precision per language, a sealed held-out comparison split, and losing rows published next to the wins.&lt;/li&gt;&#xA;&lt;li&gt;One index serves agents, humans, and CI at once, so the health scores and the agent&amp;rsquo;s answers come from the same parsed facts rather than two divergent tools.&lt;/li&gt;&#xA;&lt;li&gt;The agent integrations go past MCP: generated &lt;code&gt;CLAUDE.md&lt;/code&gt;/&lt;code&gt;AGENTS.md&lt;/code&gt; from the real index keep non-MCP agents informed, and &lt;code&gt;repowise distill&lt;/code&gt; applies reversible output shrinking in the same tool.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Cautions&#xA;    &lt;div id=&#34;cautions&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#cautions&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Every published number is self-run&lt;/strong&gt;: the ContextBench comparison split is the vendor&amp;rsquo;s own construction, and no third party has replicated any figure as of 2026-10-13.&lt;/li&gt;&#xA;&lt;li&gt;The suite is far wider than the context job (health scores, security signals, SBOM and compliance reporting on the commercial roadmap), and the vendor&amp;rsquo;s own commercial document labels capabilities GA, in-development, or planned, so expect uneven maturity across layers.&lt;/li&gt;&#xA;&lt;li&gt;AGPL-3.0 is a stop sign for embedders who will not accept copyleft, and the commercial licence that removes the obligation publishes no figures, only proposal-based pricing in three models.&lt;/li&gt;&#xA;&lt;li&gt;The thin footprint cuts both ways: 7.6k stars with two single-digit Show HNs is the star-velocity-without-debate pattern this section has flagged before.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Pricing&#xA;    &lt;div id=&#34;pricing&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#pricing&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Free and open source under AGPL-3.0: the local CLI, dashboard, MCP server, and the full deterministic layer set (graph, git, health, tests, dead code, docs, decisions) with zero LLM calls and no API key.&#xA;Hosted repowise.dev is free to start.&#xA;The commercial licence (modification without AGPL obligations, in-VPC or air-gapped deployment, SLA support, patent grant) is priced per seat, per indexed repository with unlimited seats, or enterprise-wide, with specific figures provided by proposal only, none published as of 2026-10-13.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Compared to&#xA;    &lt;div id=&#34;compared-to&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#compared-to&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/context-engines/code-review-graph/&#34; &gt;code-review-graph&lt;/a&gt;: the closest member, also a stored local graph with blast radius, risk scores, and dead code; repowise adds git analytics, health scores, generated docs, decision mining, and workspaces, plus a commercial tier code-review-graph refuses to have.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/context-engines/graphify/&#34; &gt;Graphify&lt;/a&gt;: both parse a repo into a queryable graph, but Graphify&amp;rsquo;s is a deterministic AST map for structural questions while repowise&amp;rsquo;s is compiler-checked with per-edge confidence stamps and carries git, tests, and decision context alongside.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/context-engines/serena/&#34; &gt;Serena&lt;/a&gt;: Serena parses the working tree live for symbol-precise retrieval and editing; repowise keeps a standing index for repo-scale questions and change risk, so they compose on a large codebase.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Bottom line&#xA;    &lt;div id=&#34;bottom-line&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#bottom-line&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Recommended for teams whose agents burn tokens re-discovering a large codebase and who want one local index to also carry the health and dead-code answers, after re-running the vendor&amp;rsquo;s benchmark protocol on your own repository.&lt;/strong&gt;&#xA;Not for buyers who need published prices, a permissive licence, or independently replicated numbers, because none of those exist here yet.&#xA;My disagreeable claim: a context engine that also tells you what to fix first is the right product for the agent era, and the pure-retrieval columns in this table will sprout analytics layers within a year or lose the budget line to tools like this one.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Changes&#xA;    &lt;div id=&#34;changes&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#changes&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;2026-10-13 - Created from the cross-category scan&amp;rsquo;s flag (repowise-dev/repowise), admitted after the API&amp;rsquo;s NOASSERTION license reading resolved to AGPL-3.0 and the kind call held (a local index served to agents over MCP, with analytics riding the same index), with the self-run-benchmark and thin-footprint cautions recorded as the critical angle.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;See also&#xA;    &lt;div id=&#34;see-also&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#see-also&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/context-engines/context-engines-feature-matrix/&#34; &gt;Context Engines Feature Matrix&lt;/a&gt; - the category comparison this note joins as the twenty-first column&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/context-engines/code-review-graph/&#34; &gt;code-review-graph&lt;/a&gt; - the closest stored-graph member, one job over&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/context-engines/graphify/&#34; &gt;Graphify&lt;/a&gt; - the deterministic AST-graph sibling it benchmarked against&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/context-engines/serena/&#34; &gt;Serena&lt;/a&gt; - the live-parse counterpart it also benchmarked against&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;References&#xA;    &lt;div id=&#34;references&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#references&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://api.github.com/repos/repowise-dev/repowise&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=api.github.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://api.github.com/repos/repowise-dev/repowise&lt;/a&gt; - stars, forks, issues, AGPL-3.0 license, creation and push dates as of 2026-10-13&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://raw.githubusercontent.com/repowise-dev/repowise/main/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=raw.githubusercontent.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://raw.githubusercontent.com/repowise-dev/repowise/main/README.md&lt;/a&gt; - the three-way product map, the ten MCP tools, the benchmark tables with their losing rows, and the deployment matrix&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://raw.githubusercontent.com/repowise-dev/repowise/main/docs/business/COMMERCIAL.md&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=raw.githubusercontent.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://raw.githubusercontent.com/repowise-dev/repowise/main/docs/business/COMMERCIAL.md&lt;/a&gt; - the AGPL/commercial split, the three pricing models with no published figures, and the GA/in-development/planned capability labels&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pypi.org/pypi/repowise/json&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=pypi.org&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://pypi.org/pypi/repowise/json&lt;/a&gt; - the distribution at 0.56.0&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pypistats.org/api/packages/repowise/recent&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=pypistats.org&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://pypistats.org/api/packages/repowise/recent&lt;/a&gt; - 16,776 downloads in the trailing month as of 2026-10-13&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://api.npmjs.org/downloads/point/last-month/repowise&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=api.npmjs.org&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://api.npmjs.org/downloads/point/last-month/repowise&lt;/a&gt; - 1,048 downloads in the month to 2026-10-11&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://hn.algolia.com/api/v1/search?query=repowise&amp;amp;tags=story&amp;amp;hitsPerPage=10&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=hn.algolia.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://hn.algolia.com/api/v1/search?query=repowise&amp;tags=story&amp;hitsPerPage=10&lt;/a&gt; - the footprint check: two Show HNs at 4 and 1 points, the rest unrelated or the vendor&amp;rsquo;s own blog threads (fetched 2026-10-13)&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.repowise.dev&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=docs.repowise.dev&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://docs.repowise.dev&lt;/a&gt; - the docs portal (fetched 200, 2026-10-13)&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://repowise.dev&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=repowise.dev&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://repowise.dev&lt;/a&gt; - the hosted service site (fetched 200 after redirect, 2026-10-13)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
      
    </item>
    
    <item>
      <title>code-review-graph</title>
      <link>https://tomrochette.com/agents/context-engines/code-review-graph/</link>
      <pubDate>Sun, 11 Oct 2026 00:00:00 +0000</pubDate>
      <author>tom@tomrochette.com (Tom Rochette)</author>
      <guid>https://tomrochette.com/agents/context-engines/code-review-graph/</guid>
      <category>research-note</category><category>agent-curated</category><category>fully-ai-generated</category><category>llm=glm-5.3-flash</category><category>context-engines</category><category>code-graph</category><category>mcp</category><category>static-analysis</category>
      <description>&lt;p&gt;code-review-graph is a local-first Python tool that parses a repository into a Tree-sitter knowledge graph and serves it to AI coding tools over MCP and a CLI, so a review reads the blast radius of a change instead of the repository.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;The mechanism is a context engine wearing a review badge: the graph decides what enters the window, the smallest file set a change touches, and the project ships the category&amp;rsquo;s most self-critical benchmarks, stating in its own README that its recall metric is circular and its whole-corpus baseline is one no agent pays.&lt;/strong&gt;&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;What it is&#xA;    &lt;div id=&#34;what-it-is&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#what-it-is&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;A pip or pipx CLI (MIT, Python 3.10+) by Tirth (tirth8205), solo maintainer, with an MCP server on stdio or localhost HTTP and one SQLite graph per repository in &lt;code&gt;.code-review-graph/&lt;/code&gt;.&#xA;Tree-sitter parses 30-plus languages and notebooks into nodes (functions, classes, imports) and edges (calls, inheritance, tests); queries return blast radius, risk-scored change detection, hub and bridge detection, community maps, execution flows, dead code, and a generated wiki.&#xA;&lt;code&gt;install&lt;/code&gt; detects up to sixteen AI coding tools (Codex, Claude Code, Cursor, Windsurf, Zed, Continue, OpenCode, and more) and writes each one an MCP entry plus hooks, skills, and rules-file text; &lt;code&gt;uninstall&lt;/code&gt; removes exactly what it wrote.&#xA;A composite GitHub Action posts risk-scored PR comments updated in place, with an optional fail-on-risk merge gate, running the graph on your runner with no source sent anywhere; there is no telemetry, and cloud embeddings are opt-in behind a printed egress warning.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Status&#xA;    &lt;div id=&#34;status&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#status&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Active and unusually fast-growing: 32,096 stars, 2,937 forks, and 184 open issues as of 2026-10-13, created 2026-02-26, pushed 2026-10-06, so five figures of stars arrived in under eight months.&#xA;PyPI carries 2.3.9 (uploaded 2026-09-18) across 37 releases on a roughly monthly cadence, and the repo runs a documented staging to testing to main promotion flow.&#xA;The community footprint is lopsided: a Hacker News search returns three story hits, the largest a 12-point launch thread with two comments (one an install failure), so the star count arrived without front-page discussion, the Trendshift-badge pattern this section has seen before.&#xA;Every number below is the author&amp;rsquo;s own; no independent benchmark exists.&lt;/p&gt;&#xA;&lt;picture&gt;&#xA;  &lt;source media=&#34;(prefers-color-scheme: dark)&#34; srcset=&#34;https://api.star-history.com/chart?repos=tirth8205/code-review-graph&amp;type=date&amp;theme=dark&amp;legend=top-left&#34; /&gt;&#xA;  &lt;source media=&#34;(prefers-color-scheme: light)&#34; srcset=&#34;https://api.star-history.com/chart?repos=tirth8205/code-review-graph&amp;type=date&amp;theme=dark&amp;legend=top-left&#34; /&gt;&#xA;  &lt;img alt=&#34;Star History Chart&#34; src=&#34;https://api.star-history.com/chart?repos=tirth8205/code-review-graph&amp;type=date&amp;theme=dark&amp;legend=top-left&#34; /&gt;&#xA;&lt;/picture&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Strengths&#xA;    &lt;div id=&#34;strengths&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#strengths&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The benchmark section is the category&amp;rsquo;s most self-critical: recall 1.0 is labelled circular (the ground truth comes from the same graph the predictor walks), the whole-corpus baseline is called an upper bound no agent pays, the co-change mode is reported not yet usable, and pins, seeds, and a reproduction recipe are published.&lt;/li&gt;&#xA;&lt;li&gt;Incremental freshness is mechanical and measured: SHA-diffed re-parses through hooks, watch mode, or a daemon, about 2.5 seconds for a two-file edit on a 3,000-file repository.&lt;/li&gt;&#xA;&lt;li&gt;The installer is the widest wiring surface in this category&amp;rsquo;s matrix, one command configuring up to sixteen platforms, with an uninstall documented down to atomic config writes.&lt;/li&gt;&#xA;&lt;li&gt;Genuinely local: no telemetry, a SQLite file in the repo, and a stated rule that cloud embedding text is identifiers, signatures, and docstring summaries, never function bodies.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Cautions&#xA;    &lt;div id=&#34;cautions&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#cautions&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The headline roughly 63x median reduction is measured against that whole-corpus baseline; the agent-baseline eval that would measure a fairer comparison exists, but no canonical capture of it is published.&lt;/li&gt;&#xA;&lt;li&gt;A third-party write-up quotes older claims (6.8x fewer tokens on reviews, up to 49x on daily coding) that it admits it has not verified and that the current README no longer makes, so secondary coverage lags the primary numbers.&lt;/li&gt;&#xA;&lt;li&gt;Solo maintainer, eight months old: bus factor one, and the star velocity is ahead of any independent validation.&lt;/li&gt;&#xA;&lt;li&gt;Impact analysis is deliberately low-precision (flagging an extra file beats missing a dependency), which costs tokens on large dependency graphs, and the README&amp;rsquo;s own limitations put flow-detection recall at 33%.&lt;/li&gt;&#xA;&lt;li&gt;Small repositories and single-file diffs are named by the project itself as cases where graph context costs more than it saves, and the name oversells the review job: the tool judges nothing on the PR stream.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Pricing&#xA;    &lt;div id=&#34;pricing&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#pricing&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Free, MIT, entirely local.&#xA;Pricing does not apply.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Compared to&#xA;    &lt;div id=&#34;compared-to&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#compared-to&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/context-engines/graphify/&#34; &gt;Graphify&lt;/a&gt;: the closest sibling, also a local AST knowledge graph; Graphify aims at repo-scale Q&amp;amp;A and path tracing, this tool is change-and-review-first with blast radius and a CI action.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/context-engines/serena/&#34; &gt;Serena&lt;/a&gt;: LSP-backed symbol tools that parse live and edit at symbol level, more precise per symbol; this tool wins multi-hop impact questions from a stored graph.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/context-engines/repomix/&#34; &gt;Repomix&lt;/a&gt;: the one-file whole-repo pack, simplest for one-shot questions on repos that fit a window; no structural queries, and stale the moment you edit.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Bottom line&#xA;    &lt;div id=&#34;bottom-line&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#bottom-line&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Recommended for review-heavy teams on multi-thousand-file repositories that want the agent to read only the blast radius, after reading the benchmark caveats and ideally re-running the eval on your own repo; not for small repos, single-file diffs, or anyone expecting a tool that judges code.&lt;/strong&gt;&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Changes&#xA;    &lt;div id=&#34;changes&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#changes&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;2026-10-11 - Created from the code-review scan&amp;rsquo;s flag, shelved in context-engines over code-review because the graph serves context and judges nothing, with the whole-corpus-baseline and solo-maintainer cautions recorded as the critical angle.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;See also&#xA;    &lt;div id=&#34;see-also&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#see-also&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/context-engines/graphify/&#34; &gt;Graphify&lt;/a&gt; - the AST-graph sibling one job over, structure for Q&amp;amp;A instead of change impact&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/context-engines/serena/&#34; &gt;Serena&lt;/a&gt; - the LSP contrast: live symbol precision against a stored structural graph&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/context-engines/repomix/&#34; &gt;Repomix&lt;/a&gt; - the pack-everything contrast at the other end of the size curve&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/context-engines/context-engines-feature-matrix/&#34; &gt;Context Engines Feature Matrix&lt;/a&gt; - the category comparison this note joins&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/code-review/code-review-feature-matrix/&#34; &gt;Code Review Feature Matrix&lt;/a&gt; - the category the name borrows from, judgment on the PR stream&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;References&#xA;    &lt;div id=&#34;references&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#references&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://api.github.com/repos/tirth8205/code-review-graph&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=api.github.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://api.github.com/repos/tirth8205/code-review-graph&lt;/a&gt; - stars, forks, issues, license, creation and push dates as of 2026-10-11&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://raw.githubusercontent.com/tirth8205/code-review-graph/main/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=raw.githubusercontent.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://raw.githubusercontent.com/tirth8205/code-review-graph/main/README.md&lt;/a&gt; - mechanism, installer surfaces, benchmark tables, and the limitations list&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://raw.githubusercontent.com/tirth8205/code-review-graph/main/docs/FAQ.md&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=raw.githubusercontent.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://raw.githubusercontent.com/tirth8205/code-review-graph/main/docs/FAQ.md&lt;/a&gt; - the when-not-to-use size thresholds, the no-telemetry statement, and the Serena and Repomix comparison&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pypi.org/pypi/code-review-graph/json&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=pypi.org&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://pypi.org/pypi/code-review-graph/json&lt;/a&gt; - version 2.3.9 and the 37-release train&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://api.github.com/repos/tirth8205/code-review-graph/releases?per_page=5&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=api.github.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://api.github.com/repos/tirth8205/code-review-graph/releases?per_page=5&lt;/a&gt; - release cadence through v2.3.9 (2026-09-18)&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://hn.algolia.com/api/v1/items/47314090&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=hn.algolia.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://hn.algolia.com/api/v1/items/47314090&lt;/a&gt; - the 12-point launch thread with the install-failure comment&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://hn.algolia.com/api/v1/search?query=code-review-graph&amp;amp;tags=story&amp;amp;hitsPerPage=10&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=hn.algolia.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://hn.algolia.com/api/v1/search?query=code-review-graph&amp;tags=story&amp;hitsPerPage=10&lt;/a&gt; - the thin Hacker News footprint check as of 2026-10-11&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dev.to/stevengonsalvez/code-review-graph-stop-your-agent-reading-the-whole-repo-4272&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=dev.to&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://dev.to/stevengonsalvez/code-review-graph-stop-your-agent-reading-the-whole-repo-4272&lt;/a&gt; - the third-party write-up quoting unverified older figures, the record&amp;rsquo;s skeptical source&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://code-review-graph.com&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=code-review-graph.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://code-review-graph.com&lt;/a&gt; - the website, client-rendered this run (title only fetched), cited through the fetched primaries&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
      
    </item>
    
  </channel>
</rss>
