@niroai/niro 0.17.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/CHANGELOG.md +136 -0
  2. package/README.md +123 -302
  3. package/bin/niro.js +12 -1
  4. package/docs/agent-antigravity.md +37 -0
  5. package/docs/agent-claude-code.md +48 -0
  6. package/docs/agent-claude-desktop.md +47 -0
  7. package/docs/agent-cline.md +42 -0
  8. package/docs/agent-codex.md +45 -0
  9. package/docs/agent-copilot-cli.md +42 -0
  10. package/docs/agent-cursor.md +44 -0
  11. package/docs/agent-factory.md +42 -0
  12. package/docs/agent-gemini-cli.md +42 -0
  13. package/docs/agent-goose.md +42 -0
  14. package/docs/agent-kiro.md +37 -0
  15. package/docs/agent-opencode.md +37 -0
  16. package/docs/agent-vscode.md +45 -0
  17. package/docs/agent-windsurf.md +38 -0
  18. package/docs/answer-shapes.md +69 -0
  19. package/docs/builds-and-updates.md +68 -0
  20. package/docs/cloud-README.md +372 -0
  21. package/docs/configuring-a-folder.md +51 -0
  22. package/docs/connect-ci.md +24 -0
  23. package/docs/connect-overview.md +20 -0
  24. package/docs/connect-review-bots.md +17 -0
  25. package/docs/connect-team-server.md +12 -0
  26. package/docs/connect-terminal.md +49 -0
  27. package/docs/connect-web-agents.md +9 -0
  28. package/docs/connect-your-ai-assistant.md +59 -175
  29. package/docs/coverage-audit-and-consent.md +51 -0
  30. package/docs/evaluate-what-niro-did.md +271 -0
  31. package/docs/faq-assistants-and-mcp.md +122 -0
  32. package/docs/faq-feedback-and-receipts.md +33 -0
  33. package/docs/faq-indexing.md +127 -0
  34. package/docs/faq-install-and-setup.md +103 -0
  35. package/docs/faq-licence-and-plans.md +86 -0
  36. package/docs/faq-login-and-account.md +69 -0
  37. package/docs/faq-offline.md +34 -0
  38. package/docs/faq-performance.md +33 -0
  39. package/docs/faq-privacy-and-security.md +113 -0
  40. package/docs/faq-uninstall.md +47 -0
  41. package/docs/faq-updates.md +59 -0
  42. package/docs/faq-worktrees-and-branches.md +59 -0
  43. package/docs/faq-wrong-or-missing-answers.md +275 -0
  44. package/docs/hosted-only.md +33 -0
  45. package/docs/how-the-graph-works.md +47 -0
  46. package/docs/index.md +157 -0
  47. package/docs/licence-and-plans.md +72 -0
  48. package/docs/lifecycle-debug.md +48 -0
  49. package/docs/lifecycle-onboarding.md +32 -0
  50. package/docs/lifecycle-overview.md +77 -0
  51. package/docs/lifecycle-plan-and-design.md +44 -0
  52. package/docs/lifecycle-review.md +30 -0
  53. package/docs/lifecycle-security-and-privacy.md +35 -0
  54. package/docs/lifecycle-test.md +28 -0
  55. package/docs/lifecycle-write-code.md +35 -0
  56. package/docs/llms-full.txt +8015 -0
  57. package/docs/llms.txt +126 -0
  58. package/docs/playbook-add-a-feature.md +108 -0
  59. package/docs/playbook-change-safely.md +93 -0
  60. package/docs/playbook-data-and-events.md +107 -0
  61. package/docs/playbook-debug-after-a-change.md +96 -0
  62. package/docs/playbook-debug-config.md +95 -0
  63. package/docs/playbook-debug-exception.md +124 -0
  64. package/docs/playbook-debug-failing-service-call.md +119 -0
  65. package/docs/playbook-debug-slow-path.md +80 -0
  66. package/docs/playbook-debug-wrong-value.md +137 -0
  67. package/docs/playbook-onboard.md +95 -0
  68. package/docs/playbook-review-a-change.md +72 -0
  69. package/docs/playbook-test-a-change.md +73 -0
  70. package/docs/reference-cli.md +113 -0
  71. package/docs/reference-config-files.md +42 -0
  72. package/docs/reference-engine-commands.md +56 -0
  73. package/docs/reference-environment-variables.md +89 -0
  74. package/docs/reference-exit-codes.md +67 -0
  75. package/docs/reference-limits.md +75 -0
  76. package/docs/reference-mcp-tools.md +326 -0
  77. package/docs/reference-messages.md +180 -0
  78. package/docs/secrets-and-masking.md +48 -0
  79. package/docs/supported-c.md +130 -0
  80. package/docs/supported-cpp.md +157 -0
  81. package/docs/supported-csharp.md +211 -0
  82. package/docs/supported-go.md +258 -0
  83. package/docs/supported-java.md +226 -0
  84. package/docs/supported-javascript.md +223 -0
  85. package/docs/supported-kotlin.md +124 -0
  86. package/docs/supported-overview.md +89 -0
  87. package/docs/supported-php.md +157 -0
  88. package/docs/supported-python.md +224 -0
  89. package/docs/supported-ruby.md +162 -0
  90. package/docs/supported-rust.md +150 -0
  91. package/docs/supported-swift.md +133 -0
  92. package/docs/supported-typescript.md +220 -0
  93. package/docs/tokens-speed-and-accuracy.md +99 -0
  94. package/docs/troubleshooting.md +42 -0
  95. package/docs/uninstall.md +74 -0
  96. package/docs/what-leaves-your-machine.md +71 -0
  97. package/docs/where-things-are-stored.md +59 -0
  98. package/docs/worktrees-and-branches.md +55 -0
  99. package/package.json +5 -3
  100. package/src/commands/add-repo.js +5 -0
  101. package/src/commands/auditSend.js +67 -0
  102. package/src/commands/build.js +6 -0
  103. package/src/commands/docsSend.js +73 -0
  104. package/src/commands/engine.js +120 -0
  105. package/src/commands/engineRoutes.js +105 -0
  106. package/src/commands/guide.js +254 -0
  107. package/src/commands/init.js +6 -2
  108. package/src/commands/initLocal.js +96 -0
  109. package/src/commands/journalSend.js +47 -0
  110. package/src/commands/login.js +89 -12
  111. package/src/commands/mcp.js +22 -6
  112. package/src/commands/plan.js +99 -0
  113. package/src/commands/repoPush.js +33 -0
  114. package/src/commands/requestIntegration.js +38 -0
  115. package/src/commands/share.js +56 -0
  116. package/src/commands/start.js +451 -371
  117. package/src/commands/status.js +57 -0
  118. package/src/commands/takeover.js +6 -0
  119. package/src/commands/uninstall.js +180 -0
  120. package/src/commands/upgrade.js +38 -8
  121. package/src/commands/watch.js +420 -6
  122. package/src/index.js +174 -3
  123. package/src/lib/agentApi.js +32 -1
  124. package/src/lib/api.js +20 -6
  125. package/src/lib/auditUpload.js +293 -0
  126. package/src/lib/branchDrift.js +149 -0
  127. package/src/lib/choose.js +116 -0
  128. package/src/lib/cloudGuard.js +74 -0
  129. package/src/lib/credentials.js +2 -2
  130. package/src/lib/docsMarked.js +55 -0
  131. package/src/lib/docsState.js +213 -0
  132. package/src/lib/docsUpload.js +481 -0
  133. package/src/lib/engine.js +619 -0
  134. package/src/lib/folderSync.js +2 -1
  135. package/src/lib/graphCheck.js +40 -0
  136. package/src/lib/guide.js +293 -0
  137. package/src/lib/guideSearch.js +252 -0
  138. package/src/lib/integrationRequest.js +89 -0
  139. package/src/lib/journalUpload.js +147 -0
  140. package/src/lib/languages.js +129 -0
  141. package/src/lib/lease.js +375 -0
  142. package/src/lib/localBuild.js +285 -0
  143. package/src/lib/localEngine.js +210 -0
  144. package/src/lib/localOnboard.js +124 -0
  145. package/src/lib/localWorktrees.js +243 -0
  146. package/src/lib/machineCheck.js +58 -0
  147. package/src/lib/mcpClients.js +10 -1
  148. package/src/lib/migrationNotice.js +118 -0
  149. package/src/lib/modelFetch.js +153 -0
  150. package/src/lib/nestedOutput.js +23 -9
  151. package/src/lib/onboardingLog.js +34 -0
  152. package/src/lib/planUsage.js +165 -0
  153. package/src/lib/progressBar.js +46 -0
  154. package/src/lib/prompt.js +1 -1
  155. package/src/lib/redact.js +155 -0
  156. package/src/lib/release.js +33 -0
  157. package/src/lib/repoPush.js +495 -0
  158. package/src/lib/secret.js +1 -1
  159. package/src/lib/service.js +372 -63
  160. package/src/lib/shareCode.js +367 -0
  161. package/src/lib/shareExclusions.js +114 -0
  162. package/src/lib/shareFiles.js +129 -0
  163. package/src/lib/spinner.js +9 -5
  164. package/src/lib/watchDaemon.js +33 -10
  165. package/src/lib/watchState.js +12 -1
  166. package/src/lib/windowsPaths.js +67 -0
  167. package/src/mcp/lineCheck.js +382 -0
  168. package/src/mcp/lineName.js +92 -0
  169. package/src/mcp/localBackend.js +751 -0
  170. package/src/mcp/localMode.js +383 -0
  171. package/src/mcp/localSkill.js +189 -0
  172. package/src/mcp/server.js +610 -79
  173. package/src/mcp/setup.js +519 -131
  174. package/src/mcp/shellSearchHook.js +509 -0
  175. package/src/mcp/teardown.js +173 -91
  176. package/src/mcp/usingNiro.js +39 -0
  177. package/docs/working-on-branches.md +0 -162
package/bin/niro.js CHANGED
@@ -1,2 +1,13 @@
1
1
  #!/usr/bin/env node
2
- require("../src/index.js");
2
+ // The Stop hook runs at the end of every turn, so it does not load the whole command line first.
3
+ if (process.argv[2] === "mcp" && process.argv[3] === "line-check") {
4
+ let raw = "";
5
+ try {
6
+ raw = require("fs").readFileSync(0, "utf8");
7
+ } catch {
8
+ // No stdin: the hook lets the assistant stop.
9
+ }
10
+ require("../src/mcp/lineCheck").run(raw);
11
+ } else {
12
+ require("../src/index.js");
13
+ }
@@ -0,0 +1,37 @@
1
+ # Connect Antigravity to Niro
2
+
3
+ **One command connects Antigravity to Niro:**
4
+
5
+ ```
6
+ niro mcp install --client antigravity
7
+ ```
8
+
9
+ Then restart Antigravity, because it reads its settings only when it starts.
10
+ <!-- source: src/mcp/setup.js:279-414 (CLIENTS), :3071-3085 ("Restart your AI assistant") -->
11
+
12
+ You must have run `niro start` first, so that you are signed in. See [connect-your-ai-assistant.md](connect-your-ai-assistant.md).
13
+ <!-- source: src/mcp/setup.js:574-583, :2950-2955 ("Not signed in. Run niro login") -->
14
+
15
+ ## What the install writes
16
+
17
+ - The connection, in `~/.gemini/config/mcp_config.json`. If only the older file `~/.gemini/antigravity/mcp_config.json` exists, it uses that one.
18
+ <!-- source: src/mcp/setup.js:396-413 -->
19
+
20
+ ## How Antigravity learns to use Niro
21
+
22
+ - Nothing beyond the connection.
23
+ <!-- source: src/mcp/setup.js (no instruction file for antigravity) -->
24
+
25
+ ## Check that it works
26
+
27
+ Ask it a question about your code, such as "which routes does this project serve?". An answer from Niro starts with "Answered from the local graph on this machine (niro-local)."
28
+ <!-- source: src/mcp/localBackend.js:189 -->
29
+
30
+ ## Remove it
31
+
32
+ ```
33
+ niro mcp uninstall --client antigravity
34
+ ```
35
+
36
+ If something goes wrong, see [faq-assistants-and-mcp.md](faq-assistants-and-mcp.md).
37
+ <!-- source: src/mcp/teardown.js:645-653 -->
@@ -0,0 +1,48 @@
1
+ # Connect Claude Code to Niro
2
+
3
+ **One command connects Claude Code to Niro:**
4
+
5
+ ```
6
+ niro mcp install --client claude-code
7
+ ```
8
+
9
+ Then restart Claude Code, because it reads its settings only when it starts.
10
+ <!-- source: src/mcp/setup.js:279-414 (CLIENTS), :3071-3085 ("Restart your AI assistant") -->
11
+
12
+ You must have run `niro start` first, so that you are signed in. See [connect-your-ai-assistant.md](connect-your-ai-assistant.md).
13
+ <!-- source: src/mcp/setup.js:574-583, :2950-2955 ("Not signed in. Run niro login") -->
14
+
15
+ ## What the install writes
16
+
17
+ - The connection, through Claude Code's own command: `claude mcp add --scope user niro ... -- niro mcp serve`.
18
+ <!-- source: src/mcp/setup.js:738-755 -->
19
+
20
+ ## How Claude Code learns to use Niro
21
+
22
+ - Six hooks in `~/.claude/settings.json`. A hook is a small command Claude Code runs at a fixed moment. Niro's hooks run after Claude Code compacts its memory, when you send a prompt, before searches and file reads, before a shell command that searches or reads source code, before an edit (the impact check), and when a task ends (the end-of-task line check).
23
+ - A short section in `~/.claude/CLAUDE.md`.
24
+ - Two skills: `~/.claude/skills/niro-skill` (how to use the tools) and `~/.claude/skills/niro-local` (how to manage Niro from chat).
25
+ <!-- source: src/mcp/setup.js:783-818, :1928-1985; src/mcp/shellSearchHook.js -->
26
+
27
+ ## Check that it works
28
+
29
+ Ask it a question about your code, such as "which routes does this project serve?". An answer from Niro starts with "Answered from the local graph on this machine (niro-local)."
30
+ <!-- source: src/mcp/localBackend.js:189 -->
31
+
32
+ ## Things to know
33
+
34
+ - Claude Code is the only agent that gets hooks, so it is the one most likely to ask Niro first.
35
+ - The impact check before an edit is advisory only. Turn it off with `touch ~/.niro/impact-gate-off`.
36
+ - The shell reminder adds a short note when Claude Code runs `grep`, `rg`, `git grep`, `cat`, `head`, `tail`, `sed -n`, `awk`, `nl`, `less`, `bat` or `find -name` on source code in a folder Niro indexes. It never blocks the command, and it stays quiet for config, docs, logs, build output, a file changed in the last 10 minutes, and a command that reads a pipe (`ps aux | grep node`).
37
+ - To check the connection, type `/mcp` inside Claude Code: `niro` should be listed as connected.
38
+ - If Claude Code is not installed, the install says "Failed to register MCP server", gives the address to get Claude Code (https://claude.ai/code), and prints the command to run by hand.
39
+ <!-- source: docs/usecases/impact-gate.md:155; src/mcp/setup.js:1512-1514, :775-777 -->
40
+
41
+ ## Remove it
42
+
43
+ ```
44
+ niro mcp uninstall --client claude-code
45
+ ```
46
+
47
+ If something goes wrong, see [faq-assistants-and-mcp.md](faq-assistants-and-mcp.md).
48
+ <!-- source: src/mcp/teardown.js:645-653 -->
@@ -0,0 +1,47 @@
1
+ # Connect Claude Desktop to Niro
2
+
3
+ **One command connects Claude Desktop to Niro:**
4
+
5
+ ```
6
+ niro mcp install --client claude-desktop
7
+ ```
8
+
9
+ Then restart Claude Desktop, because it reads its settings only when it starts.
10
+ <!-- source: src/mcp/setup.js:279-414 (CLIENTS), :3071-3085 ("Restart your AI assistant") -->
11
+
12
+ You must have run `niro start` first, so that you are signed in. See [connect-your-ai-assistant.md](connect-your-ai-assistant.md).
13
+ <!-- source: src/mcp/setup.js:574-583, :2950-2955 ("Not signed in. Run niro login") -->
14
+
15
+ ## What the install writes
16
+
17
+ - The connection, in `claude_desktop_config.json`:
18
+ - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
19
+ - Linux: `~/.config/claude/claude_desktop_config.json`
20
+ - Windows: `%APPDATA%\Claude\claude_desktop_config.json`
21
+ <!-- source: src/mcp/setup.js:291-296 -->
22
+
23
+ ## How Claude Desktop learns to use Niro
24
+
25
+ - Nothing beyond the connection. Ask it to use the Niro tools when you want them.
26
+ <!-- source: src/mcp/setup.js (no instruction file for claude-desktop) -->
27
+
28
+ ## Check that it works
29
+
30
+ Ask it a question about your code, such as "which routes does this project serve?". An answer from Niro starts with "Answered from the local graph on this machine (niro-local)."
31
+ <!-- source: src/mcp/localBackend.js:189 -->
32
+
33
+ ## Things to know
34
+
35
+ - Windows is supported (Niraj, 2026-11-10). The details are coming.
36
+ <!-- source: Niraj, 2026-11-10 -->
37
+ - **Which folder it answers for.** Niro's tools answer for the folder the agent was started in. Claude Desktop is an app, not a terminal command, so it is not started in a project folder. How Niro picks a folder for Claude Desktop has not been tested yet. Until it has, a coding agent that runs in your project folder is the better choice.
38
+ <!-- source: src/mcp/localMode.js:39 (RELEASE_WORKTREE_SENTENCE) (the tools answer for the folder the session started in); Claude Desktop behaviour not established -->
39
+
40
+ ## Remove it
41
+
42
+ ```
43
+ niro mcp uninstall --client claude-desktop
44
+ ```
45
+
46
+ If something goes wrong, see [faq-assistants-and-mcp.md](faq-assistants-and-mcp.md).
47
+ <!-- source: src/mcp/teardown.js:645-653 -->
@@ -0,0 +1,42 @@
1
+ # Connect Cline to Niro
2
+
3
+ **One command connects Cline to Niro:**
4
+
5
+ ```
6
+ niro mcp install --client cline
7
+ ```
8
+
9
+ Then restart Cline, because it reads its settings only when it starts.
10
+ <!-- source: src/mcp/setup.js:279-414 (CLIENTS), :3071-3085 ("Restart your AI assistant") -->
11
+
12
+ You must have run `niro start` first, so that you are signed in. See [connect-your-ai-assistant.md](connect-your-ai-assistant.md).
13
+ <!-- source: src/mcp/setup.js:574-583, :2950-2955 ("Not signed in. Run niro login") -->
14
+
15
+ ## What the install writes
16
+
17
+ - The connection, in Cline's settings file inside VS Code's storage: `.../Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json`. The `...` is `~/Library/Application Support` on macOS, `~/.config` on Linux, and `%APPDATA%` on Windows.
18
+ <!-- source: src/mcp/setup.js:359-381 -->
19
+
20
+ ## How Cline learns to use Niro
21
+
22
+ - A rule file, `~/Documents/Cline/Rules/niro.md`.
23
+ <!-- source: src/mcp/setup.js:2541-2553 -->
24
+
25
+ ## Check that it works
26
+
27
+ Ask it a question about your code, such as "which routes does this project serve?". An answer from Niro starts with "Answered from the local graph on this machine (niro-local)."
28
+ <!-- source: src/mcp/localBackend.js:189 -->
29
+
30
+ ## Things to know
31
+
32
+ - This settings path is confirmed by Cline's users, not by an official Cline page. If Cline does not show Niro after a restart, open Cline's MCP settings and check where it keeps them.
33
+ <!-- source: src/mcp/setup.js:362-366 -->
34
+
35
+ ## Remove it
36
+
37
+ ```
38
+ niro mcp uninstall --client cline
39
+ ```
40
+
41
+ If something goes wrong, see [faq-assistants-and-mcp.md](faq-assistants-and-mcp.md).
42
+ <!-- source: src/mcp/teardown.js:645-653 -->
@@ -0,0 +1,45 @@
1
+ # Connect Codex to Niro
2
+
3
+ **One command connects Codex to Niro:**
4
+
5
+ ```
6
+ niro mcp install --client codex
7
+ ```
8
+
9
+ Then restart Codex, because it reads its settings only when it starts.
10
+ <!-- source: src/mcp/setup.js:279-414 (CLIENTS), :3071-3085 ("Restart your AI assistant") -->
11
+
12
+ You must have run `niro start` first, so that you are signed in. See [connect-your-ai-assistant.md](connect-your-ai-assistant.md).
13
+ <!-- source: src/mcp/setup.js:574-583, :2950-2955 ("Not signed in. Run niro login") -->
14
+
15
+ ## What the install writes
16
+
17
+ - The connection, through Codex's own command (`codex mcp add niro ... -- niro mcp serve`), in `~/.codex/config.toml`. If you set `CODEX_HOME`, that folder is used instead of `~/.codex`.
18
+ - `default_tools_approval_mode = "writes"`, so Codex asks you only before a tool that writes. Niro's tools only read.
19
+ <!-- source: src/mcp/setup.js:2108-2135, :2259-2264, :2305-2318 -->
20
+
21
+ ## How Codex learns to use Niro
22
+
23
+ - A section in `~/.codex/AGENTS.md`.
24
+ - The two skills, in `~/.agents/skills/niro-skill` and `~/.agents/skills/niro-local`.
25
+ <!-- source: src/mcp/setup.js:2361-2363, :2393-2427 -->
26
+
27
+ ## Check that it works
28
+
29
+ Ask it a question about your code, such as "which routes does this project serve?". An answer from Niro starts with "Answered from the local graph on this machine (niro-local)."
30
+ <!-- source: src/mcp/localBackend.js:189 -->
31
+
32
+ ## Things to know
33
+
34
+ - If the Codex command is missing, the install says "Failed to register MCP server. Is the Codex CLI installed?".
35
+ - Codex reads `AGENTS.md` once, when a session starts. On a long task it may drift back to searching files.
36
+ <!-- source: src/mcp/setup.js:2123 -->
37
+
38
+ ## Remove it
39
+
40
+ ```
41
+ niro mcp uninstall --client codex
42
+ ```
43
+
44
+ If something goes wrong, see [faq-assistants-and-mcp.md](faq-assistants-and-mcp.md).
45
+ <!-- source: src/mcp/teardown.js:645-653 -->
@@ -0,0 +1,42 @@
1
+ # Connect GitHub Copilot CLI to Niro
2
+
3
+ **One command connects GitHub Copilot CLI to Niro:**
4
+
5
+ ```
6
+ niro mcp install --client copilot-cli
7
+ ```
8
+
9
+ Then restart GitHub Copilot CLI, because it reads its settings only when it starts.
10
+ <!-- source: src/mcp/setup.js:279-414 (CLIENTS), :3071-3085 ("Restart your AI assistant") -->
11
+
12
+ You must have run `niro start` first, so that you are signed in. See [connect-your-ai-assistant.md](connect-your-ai-assistant.md).
13
+ <!-- source: src/mcp/setup.js:574-583, :2950-2955 ("Not signed in. Run niro login") -->
14
+
15
+ ## What the install writes
16
+
17
+ - The connection, through Copilot's own command (`copilot mcp add niro ...`), in `~/.copilot/mcp-config.json`.
18
+ <!-- source: src/mcp/setup.js:2634-2651 -->
19
+
20
+ ## How GitHub Copilot CLI learns to use Niro
21
+
22
+ - A section in `~/.copilot/copilot-instructions.md`.
23
+ <!-- source: src/mcp/setup.js:2492 -->
24
+
25
+ ## Check that it works
26
+
27
+ Ask it a question about your code, such as "which routes does this project serve?". An answer from Niro starts with "Answered from the local graph on this machine (niro-local)."
28
+ <!-- source: src/mcp/localBackend.js:189 -->
29
+
30
+ ## Things to know
31
+
32
+ - If the `copilot` command is missing, the install says so and suggests `npm i -g @github/copilot`.
33
+ <!-- source: src/mcp/setup.js:2645 -->
34
+
35
+ ## Remove it
36
+
37
+ ```
38
+ niro mcp uninstall --client copilot-cli
39
+ ```
40
+
41
+ If something goes wrong, see [faq-assistants-and-mcp.md](faq-assistants-and-mcp.md).
42
+ <!-- source: src/mcp/teardown.js:645-653 -->
@@ -0,0 +1,44 @@
1
+ # Connect Cursor to Niro
2
+
3
+ **One command connects Cursor to Niro:**
4
+
5
+ ```
6
+ niro mcp install --client cursor
7
+ ```
8
+
9
+ Then restart Cursor, because it reads its settings only when it starts.
10
+ <!-- source: src/mcp/setup.js:279-414 (CLIENTS), :3071-3085 ("Restart your AI assistant") -->
11
+
12
+ You must have run `niro start` first, so that you are signed in. See [connect-your-ai-assistant.md](connect-your-ai-assistant.md).
13
+ <!-- source: src/mcp/setup.js:574-583, :2950-2955 ("Not signed in. Run niro login") -->
14
+
15
+ ## What the install writes
16
+
17
+ - The connection, in `~/.cursor/mcp.json`.
18
+ - `niro:*` in the `mcpAllowlist` of `~/.cursor/permissions.json`, so Niro's tools run without asking each time.
19
+ <!-- source: src/mcp/setup.js:298-302, :445-503 -->
20
+
21
+ ## How Cursor learns to use Niro
22
+
23
+ - A project rule, `.cursor/rules/niro.mdc`, **in the folder you ran the install from**. Cursor has no rule file for all projects, so the rule goes into that folder.
24
+ <!-- source: src/mcp/setup.js:2079-2100 -->
25
+
26
+ ## Check that it works
27
+
28
+ Ask it a question about your code, such as "which routes does this project serve?". An answer from Niro starts with "Answered from the local graph on this machine (niro-local)."
29
+ <!-- source: src/mcp/localBackend.js:189 -->
30
+
31
+ ## Things to know
32
+
33
+ - `niro upgrade` refreshes Cursor too. It writes the rule into the folder you run `niro upgrade` from, and says so first.
34
+ - `niro mcp uninstall --client cursor` removes the rule from the current folder only. Rules in other folders stay until you delete them.
35
+ <!-- source: src/commands/upgrade.js:349-353; src/mcp/teardown.js:431-438 -->
36
+
37
+ ## Remove it
38
+
39
+ ```
40
+ niro mcp uninstall --client cursor
41
+ ```
42
+
43
+ If something goes wrong, see [faq-assistants-and-mcp.md](faq-assistants-and-mcp.md).
44
+ <!-- source: src/mcp/teardown.js:645-653 -->
@@ -0,0 +1,42 @@
1
+ # Connect Factory (droid) to Niro
2
+
3
+ **One command connects Factory (droid) to Niro:**
4
+
5
+ ```
6
+ niro mcp install --client factory
7
+ ```
8
+
9
+ Then restart Factory (droid), because it reads its settings only when it starts.
10
+ <!-- source: src/mcp/setup.js:279-414 (CLIENTS), :3071-3085 ("Restart your AI assistant") -->
11
+
12
+ You must have run `niro start` first, so that you are signed in. See [connect-your-ai-assistant.md](connect-your-ai-assistant.md).
13
+ <!-- source: src/mcp/setup.js:574-583, :2950-2955 ("Not signed in. Run niro login") -->
14
+
15
+ ## What the install writes
16
+
17
+ - The connection, through droid's own command (`droid mcp add niro "niro mcp serve"`), in `~/.factory/mcp.json`.
18
+ <!-- source: src/mcp/setup.js:2661-2678 -->
19
+
20
+ ## How Factory (droid) learns to use Niro
21
+
22
+ - A section in `~/.factory/AGENTS.md`.
23
+ <!-- source: src/mcp/setup.js:2496 -->
24
+
25
+ ## Check that it works
26
+
27
+ Ask it a question about your code, such as "which routes does this project serve?". An answer from Niro starts with "Answered from the local graph on this machine (niro-local)."
28
+ <!-- source: src/mcp/localBackend.js:189 -->
29
+
30
+ ## Things to know
31
+
32
+ - If the `droid` command is missing, the install says it failed to register the server.
33
+ <!-- source: src/mcp/setup.js:2671 -->
34
+
35
+ ## Remove it
36
+
37
+ ```
38
+ niro mcp uninstall --client factory
39
+ ```
40
+
41
+ If something goes wrong, see [faq-assistants-and-mcp.md](faq-assistants-and-mcp.md).
42
+ <!-- source: src/mcp/teardown.js:645-653 -->
@@ -0,0 +1,42 @@
1
+ # Connect Gemini CLI to Niro
2
+
3
+ **One command connects Gemini CLI to Niro:**
4
+
5
+ ```
6
+ niro mcp install --client gemini-cli
7
+ ```
8
+
9
+ Then restart Gemini CLI, because it reads its settings only when it starts.
10
+ <!-- source: src/mcp/setup.js:279-414 (CLIENTS), :3071-3085 ("Restart your AI assistant") -->
11
+
12
+ You must have run `niro start` first, so that you are signed in. See [connect-your-ai-assistant.md](connect-your-ai-assistant.md).
13
+ <!-- source: src/mcp/setup.js:574-583, :2950-2955 ("Not signed in. Run niro login") -->
14
+
15
+ ## What the install writes
16
+
17
+ - The connection, through Gemini's own command (`gemini mcp add -s user ...`), in `~/.gemini/settings.json`.
18
+ <!-- source: src/mcp/setup.js:2609-2626 -->
19
+
20
+ ## How Gemini CLI learns to use Niro
21
+
22
+ - A section in `~/.gemini/GEMINI.md`.
23
+ <!-- source: src/mcp/setup.js:2488 -->
24
+
25
+ ## Check that it works
26
+
27
+ Ask it a question about your code, such as "which routes does this project serve?". An answer from Niro starts with "Answered from the local graph on this machine (niro-local)."
28
+ <!-- source: src/mcp/localBackend.js:189 -->
29
+
30
+ ## Things to know
31
+
32
+ - If the Gemini command is missing, the install says it failed to register the server.
33
+ <!-- source: src/mcp/setup.js:2620 -->
34
+
35
+ ## Remove it
36
+
37
+ ```
38
+ niro mcp uninstall --client gemini-cli
39
+ ```
40
+
41
+ If something goes wrong, see [faq-assistants-and-mcp.md](faq-assistants-and-mcp.md).
42
+ <!-- source: src/mcp/teardown.js:645-653 -->
@@ -0,0 +1,42 @@
1
+ # Connect Goose to Niro
2
+
3
+ **One command connects Goose to Niro:**
4
+
5
+ ```
6
+ niro mcp install --client goose
7
+ ```
8
+
9
+ Then restart Goose, because it reads its settings only when it starts.
10
+ <!-- source: src/mcp/setup.js:279-414 (CLIENTS), :3071-3085 ("Restart your AI assistant") -->
11
+
12
+ You must have run `niro start` first, so that you are signed in. See [connect-your-ai-assistant.md](connect-your-ai-assistant.md).
13
+ <!-- source: src/mcp/setup.js:574-583, :2950-2955 ("Not signed in. Run niro login") -->
14
+
15
+ ## What the install writes
16
+
17
+ - An `extensions.niro` entry (type stdio, timeout 300 seconds) in `~/.config/goose/config.yaml`. On Windows the file is `%APPDATA%\Block\goose\config\config.yaml`.
18
+ <!-- source: src/mcp/setup.js:2693-2717 -->
19
+
20
+ ## How Goose learns to use Niro
21
+
22
+ - Nothing beyond the connection.
23
+ <!-- source: src/mcp/setup.js (no instruction file for goose) -->
24
+
25
+ ## Check that it works
26
+
27
+ Ask it a question about your code, such as "which routes does this project serve?". An answer from Niro starts with "Answered from the local graph on this machine (niro-local)."
28
+ <!-- source: src/mcp/localBackend.js:189 -->
29
+
30
+ ## Things to know
31
+
32
+ - If your Goose settings file is laid out in a way the installer does not expect, it does not change it. It prints the block for you to paste instead.
33
+ <!-- source: src/mcp/setup.js:2693-2717 -->
34
+
35
+ ## Remove it
36
+
37
+ ```
38
+ niro mcp uninstall --client goose
39
+ ```
40
+
41
+ If something goes wrong, see [faq-assistants-and-mcp.md](faq-assistants-and-mcp.md).
42
+ <!-- source: src/mcp/teardown.js:645-653 -->
@@ -0,0 +1,37 @@
1
+ # Connect Kiro to Niro
2
+
3
+ **One command connects Kiro to Niro:**
4
+
5
+ ```
6
+ niro mcp install --client kiro
7
+ ```
8
+
9
+ Then restart Kiro, because it reads its settings only when it starts.
10
+ <!-- source: src/mcp/setup.js:279-414 (CLIENTS), :3071-3085 ("Restart your AI assistant") -->
11
+
12
+ You must have run `niro start` first, so that you are signed in. See [connect-your-ai-assistant.md](connect-your-ai-assistant.md).
13
+ <!-- source: src/mcp/setup.js:574-583, :2950-2955 ("Not signed in. Run niro login") -->
14
+
15
+ ## What the install writes
16
+
17
+ - The connection, in `~/.kiro/settings/mcp.json`, with `autoApprove: ["*"]`. This means **Kiro runs every Niro tool without asking you**. Niro's tools only read.
18
+ <!-- source: src/mcp/setup.js:382-395 -->
19
+
20
+ ## How Kiro learns to use Niro
21
+
22
+ - A steering file, `~/.kiro/steering/niro.md`.
23
+ <!-- source: src/mcp/setup.js:2592 -->
24
+
25
+ ## Check that it works
26
+
27
+ Ask it a question about your code, such as "which routes does this project serve?". An answer from Niro starts with "Answered from the local graph on this machine (niro-local)."
28
+ <!-- source: src/mcp/localBackend.js:189 -->
29
+
30
+ ## Remove it
31
+
32
+ ```
33
+ niro mcp uninstall --client kiro
34
+ ```
35
+
36
+ If something goes wrong, see [faq-assistants-and-mcp.md](faq-assistants-and-mcp.md).
37
+ <!-- source: src/mcp/teardown.js:645-653 -->
@@ -0,0 +1,37 @@
1
+ # Connect OpenCode to Niro
2
+
3
+ **One command connects OpenCode to Niro:**
4
+
5
+ ```
6
+ niro mcp install --client opencode
7
+ ```
8
+
9
+ Then restart OpenCode, because it reads its settings only when it starts.
10
+ <!-- source: src/mcp/setup.js:279-414 (CLIENTS), :3071-3085 ("Restart your AI assistant") -->
11
+
12
+ You must have run `niro start` first, so that you are signed in. See [connect-your-ai-assistant.md](connect-your-ai-assistant.md).
13
+ <!-- source: src/mcp/setup.js:574-583, :2950-2955 ("Not signed in. Run niro login") -->
14
+
15
+ ## What the install writes
16
+
17
+ - The connection, under `mcp` (type `local`), in `~/.config/opencode/opencode.json`.
18
+ <!-- source: src/mcp/setup.js:347-358 -->
19
+
20
+ ## How OpenCode learns to use Niro
21
+
22
+ - A section in `~/.config/opencode/AGENTS.md`.
23
+ <!-- source: src/mcp/setup.js:2500 -->
24
+
25
+ ## Check that it works
26
+
27
+ Ask it a question about your code, such as "which routes does this project serve?". An answer from Niro starts with "Answered from the local graph on this machine (niro-local)."
28
+ <!-- source: src/mcp/localBackend.js:189 -->
29
+
30
+ ## Remove it
31
+
32
+ ```
33
+ niro mcp uninstall --client opencode
34
+ ```
35
+
36
+ If something goes wrong, see [faq-assistants-and-mcp.md](faq-assistants-and-mcp.md).
37
+ <!-- source: src/mcp/teardown.js:645-653 -->
@@ -0,0 +1,45 @@
1
+ # Connect VS Code (GitHub Copilot) to Niro
2
+
3
+ **One command connects VS Code (GitHub Copilot) to Niro:**
4
+
5
+ ```
6
+ niro mcp install --client vscode
7
+ ```
8
+
9
+ Then restart VS Code (GitHub Copilot), because it reads its settings only when it starts.
10
+ <!-- source: src/mcp/setup.js:279-414 (CLIENTS), :3071-3085 ("Restart your AI assistant") -->
11
+
12
+ You must have run `niro start` first, so that you are signed in. See [connect-your-ai-assistant.md](connect-your-ai-assistant.md).
13
+ <!-- source: src/mcp/setup.js:574-583, :2950-2955 ("Not signed in. Run niro login") -->
14
+
15
+ ## What the install writes
16
+
17
+ - The connection, in VS Code's user `mcp.json`, under `servers`:
18
+ - macOS: `~/Library/Application Support/Code/User/mcp.json`
19
+ - Linux: `~/.config/Code/User/mcp.json`
20
+ - Windows: `%APPDATA%\Code\User\mcp.json`
21
+ <!-- source: src/mcp/setup.js:314-330 -->
22
+
23
+ ## How VS Code (GitHub Copilot) learns to use Niro
24
+
25
+ - Nothing beyond the connection.
26
+ <!-- source: src/mcp/setup.js (no instruction file for vscode) -->
27
+
28
+ ## Check that it works
29
+
30
+ Ask it a question about your code, such as "which routes does this project serve?". An answer from Niro starts with "Answered from the local graph on this machine (niro-local)."
31
+ <!-- source: src/mcp/localBackend.js:189 -->
32
+
33
+ ## Things to know
34
+
35
+ - This is GitHub Copilot inside VS Code, using VS Code's own MCP support. It is not Copilot's pull request review, which Niro does not support (see connect-review-bots.md).
36
+ <!-- source: src/mcp/setup.js:314-330 -->
37
+
38
+ ## Remove it
39
+
40
+ ```
41
+ niro mcp uninstall --client vscode
42
+ ```
43
+
44
+ If something goes wrong, see [faq-assistants-and-mcp.md](faq-assistants-and-mcp.md).
45
+ <!-- source: src/mcp/teardown.js:645-653 -->
@@ -0,0 +1,38 @@
1
+ # Connect Windsurf to Niro
2
+
3
+ **One command connects Windsurf to Niro:**
4
+
5
+ ```
6
+ niro mcp install --client windsurf
7
+ ```
8
+
9
+ Then restart Windsurf, because it reads its settings only when it starts.
10
+ <!-- source: src/mcp/setup.js:279-414 (CLIENTS), :3071-3085 ("Restart your AI assistant") -->
11
+
12
+ You must have run `niro start` first, so that you are signed in. See [connect-your-ai-assistant.md](connect-your-ai-assistant.md).
13
+ <!-- source: src/mcp/setup.js:574-583, :2950-2955 ("Not signed in. Run niro login") -->
14
+
15
+ ## What the install writes
16
+
17
+ - The connection, in `~/.codeium/windsurf/mcp_config.json` (on Windows, under `%APPDATA%\.codeium\windsurf`).
18
+ <!-- source: src/mcp/setup.js:304-312 -->
19
+
20
+ ## How Windsurf learns to use Niro
21
+
22
+ - A section in `~/.codeium/windsurf/memories/global_rules.md`.
23
+ - The two skills in `~/.agents/skills`, shared with Codex.
24
+ <!-- source: src/mcp/setup.js:2436, :2851-2853 -->
25
+
26
+ ## Check that it works
27
+
28
+ Ask it a question about your code, such as "which routes does this project serve?". An answer from Niro starts with "Answered from the local graph on this machine (niro-local)."
29
+ <!-- source: src/mcp/localBackend.js:189 -->
30
+
31
+ ## Remove it
32
+
33
+ ```
34
+ niro mcp uninstall --client windsurf
35
+ ```
36
+
37
+ If something goes wrong, see [faq-assistants-and-mcp.md](faq-assistants-and-mcp.md).
38
+ <!-- source: src/mcp/teardown.js:645-653 -->