<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Coder Legion - Recent posts tagged kiro</title>
<link>https://coderlegion.com/tag/kiro</link>
<description>Powered by Question2Answer</description>
<item>
<title>From Idea to Production: Building a Spider-Man Tic-Tac-Toe Game with Kiro</title>
<link>https://coderlegion.com/23811/from-idea-to-production-building-a-spider-man-tic-tac-toe-game-with-kiro</link>
<description>&lt;p&gt;AI coding tools are changing how we build software, but I wanted to explore what it looks like to use AI as part of the &lt;strong&gt;software engineering process&lt;/strong&gt;, not just for generating code.&lt;/p&gt;
&lt;p&gt;In my latest article, I walk through building a &lt;strong&gt;Tic-Tac-Toe game with Kiro&lt;/strong&gt;, covering:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Spec-Driven Development&lt;/li&gt;
&lt;li&gt;Steering&lt;/li&gt;
&lt;li&gt;Hooks&lt;/li&gt;
&lt;li&gt;Model Context Protocol (MCP)&lt;/li&gt;
&lt;li&gt;Building the application step by step&lt;/li&gt;
&lt;li&gt;Lessons learned from using Kiro in a live student workshop&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I also share some honest reflections on the experience and a few areas where I think Kiro can continue to improve.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Read the article here:&lt;/strong&gt;&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://shakiran.hashnode.dev/building-tic-tac-toe-game-with-kiro&quot;&gt;https://shakiran.hashnode.dev/building-tic-tac-toe-game-with-kiro&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I'd love to hear your thoughts! Have you tried Kiro or another AI-powered IDE? What has your experience been like?&lt;/p&gt;
&lt;p&gt;Full workshop here:&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://youtu.be/WR1aQBMB338&quot;&gt;https://youtu.be/WR1aQBMB338&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Live Demo: &lt;a rel=&quot;nofollow&quot; href=&quot;https://kiro-tic-tac-toe-workshop.vercel.app/&quot;&gt;https://kiro-tic-tac-toe-workshop.vercel.app/&lt;/a&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/23811/from-idea-to-production-building-a-spider-man-tic-tac-toe-game-with-kiro</guid>
<pubDate>Thu, 30 Jul 2026 06:41:20 +0000</pubDate>
</item>
<item>
<title>Kiro vs Cursor: Spec-Driven or Flow? Choosing Your Agentic IDE in 2026</title>
<link>https://coderlegion.com/21578/kiro-vs-cursor-spec-driven-or-flow-choosing-your-agentic-ide-in-2026</link>
<description>&lt;p&gt;If you're shopping for an AI coding environment in 2026, two names keep surfacing in very different conversations. &lt;strong&gt;Cursor&lt;/strong&gt; shows up when developers talk about raw speed and staying in the flow. &lt;strong&gt;Kiro&lt;/strong&gt;, AWS's agentic IDE, shows up when teams talk about shipping software that survives contact with maintenance. They're both &quot;agentic IDEs,&quot; but that label hides the fact that they're built on opposite bets about how good software actually gets written.&lt;/p&gt;
&lt;p&gt;I've spent real time in both — on multi-file features, not toy demos — and this is the comparison I wish I'd had before picking a side. I write and teach about agentic engineering at &lt;a rel=&quot;nofollow&quot; href=&quot;https://cursuri-ai.ro&quot;&gt;Cursuri-AI.ro&lt;/a&gt;, Eastern Europe's AI education platform, so I'll keep this grounded in how these tools behave in real projects rather than in launch-day hype.&lt;/p&gt;
&lt;p&gt;One disclaimer up front: pricing and features in this category change almost monthly. Everything below is a mid-2026 snapshot — verify the current numbers on each tool's official page before you commit a team budget.&lt;/p&gt;
&lt;h3 id=&quot;the-core-difference-in-one-sentence&quot;&gt;The core difference in one sentence&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Cursor optimizes for &lt;em&gt;speed-to-keystroke&lt;/em&gt;; Kiro optimizes for &lt;em&gt;correctness-to-intent&lt;/em&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;That's the whole article, really. Cursor wants to keep you in flow — type intent, get code, see the diff, keep moving. Kiro wants to slow you down at exactly one point — before implementation — so the agent builds the thing you actually meant. Everything else is a consequence of that one philosophical split. Let's unpack both, then put them head to head.&lt;/p&gt;
&lt;h3 id=&quot;what-is-cursor-&quot;&gt;What is Cursor?&lt;/h3&gt;
&lt;p&gt;Cursor is an AI-native IDE built as a fork of VS Code, so the editor feels instantly familiar — extensions, keybindings, and themes mostly carry over. The difference is that the AI isn't a bolted-on plugin; the whole editing experience is designed around it.&lt;/p&gt;
&lt;p&gt;Its signature capabilities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tab completion&lt;/strong&gt; — a multi-line, context-aware autocomplete that predicts your &lt;em&gt;next edit&lt;/em&gt;, not just the next token. It's the feature people miss most when they leave.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Composer&lt;/strong&gt; — Cursor's agentic, multi-file editing mode. Describe a change in natural language and it edits across files, runs commands, and iterates. Cursor now ships &lt;strong&gt;Composer 2.5&lt;/strong&gt;, its own model trained for agentic coding, alongside routing to frontier models from Anthropic, OpenAI, and Google.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloud Agents&lt;/strong&gt; — introduced in the Cursor 3.5 release (May 20, 2026), these run in isolated cloud VMs with terminal and browser access, work across multiple repos in parallel, and report back to your IDE asynchronously.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cursor's center of gravity is &lt;strong&gt;in-the-flow coding&lt;/strong&gt;: you stay in the editor, see every diff, and the AI keeps pace with your thinking. It rewards developers who want speed without giving up granular control.&lt;/p&gt;
&lt;h3 id=&quot;what-is-kiro-&quot;&gt;What is Kiro?&lt;/h3&gt;
&lt;p&gt;Kiro is an agentic IDE from AWS, also built on the Code OSS foundation (the open-source base behind VS Code), so the editor itself is familiar. What's radically different is the engine. Kiro launched broadly in May 2026 as a ground-up successor to Amazon's earlier AI coding effort, and its headline idea — in its own framing — is &quot;moving beyond AI coding to agentic engineering.&quot;&lt;/p&gt;
&lt;p&gt;Instead of treating each request as a one-off chat turn, Kiro turns a high-level prompt into a structured &lt;strong&gt;spec&lt;/strong&gt;, then drives implementation from it. The pillars:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Spec-driven development&lt;/strong&gt; — a feature request becomes three reviewable artifacts: &lt;strong&gt;requirements&lt;/strong&gt; (written in EARS notation — Easy Approach to Requirements Syntax, a real, lightweight technique for testable requirements), &lt;strong&gt;design&lt;/strong&gt; (architecture, components, data flow), and &lt;strong&gt;tasks&lt;/strong&gt; (a sequenced, trackable list the agent implements in order). You review and correct at each stage, so ambiguity surfaces &lt;em&gt;before&lt;/em&gt; code exists.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agent hooks&lt;/strong&gt; — event-driven automations that fire when something happens in your workspace (file save, file created, commit opened). Wire &quot;run tests and a security scan on save&quot; once and forget it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Steering files&lt;/strong&gt; — markdown files that give Kiro persistent context about your conventions, libraries, and architecture, so you stop re-explaining your stack every session.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Model routing and MCP&lt;/strong&gt; — Kiro's auto-router selects across multiple models (Claude Sonnet, Qwen, DeepSeek, and others) running on Amazon Bedrock, and it supports the Model Context Protocol for connecting external tools and data sources.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Kiro's center of gravity is &lt;strong&gt;structure&lt;/strong&gt;: front-load requirements and design, get an auditable trail of &lt;em&gt;why&lt;/em&gt; the code is the way it is, and treat the spec as living documentation that doesn't rot.&lt;/p&gt;
&lt;h3 id=&quot;head-to-head-the-dimensions-that-matter&quot;&gt;Head-to-head: the dimensions that matter&lt;/h3&gt;
&lt;h4 id=&quot;workflow-philosophy&quot;&gt;Workflow philosophy&lt;/h4&gt;
&lt;p&gt;This is the real decision. &lt;strong&gt;Cursor&lt;/strong&gt; assumes you'll steer continuously — you're in the loop on every diff, correcting as you go. &lt;strong&gt;Kiro&lt;/strong&gt; assumes you'll steer &lt;em&gt;up front&lt;/em&gt; — you invest in the spec, then let the agent execute against it. Cursor feels faster minute-to-minute; Kiro feels more accountable feature-to-feature. Neither is wrong; they fit different work.&lt;/p&gt;
&lt;h4 id=&quot;speed-vs-maintainability&quot;&gt;Speed vs. maintainability&lt;/h4&gt;
&lt;p&gt;Cursor wins on time-to-first-result. For exploration, prototypes, bug fixes, and one-file changes, the flow model is simply quicker — there's no spec overhead to pay. Kiro wins when the work is durable and shared: the spec phase is overhead that pays off precisely when more than one person (or agent) will touch the code and conventions matter. Reach for Cursor's flow on a throwaway script; reach for Kiro's specs on a feature that has to live.&lt;/p&gt;
&lt;h4 id=&quot;automation-and-persistent-context&quot;&gt;Automation and persistent context&lt;/h4&gt;
&lt;p&gt;Both fight the &quot;re-explain your project every session&quot; problem, but differently. Kiro makes it first-class with &lt;strong&gt;steering files&lt;/strong&gt; and &lt;strong&gt;agent hooks&lt;/strong&gt; — persistent rules plus event-driven automation baked into the IDE. Cursor has project rules too, but its automation story is lighter and more editor-centric. If you want the agent to behave like a teammate who's read your style guide, Kiro's approach is more explicit. This is really &lt;em&gt;context engineering&lt;/em&gt; applied to a coding agent — and encoding the durable knowledge an agent needs is a discipline in its own right, one our &lt;a rel=&quot;nofollow&quot; href=&quot;https://cursuri-ai.ro/courses/context-engineering-memorie-agenti&quot;&gt;course on context engineering and agent memory&lt;/a&gt; covers end to end.&lt;/p&gt;
&lt;h4 id=&quot;models&quot;&gt;Models&lt;/h4&gt;
&lt;p&gt;Both route across multiple models rather than locking you to one. Kiro's auto-router runs on Amazon Bedrock; Cursor blends its own Composer model with frontier models from the major labs. Practically, you're not betting on a single model with either — a healthy default in a year where model availability itself has proven volatile.&lt;/p&gt;
&lt;h4 id=&quot;extensibility-mcp-&quot;&gt;Extensibility (MCP)&lt;/h4&gt;
&lt;p&gt;Both support the &lt;strong&gt;Model Context Protocol&lt;/strong&gt;, the open standard that lets an agent reach your database, ticketing system, or internal docs without bespoke glue for each one. MCP support matters more than it sounds, because it's what turns a code assistant into something wired into your actual stack. If MCP is new to you, building and integrating MCP servers is its own skill set — our &lt;a rel=&quot;nofollow&quot; href=&quot;https://cursuri-ai.ro/courses/mcp-model-context-protocol&quot;&gt;MCP course&lt;/a&gt; walks through standing up real servers and wiring them into agentic workflows.&lt;/p&gt;
&lt;h3 id=&quot;pricing-side-by-side-mid-2026-snapshot-&quot;&gt;Pricing, side by side (mid-2026 snapshot)&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th&gt;&lt;/th&gt;&lt;th&gt;Free tier &lt;/th&gt;&lt;th&gt;Entry paid &lt;/th&gt;&lt;th&gt;Notes&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Cursor&lt;/strong&gt; &lt;/td&gt;&lt;td&gt;Hobby (free) &lt;/td&gt;&lt;td&gt;Pro — $20/user/mo &lt;/td&gt;&lt;td&gt;Teams at $40 and $120/user/mo; Pro includes a fixed pool of frontier-model usage&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Kiro&lt;/strong&gt; &lt;/td&gt;&lt;td&gt;50 agent interactions/mo &lt;/td&gt;&lt;td&gt;Pro — $19/user/mo &lt;/td&gt;&lt;td&gt;Higher tiers add more interactions; credit-based, no daily/weekly rate limits, pre-paid overages&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;A couple of honest notes on cost:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cursor's&lt;/strong&gt; $20 Pro includes a fixed amount of frontier-model usage; heavy users hit the ceiling and either upgrade or lean on its cheaper Auto/Composer routing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kiro&lt;/strong&gt; meters by &lt;em&gt;agent interactions&lt;/em&gt; rather than tokens, which some teams find easier to reason about; enterprise tiers add IAM/SSO, usage dashboards, cost controls, and IP indemnity.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Prices and tiers shift constantly here. Treat the table as a snapshot, not a quote, and confirm before budgeting.&lt;/p&gt;
&lt;h3 id=&quot;so-which-should-you-choose-&quot;&gt;So which should you choose?&lt;/h3&gt;
&lt;p&gt;The honest, task-based answer:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Choose Cursor if&lt;/strong&gt; you want the best in-the-flow editing experience, you value fast inline generation and tight control over every diff, and most of your work is exploratory, iterative, or single-file. It's the natural pick for a developer who loves their editor and wants AI to keep pace.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Choose Kiro if&lt;/strong&gt; you're building features meant to live and be maintained, more than one person touches the codebase, and you want an auditable trail of &lt;em&gt;why&lt;/em&gt; the code looks the way it does. The spec phase is overhead that buys you correctness and maintainability — worth it exactly when the work is durable.&lt;/p&gt;
&lt;p&gt;And the answer a lot of senior engineers actually land on? &lt;strong&gt;Both, by task.&lt;/strong&gt; Vibe-code the prototype in Cursor; spec out the production feature in Kiro. The two philosophies aren't rivals so much as different modes for different moments — and knowing &lt;em&gt;which mode fits which task&lt;/em&gt; is the real skill. That through-line, the spectrum from prompt-to-app speed to structured engineering, is exactly what our &lt;a rel=&quot;nofollow&quot; href=&quot;https://cursuri-ai.ro/courses/vibe-coding-prompt-la-aplicatie&quot;&gt;vibe coding course&lt;/a&gt; treats as complementary philosophies rather than a holy war.&lt;/p&gt;
&lt;h3 id=&quot;the-skill-underneath-the-tools&quot;&gt;The skill underneath the tools&lt;/h3&gt;
&lt;p&gt;Here's the part the demos hide: both tools amplify the engineer you already are. Point Cursor's flow at a vague intent and you get a fast wall of code you didn't design. Point Kiro's spec phase at sloppy thinking and you get a beautifully structured plan for the wrong thing. The developers getting real leverage from either aren't the ones who memorized the shortcuts — they're the ones who understand specs, agent architecture, context management, and the MCP ecosystem underneath.&lt;/p&gt;
&lt;p&gt;That foundation is what we build at our Eastern European AI education platform — practical, project-based courses taught around real repositories with an interactive AI instructor, not slide decks. If you mainly want to master the AI-native editor workflow, our hands-on track on &lt;a rel=&quot;nofollow&quot; href=&quot;https://cursuri-ai.ro/courses/cursor-pro&quot;&gt;using Cursor as a pro&lt;/a&gt; is built around real multi-file, real-repo work rather than toy examples.&lt;/p&gt;
&lt;h3 id=&quot;frequently-asked-questions&quot;&gt;Frequently asked questions&lt;/h3&gt;
&lt;h4 id=&quot;is-kiro-better-than-cursor-&quot;&gt;Is Kiro better than Cursor?&lt;/h4&gt;
&lt;p&gt;Neither is universally &quot;better&quot; — they optimize for different things. Kiro is better for durable, maintained software where a spec and an audit trail pay off; Cursor is better for fast, in-the-flow coding, prototyping, and single-file changes. Match the tool to the task, not to a tribe.&lt;/p&gt;
&lt;h4 id=&quot;can-i-use-kiro-and-cursor-together-&quot;&gt;Can I use Kiro and Cursor together?&lt;/h4&gt;
&lt;p&gt;Yes, and many engineers do. A common pattern is prototyping or exploring quickly in Cursor, then using Kiro's spec-driven flow for production features that need to be reviewed and maintained. They're complementary modes, not mutually exclusive products.&lt;/p&gt;
&lt;h4 id=&quot;are-kiro-and-cursor-based-on-vs-code-&quot;&gt;Are Kiro and Cursor based on VS Code?&lt;/h4&gt;
&lt;p&gt;Both build on the Code OSS foundation behind VS Code, so the editor surface feels familiar in either. The difference is the engine, not the shell: Cursor centers on in-editor flow, while Kiro centers on turning prompts into specs before code.&lt;/p&gt;
&lt;h4 id=&quot;do-kiro-and-cursor-support-mcp-&quot;&gt;Do Kiro and Cursor support MCP?&lt;/h4&gt;
&lt;p&gt;Both support the Model Context Protocol, the open standard for connecting external tools and data sources to the agent. That means you can wire either into your database, ticketing system, or internal docs without bespoke integration code for each one.&lt;/p&gt;
&lt;h4 id=&quot;which-is-cheaper-kiro-or-cursor-&quot;&gt;Which is cheaper, Kiro or Cursor?&lt;/h4&gt;
&lt;p&gt;As of mid-2026 their entry paid tiers are close — Cursor Pro at around $20 per user per month and Kiro Pro at around $19 — but they meter usage differently: Cursor includes a fixed pool of frontier-model usage, while Kiro counts agent interactions. Your real cost depends on how heavily you use the agent, so check both pricing pages against your actual workload before deciding.&lt;/p&gt;
&lt;h3 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;Kiro and Cursor aren't really competing for the same slot — they're two answers to two different questions. Cursor asks &quot;how do I keep a developer in flow and fast?&quot; Kiro asks &quot;how do I make the agent build what was actually meant, in a way we can maintain?&quot; Both answer their own question extremely well, and both are compromised at the other one.&lt;/p&gt;
&lt;p&gt;So don't ask &quot;which is better.&quot; Ask &quot;better for which task, on which kind of code.&quot; Build the judgment to use the spec when the work is durable and the flow when it's disposable — and you'll get more out of &lt;em&gt;either&lt;/em&gt; tool than someone who picked a tribe. Try each on a real feature, not a demo, and the difference becomes obvious fast.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Written by the team at &lt;a rel=&quot;nofollow&quot; href=&quot;https://cursuri-ai.ro&quot;&gt;Cursuri-AI.ro&lt;/a&gt; — practical, hands-on AI engineering courses for developers and professionals across Eastern Europe, from agentic coding and MCP to context engineering and the modern AI-native IDE workflow.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sources:&lt;/strong&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;https://kiro.dev/&quot;&gt;kiro.dev&lt;/a&gt; · &lt;a rel=&quot;nofollow&quot; href=&quot;https://kiro.dev/docs/specs/&quot;&gt;Kiro Specs docs&lt;/a&gt; · &lt;a rel=&quot;nofollow&quot; href=&quot;https://kiro.dev/docs/&quot;&gt;Kiro pricing &amp;amp; docs&lt;/a&gt; · &lt;a rel=&quot;nofollow&quot; href=&quot;https://cursor.com/docs/models-and-pricing&quot;&gt;Cursor Models &amp;amp; Pricing&lt;/a&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/21578/kiro-vs-cursor-spec-driven-or-flow-choosing-your-agentic-ide-in-2026</guid>
<pubDate>Mon, 29 Jun 2026 15:11:16 +0000</pubDate>
</item>
<item>
<title>KiroGraph: from a personal side project to community-AI-driven tool</title>
<link>https://coderlegion.com/19041/kirograph-from-a-personal-side-project-to-community-ai-driven-tool</link>
<description>&lt;p&gt;This is the second part of my &quot;Build in Public with &lt;strong&gt;Kiro&lt;/strong&gt;&quot; series. I'm an AWS Community Builder, and this is the story of what happens when you share something early, people actually care, and the project grows faster than you expected.&lt;/p&gt;
&lt;h3 id=&quot;tl-dr&quot;&gt;TL;DR&lt;/h3&gt;
&lt;p&gt;Since the &lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/ddesio/building-kirograph-a-100-local-semantic-code-knowledge-graph-for-kiro-2ja4&quot;&gt;first article&lt;/a&gt;, &lt;strong&gt;KiroGraph&lt;/strong&gt; went from a CLI agent prototype (v0.5.0) to a multi-client, 30+ language, architecture-aware code knowledge graph (v0.13.1). It's now &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.npmjs.com/package/kirograph&quot;&gt;published on npm&lt;/a&gt;, has a full &lt;a rel=&quot;nofollow&quot; href=&quot;https://davide-desio-eleva.github.io/kirograph/&quot;&gt;documentation site&lt;/a&gt;, an interactive graph dashboard, and supports Claude Code and Codex alongside &lt;strong&gt;Kiro&lt;/strong&gt;. Most of this happened because people showed up, contributed, and pushed the project in directions I hadn't planned.&lt;/p&gt;
&lt;p&gt;{% github davide-desio-eleva/kirograph %}&lt;/p&gt;
&lt;h3 id=&quot;where-we-left-off&quot;&gt;Where we left off&lt;/h3&gt;
&lt;p&gt;The first post covered the core idea: pre-index your codebase into a semantic graph so the AI agent queries structure instead of re-reading files. At that point &lt;strong&gt;KiroGraph&lt;/strong&gt; had structural indexing, seven semantic engines, an interactive installer, and a CLI agent for &lt;code&gt;kiro-cli&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;That was v0.5.0. Here's what happened next.&lt;/p&gt;
&lt;h3 id=&quot;kiro-acceleration-effect&quot;&gt;Kiro acceleration effect&lt;/h3&gt;
&lt;p&gt;I want to be honest about something: &lt;strong&gt;this pace of development wouldn't have been possible without Kiro.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;KiroGraph&lt;/strong&gt; went from v0.5.0 to v0.13.1 in about five weeks, adding architecture analysis, 14 new languages, 17 framework resolvers, an interactive graph dashboard, multi-client support, &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.npmjs.com/package/kirograph&quot;&gt;npm publication&lt;/a&gt;, a &lt;a rel=&quot;nofollow&quot; href=&quot;https://davide-desio-eleva.github.io/kirograph/&quot;&gt;documentation site&lt;/a&gt;, and dozens of bug fixes. As a side project. With a day job.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Kiro's spec-driven development is the reason.&lt;/strong&gt; When I need to add a new framework resolver, I don't start from a blank file. I write a spec, &lt;strong&gt;Kiro&lt;/strong&gt; breaks it into tasks, and the implementation flows from there. The agent understands the existing patterns (especially with &lt;strong&gt;KiroGraph&lt;/strong&gt; indexing itself), so new code fits the architecture without me hand-holding every decision.&lt;/p&gt;
&lt;p&gt;But here's where it gets interesting for open source specifically.&lt;/p&gt;
&lt;h4 id=&quot;simpler-to-contribute&quot;&gt;Simpler to contribute&lt;/h4&gt;
&lt;p&gt;When contributors work in a TypeScript codebase that isn't their primary stack, it's &lt;strong&gt;Kiro&lt;/strong&gt; that makes that possible. The spec-driven approach gives structure to the work, the agent handles the TypeScript idioms, and the contributor focuses on what they actually know: the domain expertise. Someone who knows Elixir deeply can contribute a full Phoenix framework resolver without being a TypeScript expert. Someone who understands how Claude Code's MCP configuration works can wire up a multi-client integration without knowing the internals of the indexing pipeline.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I received PRs for features I wouldn't have imagined building myself&lt;/strong&gt;, in domains where I lack expertise, and they were solid. My role shifted from &quot;implement everything&quot; to &quot;review and guide&quot;. That's a fundamentally different way to run an open source project.&lt;/p&gt;
&lt;h4 id=&quot;it-works-the-other-way-around-as-well&quot;&gt;It works the other way around as well&lt;/h4&gt;
&lt;p&gt;Community members bring ideas from their domain. Architecture analysis, coupling metrics, layer detection patterns. These came from people who understood the problem space deeply. I had the codebase context and the TypeScript implementation skills. &lt;strong&gt;Kiro&lt;/strong&gt; bridged the gap: their ideas became specs, specs became tasks, tasks became working code. Fast.&lt;/p&gt;
&lt;p&gt;This is the pattern I didn't anticipate: &lt;strong&gt;community members bring domain knowledge and ideas, Kiro accelerates the implementation regardless of who writes the code&lt;/strong&gt;, and the project ships features that no single person would have built alone.&lt;/p&gt;
&lt;h4 id=&quot;people-as-global-reviewer&quot;&gt;People as global reviewer&lt;/h4&gt;
&lt;p&gt;When you build in public with an AI-accelerated workflow, the community acts as a global reviewer. People try &lt;strong&gt;KiroGraph&lt;/strong&gt; on codebases I've never seen, in languages I don't write daily, with frameworks I've never used. They find the bugs that only surface in production-like conditions. &lt;/p&gt;
&lt;p&gt;he multi-language call edge bug in v0.12.0 had actually existed since v0.1.0. Nobody noticed because nobody was using &lt;strong&gt;KiroGraph&lt;/strong&gt; on a Java project until someone did.&lt;/p&gt;
&lt;p&gt;Speed matters here and when a bug report comes in, I can fix it very quickly. &lt;strong&gt;Kiro&lt;/strong&gt; understands the codebase, the fix is scoped, the PR is merged, and the reporter sees their issue resolved in hours, not weeks. &lt;strong&gt;That responsiveness builds trust, and trust brings more contributors.&lt;/strong&gt;&lt;/p&gt;
&lt;h4 id=&quot;-acceleration-is-real&quot;&gt;⚡ Acceleration is real&lt;/h4&gt;
&lt;p&gt;I'm not being hyperbolic: combination of &lt;strong&gt;Kiro's&lt;/strong&gt; spec-driven development, &lt;strong&gt;KiroGraph's&lt;/strong&gt; self-indexing feedback loop, and a community that both contributes code and stress-tests the result creates a development velocity that feels disproportionate to the effort. One person maintaining a 30+ language code analysis tool with 18 MCP tools, seven semantic engines, and an interactive dashboard shouldn't be sustainable. &lt;strong&gt;But it is, because the tooling makes it sustainable.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you're hesitant to contribute to a project because the stack isn't your primary one, &lt;strong&gt;Kiro&lt;/strong&gt; removes that barrier: the domain expertise is yours while the implementation details are handled.&lt;/p&gt;
&lt;h3 id=&quot;kiro-community&quot;&gt;Kiro Community&lt;/h3&gt;
&lt;p&gt;As mentioned earlier, the project's trajectory changed because people from *&lt;em&gt;Kiro Community&lt;/em&gt; engaged with it. Two main examples:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.linkedin.com/in/argomauro/&quot;&gt;Maurizio Argoneto&lt;/a&gt; commented on the first post about &quot;hierarchical summarization&quot; and the &quot;big picture&quot; problem. That conversation directly influenced the architecture analysis feature, one of the most useful additions for understanding large codebases at a high level.&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.linkedin.com/in/alessandrofranceschi/&quot;&gt;Alessandro Franceschi&lt;/a&gt; contributed Elixir/Phoenix language support and the multi-client integration (Claude Code and Codex), expanding &lt;strong&gt;KiroGraph&lt;/strong&gt; well beyond its original &lt;strong&gt;Kiro&lt;/strong&gt;-only scope.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;I was initially reluctant to open this project to other AI clients, agents, or IDEs, but Alessandro explained the situation to me very clearly: people are using Kiro in a wide range of ways and within a multi-tool AI development process that fits their needs. Restricting this project to Kiro alone would, in my view, mean closing the door to those who actually want to use it in this scenario. So I’m not opening it to competing AIs, but rather to complementary ones.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The stargazers, the folks who opened issues, the people who tried it on their own codebases and reported what broke. All of that feedback shaped what got built and in what order. That's the kind of feedback loop that makes building in public worthwhile.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qmn1qzsjng7lp029yvsl.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xzdv5fjdrg5dkj55czy2.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;p&gt;Kiro Community is really outstanding in this.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zmhuf87y3c4mjfjlgv9m.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;p&gt;The project has been recognized by AWS Community Builders team&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/erdubr4ob2e362fl6vfc.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/44db0toa3qmnkcqzzin5.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;p&gt;And also enthusiastically endorsed by Kiro Ambassadors&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/raye2k8jvip5aosmpkxm.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;p&gt;Noted by Vice President at Amazon Web Services&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gak402i1y5xx3l8z8bo2.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;p&gt;Loved by far more people than I might imagine (those are just sample, I may be missing some screenshots, apologies for that!)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q5fuq8najm9nyhryrb6t.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zoon1mytwgnjr5mxr5k9.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hr4okm6h7raroc4nou0o.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y878ypr9a5zmff25b0o5.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ajw9ijxu38na4cfkd615.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fk5z1017k2lyu9nwz5r0.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sww6q4t85u46so53otpn.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;new-features-by-numbers&quot;&gt;New features by numbers&lt;/h3&gt;
&lt;p&gt;As a result, from v0.5.0 to v0.13.1, I've added several features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;30+ languages&lt;/strong&gt; supported (up from 17)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;17 framework resolvers&lt;/strong&gt; added&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;18 MCP tools&lt;/strong&gt; (up from 12)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Interactive graph dashboard&lt;/strong&gt; with search, path finding, clustering, heat maps&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Architecture analysis&lt;/strong&gt; with coupling metrics&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multi-client support&lt;/strong&gt; (Kiro, Claude Code, Codex)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Full &lt;a rel=&quot;nofollow&quot; href=&quot;https://davide-desio-eleva.github.io/kirograph/&quot;&gt;documentation site&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.npmjs.com/package/kirograph&quot;&gt;Published on npm&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;-what-got-built&quot;&gt;️ What got built&lt;/h3&gt;
&lt;p&gt;Now let's walk through the features themselves.&lt;/p&gt;
&lt;h4 id=&quot;-architecture-analysis-v0-6-0-&quot;&gt;️ Architecture analysis (v0.6.0)&lt;/h4&gt;
&lt;p&gt;An architecture layer that detects packages (via manifest files like &lt;code&gt;package.json&lt;/code&gt;, &lt;code&gt;go.mod&lt;/code&gt;, &lt;code&gt;Cargo.toml&lt;/code&gt;, &lt;code&gt;pom.xml&lt;/code&gt;, etc.) and assigns files to architectural layers: &lt;code&gt;api&lt;/code&gt;, &lt;code&gt;service&lt;/code&gt;, &lt;code&gt;data&lt;/code&gt;, &lt;code&gt;ui&lt;/code&gt;, &lt;code&gt;shared&lt;/code&gt;. Each layer uses language-specific glob patterns, so a Python Flask project and a TypeScript Express project both get correctly classified.&lt;/p&gt;
&lt;p&gt;On top of that, &lt;strong&gt;KiroGraph&lt;/strong&gt; now computes coupling metrics between packages: afferent coupling (Ca), efferent coupling (Ce), and instability (&lt;code&gt;Ce / (Ca + Ce)&lt;/code&gt;). Three new MCP tools expose this to the agent: &lt;code&gt;kirograph_architecture&lt;/code&gt;, &lt;code&gt;kirograph_coupling&lt;/code&gt;, &lt;code&gt;kirograph_package&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The practical effect: when &lt;strong&gt;Kiro&lt;/strong&gt; needs to understand where a new feature should live, or whether a refactor will create circular dependencies between packages, it can query the architecture graph instead of guessing from file paths.&lt;/p&gt;
&lt;h4 id=&quot;embedding-model-selection-v0-7-0-&quot;&gt;Embedding model selection (v0.7.0)&lt;/h4&gt;
&lt;p&gt;The installer now presents an arrow-key menu with four curated models plus a custom option. The &lt;code&gt;embeddingDim&lt;/code&gt; config field means all vector engines adapt automatically. Migrated from &lt;code&gt;@xenova/transformers&lt;/code&gt; (v2) to &lt;code&gt;@huggingface/transformers&lt;/code&gt; (v3), enabling support for modern ONNX models.&lt;/p&gt;
&lt;h4 id=&quot;the-esbuild-migration-v0-8-0-&quot;&gt;The esbuild migration (v0.8.0)&lt;/h4&gt;
&lt;p&gt;The old &lt;code&gt;tsc&lt;/code&gt; build took 5-10 seconds. After migrating to &lt;code&gt;esbuild&lt;/code&gt; + &lt;code&gt;tsx&lt;/code&gt;, builds dropped to ~400ms with incremental watch mode. Type checking is now decoupled (&lt;code&gt;npm run typecheck&lt;/code&gt;), so you get fast feedback during development and correctness checks when you need them.&lt;/p&gt;
&lt;p&gt;Small change, big quality-of-life improvement. Especially when you're iterating on the tool using the tool itself.&lt;/p&gt;
&lt;h4 id=&quot;caveman-mode-v0-9-0-&quot;&gt;Caveman mode (v0.9.0)&lt;/h4&gt;
&lt;p&gt;Inspired by &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/JuliusBrussee/caveman&quot;&gt;caveman&lt;/a&gt; by JuliusBrussee. The insight: &lt;strong&gt;KiroGraph's&lt;/strong&gt; graph tools already return compact, structured data. The bottleneck in long sessions isn't the tool calls, it's the verbose prose the agent wraps around them.&lt;/p&gt;
&lt;p&gt;Caveman mode compresses the agent's communication style. Four levels: &lt;code&gt;off&lt;/code&gt;, &lt;code&gt;lite&lt;/code&gt;, &lt;code&gt;full&lt;/code&gt;, &lt;code&gt;ultra&lt;/code&gt;. At &lt;code&gt;ultra&lt;/code&gt;, you get abbreviations, arrows for causality, maximum compression. The rules are injected via the steering file and CLI agent prompt, so they're always in context with zero extra tool calls.&lt;/p&gt;
&lt;p&gt;It never touches code blocks, file paths, or technical terms. Only prose. And it auto-reverts to normal for security warnings or irreversible actions.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;kirograph caveman ultra   # maximum compression
kirograph caveman off     # back to normal
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&quot;hotspots-snapshots-amp-dead-code-v0-10-0-&quot;&gt;Hotspots, snapshots &amp;amp; dead code (v0.10.0)&lt;/h4&gt;
&lt;p&gt;Three new MCP tools that give the agent analytical capabilities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;kirograph_hotspots&lt;/code&gt; finds the most-connected symbols by edge degree. Before you touch a function, you want to know if it's called from 3 places or 300.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kirograph_surprising&lt;/code&gt; finds non-obvious cross-file connections. Scores edges by path distance × kind weight. The highest-scoring pairs are the ones that represent unexpected coupling worth investigating.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kirograph_diff&lt;/code&gt; compares the current graph against a saved snapshot. Save before a refactor, diff after. See exactly what changed structurally.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Plus CLI commands for all of them, and a snapshot system (&lt;code&gt;kirograph snapshot save|list|diff&lt;/code&gt;) that stores lightweight graph states in &lt;code&gt;.kirograph/snapshots/&lt;/code&gt;.&lt;/p&gt;
&lt;h4 id=&quot;interactive-graph-dashboard-v0-11-0-&quot;&gt;Interactive graph dashboard (v0.11.0)&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;kirograph export&lt;/code&gt; now renders a full interactive graph visualization. No server required, works offline, three static files.&lt;/p&gt;
&lt;p&gt;This is the kind of thing that's hard to describe in text. You open it in a browser and suddenly the structure of your codebase is &lt;em&gt;visible&lt;/em&gt;. Where the hotspots are, which modules are tightly coupled, where the dead ends live.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/davide-desio-eleva/kirograph/main/assets/export.gif&quot; alt=&quot;KiroGraph export&quot;&gt;&lt;/p&gt;
&lt;h4 id=&quot;elixir-phoenix-java-c-edge-cases-v0-12-0-&quot;&gt;Elixir, Phoenix, Java/C# edge cases (v0.12.0)&lt;/h4&gt;
&lt;p&gt;Full Elixir language support: modules, functions, macros, protocols, implementations, structs. Plus Phoenix framework detection with route extraction from &lt;code&gt;router.ex&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The bigger fix in this release was improving multi-language call edge extraction. It turned out that &lt;code&gt;walkForCalls&lt;/code&gt; only recognized &lt;code&gt;call_expression&lt;/code&gt; (JS/TS/Go/Rust), which meant C#, Java, Python, Ruby, and PHP produced zero call edges. The &lt;code&gt;kirograph_callers&lt;/code&gt; and &lt;code&gt;kirograph_callees&lt;/code&gt; tools were silently returning nothing for those languages. Fixed now, with per-language name extraction using tree-sitter field lookups.&lt;/p&gt;
&lt;p&gt;Same story for inheritance edges in C# and Java, and namespace/package import resolution. These were the kind of bugs that only surface when real people try the tool on real codebases in languages other than TypeScript.&lt;/p&gt;
&lt;h4 id=&quot;sync-progress-amp-stability-v0-12-1-&quot;&gt;Sync progress &amp;amp; stability (v0.12.1)&lt;/h4&gt;
&lt;p&gt;Large codebase support got serious attention here. Paginated embedding (pages of 2,000 instead of loading everything into memory), WASM parser poisoning detection (skip a language if its parser aborts instead of retrying every file), sync progress output, and a staleness warning in &lt;code&gt;kirograph_status&lt;/code&gt; when the index is behind.&lt;/p&gt;
&lt;p&gt;The MCP sync awareness is particularly nice: when pending unindexed files exceed a threshold, the agent gets a warning and can choose to wait rather than working with stale data.&lt;/p&gt;
&lt;h4 id=&quot;documentation-site-amp-npm-v0-12-2-&quot;&gt;Documentation site &amp;amp; npm (v0.12.2)&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;KiroGraph&lt;/strong&gt; is now &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.npmjs.com/package/kirograph&quot;&gt;published on npm&lt;/a&gt; (&lt;code&gt;npm install -g kirograph&lt;/code&gt;) and has a full &lt;a rel=&quot;nofollow&quot; href=&quot;https://davide-desio-eleva.github.io/kirograph/&quot;&gt;documentation site&lt;/a&gt; with dark theme, responsive layout, scroll-spy navigation, and pages for docs, MCP tools, CLI reference, and changelog.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kfr7rkbrxq7w4xb84si6.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;p&gt;This was overdue. A tool that saves tokens shouldn't require reading source code to understand how to use it.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/787twxlag8sgm4wbyxwa.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;p&gt;And also how it evolves&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qaiufnlbuqukuocnmw0h.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;h4 id=&quot;the-big-language-expansion-v0-13-0-&quot;&gt;The big language expansion (v0.13.0)&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f42pszpawcha95agwruu.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;p&gt;14 new languages in one release: Scala, Lua, Zig, Bash, OCaml, Elm, Solidity, Vue, Objective-C, YAML, HCL/Terraform, CSS, SCSS, HTML.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;So many languages that I had to add a search feature to the docs.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;17 new framework resolvers: Play (Scala), Nuxt/Vue, Solidity (Hardhat/Foundry/Truffle), SST, AWS CDK, Serverless Framework, AWS SAM, Terraform/OpenTofu, Pulumi, CloudFormation, Kubernetes/Helm, Docker Compose, Ansible, Angular, and AWS Amplify Gen 2.&lt;/p&gt;
&lt;p&gt;My best pick: since I regularly work on IaC projects, why shouldn’t I use KiroGraph for them?&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1aomv03xqhs1bsxfpgoc.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;p&gt;This is where the project's scope expanded significantly. &lt;strong&gt;KiroGraph&lt;/strong&gt; started as a TypeScript-focused tool. Now it indexes infrastructure-as-code (Terraform resources, CloudFormation stacks, Kubernetes manifests), smart contracts (Solidity with Hardhat/Foundry detection), and serverless configurations (SAM, CDK, SST handler resolution).&lt;/p&gt;
&lt;p&gt;The framework resolvers are particularly useful: they understand that a handler string like &lt;code&gt;&quot;src/handlers/auth.handler&quot;&lt;/code&gt; in a SAM template points to an actual function symbol, and they create the edge in the graph. The agent can then trace from an API route all the way to the implementation without reading YAML files.&lt;/p&gt;
&lt;h4 id=&quot;multi-client-support-v0-13-1-&quot;&gt;Multi-client support (v0.13.1)&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;KiroGraph&lt;/strong&gt; can now be installed for Claude Code and Codex in addition to &lt;strong&gt;Kiro&lt;/strong&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;kirograph install --target claude  # .mcp.json + .kirograph/claude.md + CLAUDE.md import
kirograph install --target codex   # .kirograph/codex.md + AGENTS.md block
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;All targets share the same &lt;code&gt;.kirograph/&lt;/code&gt; data. Installing another target only writes that tool's integration files. The graph is the graph, regardless of which agent queries it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Kiro&lt;/strong&gt; remains the primary supported target. Claude Code and Codex are marked experimental, but they work. The community asked for it, and it made sense: the value of a pre-indexed code graph isn't tied to a specific IDE.&lt;/p&gt;
&lt;h3 id=&quot;what-s-next&quot;&gt;What's next&lt;/h3&gt;
&lt;p&gt;The roadmap from the first post is mostly done. &lt;/p&gt;
&lt;p&gt;What's left and what's new:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Smarter sync&lt;/strong&gt;: content hash per embedding to skip unchanged symbols even when the file was modified. The paginated embedding in v0.12.1 was a step, but there's more to gain.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cross-project search&lt;/strong&gt;: for monorepos and workspaces with shared libraries. The graph is per-project right now.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Richer graph traversal&lt;/strong&gt;: &quot;explain this path&quot; semantically, not just the nodes but why each edge exists.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plugin system for engines and languages&lt;/strong&gt;: the abstractions are clean enough that external contributions could be self-contained packages.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kiro Power packaging&lt;/strong&gt;: embedding &lt;strong&gt;KiroGraph&lt;/strong&gt; into a configurable &lt;strong&gt;Kiro&lt;/strong&gt; Power to reduce friction for folks who just want to install and go.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;But in reality, the community is shaping the roadmap: this tool is designed to save tokens and improve the AI’s understanding of the provided code, so it is the users who ultimately determine what matters most.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This is happening daily:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/efno93ptwpg7rdmqi4c9.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;p&gt;What’s really on my mind: I’m particularly curious about what it would mean to integrate features from &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/rtk-ai/rtk&quot;&gt;RTK&lt;/a&gt; into KiroGraph. I’m not aiming for a “one tool for everything” approach, but if I had to prioritize, this is probably what I’d focus on first (&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/davide-desio-eleva/kirograph/tree/feature/rtk&quot;&gt;spoiler here&lt;/a&gt;).&lt;/p&gt;
&lt;h3 id=&quot;try-it&quot;&gt;Try it&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npm install -g kirograph
cd your-project
kirograph install
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The installer walks you through everything. Start with &lt;code&gt;cosine&lt;/code&gt; if you're not sure which engine to pick. Switch later if you need to.&lt;/p&gt;
&lt;p&gt;{% github davide-desio-eleva/kirograph %}&lt;/p&gt;
&lt;p&gt;The repo is public. PRs are welcome, I'd love to hear from you.&lt;br&gt;
A very special thanks to the Stargazers, your support means a lot and truly makes a difference.&lt;/p&gt;
&lt;h3 id=&quot;who-am-i&quot;&gt;Who am I&lt;/h3&gt;
&lt;p&gt;I'm &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.linkedin.com/in/desiodavide&quot;&gt;D. De Sio&lt;/a&gt; and I work as a Head of Software Engineering in &lt;a rel=&quot;nofollow&quot; href=&quot;https://eleva.it/&quot;&gt;Eleva&lt;/a&gt;.&lt;br&gt;
As of Feb 2026, I’m an &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.credly.com/badges/9929fdf2-7a3d-4013-9de6-57c80e4920b9/public_url&quot;&gt;AWS Certified Solution Architect Professional&lt;/a&gt; and &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.credly.com/badges/8c5a1487-191b-429e-8c2d-7cee43bf316b/public_url&quot;&gt;AWS Certified DevOps Engineer Professional&lt;/a&gt;, but also a &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.linkedin.com/company/aws-user-group-pavia/&quot;&gt;User Group Leader (in Pavia)&lt;/a&gt;, an &lt;strong&gt;AWS Community Builder&lt;/strong&gt; and, last but not least, a #serverless enthusiast.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9pg2fg4j8dpxd2m1bt6b.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/19041/kirograph-from-a-personal-side-project-to-community-ai-driven-tool</guid>
<pubDate>Wed, 27 May 2026 08:24:08 +0000</pubDate>
</item>
<item>
<title>Building KiroGraph: a 100% local semantic code knowledge graph for Kiro</title>
<link>https://coderlegion.com/19040/building-kirograph-a-100-local-semantic-code-knowledge-graph-for-kiro</link>
<description>&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;This is part of my &quot;Build in Public&quot; with Kiro series. I'm an AWS Community Builder, and this is the story of building a tool by using the tool itself, which is either very meta or very efficient, depending on how you look at it.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;tl-dr-1&quot;&gt;TL;DR&lt;/h3&gt;
&lt;p&gt;KiroGraph is a local code indexing system for &lt;a rel=&quot;nofollow&quot; href=&quot;https://kiro.dev/&quot;&gt;Kiro&lt;/a&gt; AI IDE. It turns your codebase into a queryable structural using a semantic graph, dramatically reducing AI tool calls and token usage (up to 90%).&lt;/p&gt;
&lt;p&gt;Instead of re-reading files with grep/glob, the AI queries a pre-built AST-based graph (plus optional embeddings), making code navigation faster, cheaper, and more scalable.&lt;/p&gt;
&lt;p&gt;It supports multiple vector engines (e.g. SQlite, PGlite, Orama Qdrant, Typesense) and is fully local, with an interactive installer and automatic syncing.&lt;/p&gt;
&lt;p&gt;{% github davide-desio-eleva/kirograph %}&lt;/p&gt;
&lt;h3 id=&quot;how-it-started&quot;&gt;How it started&lt;/h3&gt;
&lt;p&gt;A few weeks ago I came across &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/colbymchenry/codegraph&quot;&gt;CodeGraph&lt;/a&gt; by &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/colbymchenry&quot;&gt;Colby McHenry&lt;/a&gt;, a semantic code knowledge graph for Claude Code. The idea was brilliant: instead of letting the AI wander through your codebase with grep and file reads, you give it a pre-indexed 100% local graph it can query instantly. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fewer tool calls, less context burned, faster responses.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I use &lt;a rel=&quot;nofollow&quot; href=&quot;https://kiro.dev&quot;&gt;Kiro&lt;/a&gt;, AWS's spec-driven AI IDE, and there was nothing equivalent for it. So I did what any reasonable developer does when they see a good idea: I ported it.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y0ombkg46on8mfjqmki1.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;p&gt;That's how KiroGraph started but the community’s genuine interest motivated me to essentially rebuild CodeGraph from the ground up and significantly expand its functionality.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gyz1be6236grtzd6lcew.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;why-this-should-matters-to-us-the-token-problem-&quot;&gt;Why this should matters to us (the token problem)&lt;/h3&gt;
&lt;p&gt;When you ask an AI agent to work on a complex task, &quot;fix the auth bug&quot;, &quot;add rate limiting to the API&quot;, &quot;refactor the payment service&quot;, the agent needs to understand your codebase before it can do anything useful. The way it typically does that is by reading files, running grep, globbing directories. Every one of those is a tool call.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tool calls cost tokens&lt;/strong&gt;. Lots of them. And they're slow.&lt;br&gt;
Aside from cost, &lt;strong&gt;we’re currently in a period where reasonable plans for using AI are either being rate-limited or subject to increasingly restrictive limits&lt;/strong&gt;. The community is actively exploring solutions to optimize requests and responses, reduce token usage, and improve overall efficiency.&lt;/p&gt;
&lt;p&gt;The insight behind KiroGraph (and CodeGraph before it) is simple: &lt;strong&gt;your codebase doesn't change that often&lt;/strong&gt;. Between agent runs, you might touch a handful of files. &lt;/p&gt;
&lt;p&gt;Why should the agent re-discover the structure from scratch every single time?&lt;/p&gt;
&lt;p&gt;KiroGraph pre-indexes everything, functions, methods, classes, interfaces, types, call relationships, import graphs, type hierarchies, into a 100% local SQLite database. When Kiro needs context, it doesn't read files. It queries the graph. One MCP tool call instead of twenty file reads and multiple tool calls.&lt;/p&gt;
&lt;p&gt;The impact is real: tasks that once consumed entire context windows simply don’t anymore: saving tokens, improving efficiency, and delivering greater speed.&lt;/p&gt;
&lt;h3 id=&quot;-benchmark&quot;&gt;⚖️ Benchmark&lt;/h3&gt;
&lt;blockquote&gt;&lt;p&gt;An image is worth a thousand words&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kt1o01bxal0vidnyaoht.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;p&gt;Up to a 90%+ reduction in token usage for common read patterns in the KiroGraph codebase. I can confirm similar results across different and larger codebases as well.&lt;/p&gt;
&lt;p&gt;These numbers represent the average outcome of identical requests executed with and without KiroGraph, across different semantic engines for comparison.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What this practically means for me is that I used up all my tokens with Kiro on the $20 plan in just 10 days. Now, I’ve gone a full month without even reaching the full allowance.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&quot;-kirograph-architecture&quot;&gt;️ KiroGraph architecture&lt;/h3&gt;
&lt;p&gt;The tool has two indexing layers.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Structural indexing&lt;/strong&gt; is always on. &lt;a rel=&quot;nofollow&quot; href=&quot;https://tree-sitter.github.io/tree-sitter/&quot;&gt;tree-sitter&lt;/a&gt; parses every source file into an AST and extracts nodes (functions, classes, routes, components, 24 kinds total) and edges (calls, imports, extends, implements, references, and more). Everything lands in &lt;code&gt;kirograph.db&lt;/code&gt;. This powers all the graph traversal tools: find callers, trace impact, detect circular deps, find dead code.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Semantic indexing&lt;/strong&gt; is opt-in. When you enable it, KiroGraph generates 768-dimensional vector embeddings for every embeddable symbol using &lt;code&gt;nomic-ai/nomic-embed-text-v1.5&lt;/code&gt; (~130MB, downloaded once to &lt;code&gt;~/.kirograph/models/&lt;/code&gt;). This powers natural-language search, ask for &quot;auth middleware&quot; and get the relevant functions even if they're named &lt;code&gt;validateJwt&lt;/code&gt; or &lt;code&gt;checkPermissions&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The index stays fresh automatically via &lt;strong&gt;Kiro hooks&lt;/strong&gt;. &lt;br&gt;
File saved, mark dirty. Agent stops, sync if dirty. &lt;br&gt;
Batched, efficient, zero overhead during active editing.&lt;/p&gt;
&lt;p&gt;The agent knows what to do through a Kiro steering file, which the final KiroGraph adopter can easily adapt to suit their specific needs.&lt;/p&gt;
&lt;h3 id=&quot;is-kirograph-a-rag-graphrag-&quot;&gt;Is KiroGraph a RAG/GraphRAG?&lt;/h3&gt;
&lt;p&gt;It’s useful to compare KiroGraph to both a classic RAG system and a GraphRAG approach, because it sits somewhere in between, but also slightly outside both categories.&lt;/p&gt;
&lt;p&gt;1) A local RAG works on unstructured text, splitting documents into chunks and retrieving the most relevant pieces via embeddings.&lt;br&gt;
&lt;strong&gt;KiroGraph instead indexes code structure&lt;/strong&gt;, where functions, classes, and relationships come directly from the AST.&lt;br&gt;
This removes chunking entirely and &lt;strong&gt;replaces text retrieval with symbol-level navigation over a code graph.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;2) GraphRAG builds graphs by extracting entities and relationships from documents, then uses them to improve retrieval quality.&lt;br&gt;
&lt;strong&gt;KiroGraph doesn’t infer the graph from text, it derives it deterministically from the codebase structure itself.&lt;/strong&gt;&lt;br&gt;
As a result, its graph is not an approximation of knowledge, but a direct representation of the system architecture.&lt;/p&gt;
&lt;p&gt;The key difference: RAG retrieves text, GraphRAG organizes text, KiroGraph represents code structure.&lt;br&gt;
And embeddings in KiroGraph are optional, not foundational.&lt;br&gt;
The core idea is not better retrieval, but queryable program structure with semantic enrichment on top.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dcmdrcrcijq37arv19v0.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;a-lot-of-semantic-engine-possibility&quot;&gt;A lot of semantic engine possibility&lt;/h3&gt;
&lt;p&gt;Here's where it got interesting. &lt;br&gt;
Once you have embeddings, you need somewhere to put them, and &lt;em&gt;how&lt;/em&gt; you store and search them has real consequences at scale.&lt;/p&gt;
&lt;p&gt;The original approach is &lt;strong&gt;cosine similarity over all vectors in SQLite&lt;/strong&gt;. That's fine for small to medium projects, but for a large codebase with thousands of indexed symbols, you want approximate nearest-neighbour (ANN) search with a proper index structure.&lt;/p&gt;
&lt;p&gt;So I built support for seven engines, each solving a slightly different problem:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;cosine (default): the original linear scan over the &lt;code&gt;vectors&lt;/code&gt; table in &lt;code&gt;kirograph.db&lt;/code&gt;. No extra deps. Works great up to a few thousand symbols. If you just want to try semantic search without any setup, this is it.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/asg017/sqlite-vec&quot;&gt;Alex Garcia's sqlite-vec&lt;/a&gt; brings ANN search to SQLite via a native extension. Sub-linear query time, stays in the SQLite ecosystem. Best for large codebases that don't want to run a separate process.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/oramasearch/orama&quot;&gt;Orama&lt;/a&gt; does something clever: hybrid search. One query combines full-text relevance and vector similarity, which produces better results than running them separately and merging. Pure JS, no native compilation. If you want the best result quality and no native dependencies, Orama is the choice.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/electric-sql/pglite&quot;&gt;PGlite&lt;/a&gt; is PostgreSQL compiled to WASM with the &lt;code&gt;pgvector&lt;/code&gt; extension. You get &lt;strong&gt;exact&lt;/strong&gt; (not approximate) nearest-neighbour search, &lt;code&gt;ON CONFLICT&lt;/code&gt; upserts, HNSW indexing, all the PostgreSQL semantics, in-process, no server. Pure WASM means no native binaries and no compilation. And because it's exact, results are deterministic and reproducible. &lt;strong&gt;I particularly like this one.&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/lancedb/lancedb&quot;&gt;LanceDB&lt;/a&gt; stores embeddings in Apache Lance columnar format. Columnar storage is efficient for batch reads and writes, which matters a lot during indexing. Pure JS, no native deps, sub-linear ANN search.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/qdrant/qdrant&quot;&gt;Qdrant&lt;/a&gt; is a dedicated vector database, HNSW index, cosine distance, the full feature set. KiroGraph spawns the Qdrant binary as a managed child process via &lt;code&gt;qdrant-local&lt;/code&gt;. The server runs as a persistent background daemon, state tracked in &lt;code&gt;.kirograph/qdrant-server.json&lt;/code&gt;. &lt;strong&gt;This is the heavy option.&lt;/strong&gt; You get Qdrant's full query capabilities and a proper production-grade vector store. The trade-off is you're now running a binary.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/typesense/typesense&quot;&gt;Typesense&lt;/a&gt; is a search engine that added HNSW vector search. KiroGraph auto-downloads the binary (~37MB, cached at &lt;code&gt;~/.kirograph/bin/&lt;/code&gt;) and manages it as a background daemon. State tracked in &lt;code&gt;.kirograph/typesense-server.json&lt;/code&gt;. Similar to Qdrant in concept, persistent binary daemon, but with Typesense's search-engine heritage. Very excellent for hybrid queries.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;-adding-installer-because-devex-always-matters&quot;&gt;️ Adding installer because DevEx always matters&lt;/h3&gt;
&lt;p&gt;A lot of CLI tools treat configuration as an afterthought. You edit a config file, restart, wonder why nothing worked, read the docs, try again. &lt;strong&gt;It's friction.&lt;/strong&gt; You don't want friction when working within an AI powered IDE like Kiro.&lt;/p&gt;
&lt;p&gt;I wanted KiroGraph's setup to be genuinely good and simple. &lt;/p&gt;
&lt;p&gt;So the installer is interactive, not just &lt;code&gt;yes/no&lt;/code&gt; prompts but arrow-key menus with descriptions for each option. Run it once and you walk away with a fully working setup, no post-install surprises.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;kirograph install
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/886icfbao6h6g4mywnss.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;p&gt;Here's every decision the installer walks you through, and why each one matters.&lt;/p&gt;
&lt;h4 id=&quot;enable-semantic-embeddings&quot;&gt;Enable semantic embeddings&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f3nvn617g7xkyk0w7aag.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;p&gt;The first question is whether to turn on semantic search at all. Structural indexing is always on and costs nothing extra. Semantic indexing is opt-in because it requires a local embedding model (~130MB, downloaded once) and adds time to every index run.&lt;/p&gt;
&lt;p&gt;If your team mostly does exact symbol lookups, &quot;go to definition&quot; style queries, structural-only is fast and lightweight. If you want to ask things like &quot;where is rate limiting handled?&quot; or &quot;which functions deal with user authentication?&quot;, you need embeddings.&lt;/p&gt;
&lt;p&gt;The installer is upfront about this: it tells you what you're signing up for before you say yes.&lt;/p&gt;
&lt;h4 id=&quot;embedding-model&quot;&gt;Embedding model&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fcldo1okczybjcowc6ls.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;p&gt;Once you enable embeddings, the installer asks which HuggingFace model to use. The default is &lt;code&gt;nomic-ai/nomic-embed-text-v1.5&lt;/code&gt;, a solid general-purpose model that produces 768-dimensional embeddings and runs well locally via Ollama.&lt;/p&gt;
&lt;p&gt;You can enter any HuggingFace model identifier in &lt;code&gt;org/model-name&lt;/code&gt; format. If you enter something non-standard, the installer rejects it and explains the expected format. If you enter a non-default model, it reminds you to run &lt;code&gt;ollama pull &amp;lt;model&amp;gt;&lt;/code&gt; before indexing.&lt;/p&gt;
&lt;p&gt;The reason this is configurable: &lt;strong&gt;embedding quality varies by domain.&lt;/strong&gt; Code-specific models like &lt;code&gt;jinaai/jina-embeddings-v2-base-code&lt;/code&gt; may outperform general models on certain queries. &lt;br&gt;
&lt;strong&gt;Giving you control here means you're not locked in.&lt;/strong&gt;&lt;/p&gt;
&lt;h4 id=&quot;semantic-engine&quot;&gt;Semantic engine&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o544yvt7pcgmf46vnsau.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;p&gt;This is the arrow-key menu. Each option shows a one-line description so you can make an informed choice without reading docs:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-plaintext&quot;&gt;? Choose the semantic search engine:
  ❯ cosine      In-process cosine similarity. No extra deps. Best for small/medium projects.
    sqlite-vec  ANN index. Sub-linear search. Best for large codebases. Needs: better-sqlite3, sqlite-vec (native).
    orama       Hybrid search (full-text + vector). Pure JS. Needs: @orama/orama, ...
    pglite      Hybrid search via PostgreSQL + pgvector. Exact results. Pure WASM. Needs: @electric-sql/pglite.
    lancedb     ANN search via LanceDB (Apache Lance columnar format). Pure JS. Needs: @lancedb/lancedb.
    qdrant      ANN search via Qdrant embedded binary (HNSW index, Cosine). Needs: qdrant-local.
    typesense   ANN search via Typesense (auto-downloaded binary, HNSW, Cosine). Needs: typesense.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After you pick one, the installer immediately runs &lt;code&gt;npm install&lt;/code&gt; for the required dependencies. &lt;strong&gt;No separate step, no forgotten follow-up. If the install fails, it tells you exactly what to run manually.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For engines that spawn a binary (qdrant, typesense), it also asks whether you want a dashboard (a web UI to navigate the vectors).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6ll04lwuaiyfx4vlrhrf.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;h4 id=&quot;extract-docstrings&quot;&gt;Extract docstrings&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/agfyluq16v8sp63e0ua7.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;p&gt;This controls whether KiroGraph reads JSDoc, Python docstrings, and inline comments from your source files and stores them as symbol metadata. Enabled by default.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Docstrings significantly improve semantic search quality.&lt;/strong&gt; When a function has a good docstring, the embedding captures its &lt;em&gt;intent&lt;/em&gt;, not just its name. A function called &lt;code&gt;proc&lt;/code&gt; with a docstring &quot;processes incoming webhook payloads and dispatches to handlers&quot; will surface correctly when someone searches for &quot;webhook processing&quot;. Without the docstring, the name alone gives the model almost nothing to work with.&lt;/p&gt;
&lt;p&gt;The trade-off is slightly longer indexing time. For most projects it's negligible. The installer lets you disable it if you're indexing a very large codebase and want the fastest possible first run.&lt;/p&gt;
&lt;h4 id=&quot;track-call-sites&quot;&gt;Track call sites&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yuyaoh8db8q3a7f7rqua.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;p&gt;This controls whether KiroGraph records the exact line and column of every function call when building call graph edges. Enabled by default.&lt;/p&gt;
&lt;p&gt;With call sites tracked, you get precise &quot;go to call site&quot; information in addition to &quot;which functions call this symbol&quot;. The &lt;code&gt;kirograph_callers&lt;/code&gt; and &lt;code&gt;kirograph_callees&lt;/code&gt; MCP tools return not just the caller's name and file, but the exact location of the call. This is what makes the call graph actually useful for debugging and impact analysis.&lt;/p&gt;
&lt;p&gt;The trade-off is index size: call site data adds rows to the edges table. On codebases with millions of call expressions this can get large. If you only care about the structural shape of the call graph and not the precise locations, you can disable this to keep the database lean.&lt;/p&gt;
&lt;h4 id=&quot;indexing&quot;&gt;Indexing&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d7rgcqf7wiufd97y685l.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;p&gt;The final prompt asks whether to run the first full index immediately. If you say yes, the installer runs &lt;code&gt;kirograph index&lt;/code&gt;, shows you a live progress output (files scanned, symbols extracted, embeddings generated), and reports the final counts.&lt;/p&gt;
&lt;p&gt;This is the &quot;zero to working&quot; moment: by the time the installer exits, your graph is built and Kiro can start using it. No deferred setup, no &quot;remember to run this before you start&quot;.&lt;/p&gt;
&lt;p&gt;Each phase is surfaced in the output so it's always clear what's happening: scanning files, parsing, resolving references, detecting languages and frameworks, generating embeddings. If something is slow, you know exactly where.&lt;/p&gt;
&lt;p&gt;The philosophy across all of this is the same: the installer should leave you in a working state and make every choice transparent. If something requires a separate binary or native compilation, you know before you commit to it. If a step can be done for you automatically, it is.&lt;/p&gt;
&lt;h3 id=&quot;the-feedback-loop-that-accelerated-everything&quot;&gt;The feedback loop that accelerated everything&lt;/h3&gt;
&lt;p&gt;Here's the part I didn't fully anticipate: because I've used KiroGraph to indexes itself, so I could use it in Kiro &lt;em&gt;while building it&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Every time I added a new engine, the Kiro agent could immediately use &lt;code&gt;kirograph_context&lt;/code&gt; and &lt;code&gt;kirograph_callers&lt;/code&gt; to understand the existing codebase structure. It knew which interfaces to implement, where the integration points were, what the existing patterns looked like, without me having to explain any of it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;This is augmenting spec-driven development with actual graph-powered context.&lt;/strong&gt; The agent writes specs and code that fits the existing architecture because it can see the architecture. Not by reading files, by querying the graph.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The speed difference and saving in tokens is hard to overstate&lt;/strong&gt;. Tasks that would have required multiple rounds of &quot;read this file, now read that file, now understand how they connect&quot; collapsed into a single &lt;code&gt;kirograph_context&lt;/code&gt; call followed by implementation.&lt;/p&gt;
&lt;h3 id=&quot;supported-languages-and-frameworks&quot;&gt;Supported languages and frameworks&lt;/h3&gt;
&lt;p&gt;As per &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/colbymchenry/codegraph&quot;&gt;CodeGraph&lt;/a&gt; by &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/colbymchenry&quot;&gt;Colby McHenry&lt;/a&gt;, KiroGraph supports different languages and framework (and it easy to add new ones).&lt;/p&gt;
&lt;h3 id=&quot;just-try-it&quot;&gt;Just try it&lt;/h3&gt;
&lt;p&gt;Go to &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/davide-desio-eleva/kirograph/stargazers&quot;&gt;KiroGraph repository&lt;/a&gt;, fork it, try it. PR's are welcome.&lt;br&gt;
It’s not yet published on npm, so it should be considered an alpha version. Expect significant changes in the future so do not consider it stable.&lt;/p&gt;
&lt;p&gt;{% github davide-desio-eleva/kirograph %}&lt;/p&gt;
&lt;p&gt;The installer will walk you through everything. If you're not sure which engine to pick, start with &lt;code&gt;cosine&lt;/code&gt;, it works out of the box with no dependencies and you can always switch later. If you're using it on large codebases, pick &lt;code&gt;pglite&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The repo is public. If you build on it, find a bug, or have thoughts on the engine choices, I'd love to hear from you.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A very special thanks to the &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/davide-desio-eleva/kirograph/stargazers&quot;&gt;Stargazers&lt;/a&gt;, your support means a lot and truly makes a difference.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&quot;who-am-i-1&quot;&gt;Who am I&lt;/h3&gt;
&lt;p&gt;I'm &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.linkedin.com/in/desiodavide&quot;&gt;D. De Sio&lt;/a&gt; and I work as a Head of Software Engineering in &lt;a rel=&quot;nofollow&quot; href=&quot;https://eleva.it/&quot;&gt;Eleva&lt;/a&gt;.&lt;br&gt;
As of Feb 2026, I’m an &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.credly.com/badges/9929fdf2-7a3d-4013-9de6-57c80e4920b9/public_url&quot;&gt;AWS Certified Solution Architect Professional&lt;/a&gt; and &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.credly.com/badges/8c5a1487-191b-429e-8c2d-7cee43bf316b/public_url&quot;&gt;AWS Certified DevOps Engineer Professional&lt;/a&gt;, but also a &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.linkedin.com/company/aws-user-group-pavia/&quot;&gt;User Group Leader (in Pavia)&lt;/a&gt;, an &lt;strong&gt;AWS Community Builder&lt;/strong&gt; and, last but not least, a #serverless enthusiast.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1vvb6ms9ieiv69fdfy6u.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;It’s always amusing how AI is convinced developers are basically 80% coffee, 20% code, and somehow still functional.                                                &lt;/p&gt;
&lt;/blockquote&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/19040/building-kirograph-a-100-local-semantic-code-knowledge-graph-for-kiro</guid>
<pubDate>Wed, 27 May 2026 08:23:42 +0000</pubDate>
</item>
</channel>
</rss>