@niroai/niro 0.10.0 → 0.10.1
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.
- package/README.md +128 -262
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,367 +1,233 @@
|
|
|
1
|
-
# niro
|
|
1
|
+
# niro: CLI + MCP server (`@niroai/niro`)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Command-line tool and MCP server for [Niro](https://niroai.dev). Niro reads your code and builds
|
|
4
|
+
a map of how it fits together, so your AI assistant answers from that map instead of guessing.
|
|
4
5
|
|
|
5
|
-
One package
|
|
6
|
+
One package installs three things: the `niro` command, the MCP server your assistant talks to,
|
|
7
|
+
and two agent skills so you can ask for Niro tasks in plain English.
|
|
6
8
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
3. **Two agent skills** (installed by `niro mcp install`) so you can drive Niro from chat in plain English instead of typing CLI commands:
|
|
10
|
-
- **`niro-skill`** — answers questions about your code (structure, call chains, blast radius) using the Niro MCP tools.
|
|
11
|
-
- **`niro-cli`** — runs the CLI for you (onboard, status, rebuild, edit env vars, remove) from a conversation.
|
|
9
|
+
Requires Node.js 18 or newer. Niro is in private beta: you need an access code, which you get
|
|
10
|
+
from the **Request Access** button at [www.niro.ai](https://www.niro.ai).
|
|
12
11
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
## Working on branches
|
|
12
|
+
---
|
|
16
13
|
|
|
17
|
-
|
|
18
|
-
to the project matching your repo and current branch. When you are on a branch **no project
|
|
19
|
-
covers** (with real changes), Niro refuses to answer from stale code. Your assistant offers the fix:
|
|
14
|
+
## Get started
|
|
20
15
|
|
|
21
16
|
```bash
|
|
22
|
-
|
|
17
|
+
cd ~/code/my-service
|
|
18
|
+
npx @niroai/niro start
|
|
23
19
|
```
|
|
24
20
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
Switching branches needs nothing: Niro answers from your copy on the new
|
|
28
|
-
branch, and from the matching indexed project on branches you already cover. When your branch
|
|
29
|
-
is merged:
|
|
21
|
+
Signs you in, installs itself, shows you what it is about to index and asks first, builds the
|
|
22
|
+
graph, and connects your assistant. Run it again in any other repo; it skips what is done.
|
|
30
23
|
|
|
31
|
-
|
|
32
|
-
niro discard-temp-project
|
|
33
|
-
```
|
|
24
|
+
Then restart your assistant and ask it something:
|
|
34
25
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
26
|
+
```
|
|
27
|
+
"What breaks if I change PaymentService.refund?"
|
|
28
|
+
```
|
|
38
29
|
|
|
39
30
|
---
|
|
40
31
|
|
|
41
|
-
##
|
|
42
|
-
|
|
43
|
-
```bash
|
|
44
|
-
npm install -g @niroai/niro
|
|
45
|
-
niro --version
|
|
46
|
-
```
|
|
32
|
+
## What you can ask for
|
|
47
33
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
34
|
+
| | |
|
|
35
|
+
|---|---|
|
|
36
|
+
| Anything about your code | call chains, structure, entry points, API endpoints |
|
|
37
|
+
| What breaks if you change something | blast radius across services, including callers a search cannot find |
|
|
38
|
+
| A standing review | issues already in the code, by severity, in the browser |
|
|
39
|
+
| Root causes from your alerts | connect Sentry, Slack, Jira, Linear or CloudWatch and an alert arrives as a bug with the analysis done |
|
|
51
40
|
|
|
52
41
|
---
|
|
53
42
|
|
|
54
|
-
##
|
|
43
|
+
## Everyday commands
|
|
55
44
|
|
|
56
45
|
```bash
|
|
57
|
-
|
|
58
|
-
npx @niroai/niro start
|
|
46
|
+
niro status
|
|
59
47
|
```
|
|
60
|
-
|
|
61
|
-
That is the whole thing. `niro start` signs you in (browser), installs itself properly,
|
|
62
|
-
shows you what it is about to index and asks before uploading anything, builds the graph,
|
|
63
|
-
connects your AI assistant, and finally offers to measure what difference Niro makes
|
|
64
|
-
(Scenario 12; optional, defaults to no). Run it again in any other repo; it skips whatever
|
|
65
|
-
is already done.
|
|
66
|
-
|
|
67
|
-
Niro is in private beta, so `start` asks for an **access code** first (the browser signup form
|
|
68
|
-
asks for it under that name). No code yet? Go to [www.niro.ai](https://www.niro.ai) and click
|
|
69
|
-
**Request Access**. Answering "no" stops the setup immediately, having installed nothing.
|
|
70
|
-
|
|
71
|
-
Prefer the individual commands (or scripting it)? They all still work, and take flags:
|
|
48
|
+
Is my index up to date?
|
|
72
49
|
|
|
73
50
|
```bash
|
|
74
|
-
niro
|
|
75
|
-
cd ~/code/my-service
|
|
76
|
-
niro init # onboard this folder: create project, upload, build the graph
|
|
77
|
-
niro mcp install # connect one AI assistant — pick it at the prompt, or pass --client
|
|
51
|
+
niro start
|
|
78
52
|
```
|
|
53
|
+
Index another repo. Cross-service answers need more than one.
|
|
79
54
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
## Scenario 1 — Log in
|
|
85
|
-
|
|
86
|
-
`niro login` opens a browser, you approve the device, and a long-lived credential is stored at `~/.niro/credentials.json` (mode `0600`). Short-lived tokens refresh automatically.
|
|
55
|
+
```bash
|
|
56
|
+
niro info
|
|
57
|
+
```
|
|
58
|
+
What does Niro know about this folder: repo, branch, which project it maps to.
|
|
87
59
|
|
|
88
|
-
**Terminal**
|
|
89
60
|
```bash
|
|
90
|
-
niro
|
|
91
|
-
niro whoami # who am I logged in as?
|
|
92
|
-
niro logout # revoke + remove local credentials
|
|
61
|
+
niro projects
|
|
93
62
|
```
|
|
63
|
+
Every project in your account.
|
|
94
64
|
|
|
95
|
-
|
|
96
|
-
|
|
65
|
+
```bash
|
|
66
|
+
niro build
|
|
67
|
+
```
|
|
68
|
+
Rebuild the index by hand and watch it finish.
|
|
97
69
|
|
|
98
70
|
---
|
|
99
71
|
|
|
100
|
-
##
|
|
72
|
+
## Working on a branch
|
|
101
73
|
|
|
102
|
-
|
|
74
|
+
Your index covers the branches you chose to build. On a branch nothing covers, Niro says so
|
|
75
|
+
rather than answering from stale code.
|
|
103
76
|
|
|
104
|
-
**Terminal**
|
|
105
77
|
```bash
|
|
106
|
-
|
|
107
|
-
niro init # onboard the current folder
|
|
108
|
-
niro init ./api # onboard a specific path
|
|
109
|
-
niro init --defaults # accept discovered defaults, don't prompt
|
|
110
|
-
niro init -X '**/test/**' -F '**/*.spec.ts' # exclude modules / files
|
|
78
|
+
niro new-temp-project
|
|
111
79
|
```
|
|
80
|
+
Run once in the repo folder. Makes a private copy that follows your branch and uncommitted
|
|
81
|
+
edits. Your shared project is untouched.
|
|
112
82
|
|
|
113
|
-
During `init` you'll be asked, **per environment variable**, which value to use — and when a variable is defined in more than one config file you pick which file drives it (see Scenario 6).
|
|
114
|
-
|
|
115
|
-
**Ask the agent**
|
|
116
|
-
> "Onboard this folder into Niro." The `niro-cli` skill checks auth, runs `niro info` to see if it's already indexed, then runs `niro init` for you and walks you through the env-var values in chat.
|
|
117
|
-
|
|
118
|
-
**Note for cloud:** Niro indexes your folder by **uploading its files** (it can't read your laptop's disk). Source and committed config files (`package.json`, `pom.xml`, `application.yml`, …) are uploaded; anything your repo `.gitignore`s (like a real `.env`) is **never** uploaded. One caveat: that filtering needs the folder to be a git repository. If you onboard a plain folder that is not a git repository, there is no `.gitignore` to honour and only the filename rules apply, so keep secrets out of it.
|
|
119
|
-
|
|
120
|
-
**What can be onboarded:** the folder has to look like a project — a build file (`package.json`, `pom.xml`, `go.mod`, `*.csproj`, …) at the folder itself or just below it. A monorepo root whose build files sit one or two levels down is fine. A folder with no build file is refused; pass `--force` if you really mean it. Your home folder, the filesystem root and system folders are refused outright, and `--force` does not override that — onboarding one of those would upload source from every project on the machine.
|
|
121
|
-
|
|
122
|
-
---
|
|
123
|
-
|
|
124
|
-
## Scenario 3 — "What does Niro know about this folder?"
|
|
125
|
-
|
|
126
|
-
**Terminal**
|
|
127
83
|
```bash
|
|
128
|
-
niro
|
|
129
|
-
niro info --json # machine-readable
|
|
130
|
-
niro status # live build status for the pinned project
|
|
131
|
-
niro status my-service --json
|
|
84
|
+
niro discard-temp-project
|
|
132
85
|
```
|
|
86
|
+
Run when the branch is merged. Forgotten copies are cleaned up after two weeks.
|
|
133
87
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
**Ask the agent**
|
|
137
|
-
> "What does Niro know about this folder?" / "Is this repo indexed?" — the agent runs `niro info --json` and explains it.
|
|
88
|
+
Full guide: [docs/working-on-branches.md](https://unpkg.com/@niroai/niro/docs/working-on-branches.md)
|
|
138
89
|
|
|
139
90
|
---
|
|
140
91
|
|
|
141
|
-
##
|
|
92
|
+
## Measure what Niro changes
|
|
142
93
|
|
|
143
|
-
**Terminal**
|
|
144
94
|
```bash
|
|
145
|
-
niro
|
|
146
|
-
niro projects --json
|
|
95
|
+
niro ab enable
|
|
147
96
|
```
|
|
97
|
+
Runs Niro **off** for half your sessions for 14 days, so you can compare. Applies to your whole
|
|
98
|
+
account, and asks before it starts.
|
|
148
99
|
|
|
149
|
-
**Ask the agent**
|
|
150
|
-
> "List my Niro projects." — runs `niro projects --json`.
|
|
151
|
-
|
|
152
|
-
---
|
|
153
|
-
|
|
154
|
-
## Scenario 5 — Rebuild the index after changes
|
|
155
|
-
|
|
156
|
-
**Terminal**
|
|
157
100
|
```bash
|
|
158
|
-
niro
|
|
159
|
-
niro build my-service # by alias or id
|
|
160
|
-
niro build --no-full-rebuild # incremental
|
|
161
|
-
niro build --no-watch # trigger and return immediately
|
|
101
|
+
niro ab report
|
|
162
102
|
```
|
|
103
|
+
The with-Niro and without-Niro comparison.
|
|
163
104
|
|
|
164
|
-
**Ask the agent**
|
|
165
|
-
> "Rebuild the Niro index for this project." — runs `niro build`.
|
|
166
|
-
|
|
167
|
-
*(If you set up auto-sync in Scenario 8, you rarely need to rebuild by hand.)*
|
|
168
|
-
|
|
169
|
-
---
|
|
170
|
-
|
|
171
|
-
## Scenario 6 — Manage environment variables (and pick which file drives each)
|
|
172
|
-
|
|
173
|
-
Niro discovers env-var **names** from your code and their **default values** from committed config files. When the same variable appears in several files (e.g. `application.yml` vs `application-prod.yml`), you choose which file's value to use — the same as the web UI.
|
|
174
|
-
|
|
175
|
-
**Terminal**
|
|
176
105
|
```bash
|
|
177
|
-
niro
|
|
178
|
-
niro edit --list-env --json # machine-readable (secret values masked)
|
|
179
|
-
niro edit --set-env PORT=9000 # set a value directly (never printed back)
|
|
180
|
-
niro edit --set-env-from PORT=application-prod.yml # adopt that file's value for PORT
|
|
181
|
-
niro edit --rescan-env # re-scan after adding config files
|
|
106
|
+
niro ab disable
|
|
182
107
|
```
|
|
183
|
-
|
|
184
|
-
Secret values are always masked (`****`) — whether the variable *name* looks secret (`DB_PASSWORD`) **or** its *value* embeds credentials (`DATABASE_URL=postgres://user:pass@host`). You pick those by file name; the value is never shown.
|
|
185
|
-
|
|
186
|
-
**Ask the agent**
|
|
187
|
-
> "Set PORT from application-prod.yml" or "What env vars does this project have?" — the agent runs `niro edit --list-env --json`, shows you the choices, and applies your pick with `--set-env-from`. It chooses **by file name** and never handles raw secret values.
|
|
108
|
+
Stop early. Every session uses Niro again.
|
|
188
109
|
|
|
189
110
|
---
|
|
190
111
|
|
|
191
|
-
##
|
|
112
|
+
## Connect another assistant
|
|
192
113
|
|
|
193
|
-
**Terminal**
|
|
194
114
|
```bash
|
|
195
|
-
niro
|
|
196
|
-
niro edit --add-repo <gitId> # map a registered repo into the project
|
|
197
|
-
niro edit --remove-repo <gitId> # unmap a repo (non-destructive)
|
|
198
|
-
niro edit --project my-service --alias renamed # target a project explicitly
|
|
115
|
+
niro mcp install
|
|
199
116
|
```
|
|
117
|
+
Pick from the list, or `--client <id>` to skip the prompt. Restart the assistant afterwards.
|
|
200
118
|
|
|
201
|
-
**Ask the agent**
|
|
202
|
-
> "Rename this Niro project to `payments-api`." / "Remove repo X from this project."
|
|
203
|
-
|
|
204
|
-
---
|
|
205
|
-
|
|
206
|
-
## Scenario 8 — Keep a local folder auto-synced
|
|
207
|
-
|
|
208
|
-
`niro init` and `niro add repo` install a background daemon (via PM2) that re-uploads your changes and keeps the graph fresh — honoring `.gitignore` so secrets never leave your machine.
|
|
209
|
-
|
|
210
|
-
**Terminal**
|
|
211
119
|
```bash
|
|
212
|
-
niro
|
|
213
|
-
niro service status
|
|
214
|
-
niro service uninstall
|
|
215
|
-
niro watch # run a watch in the foreground (debugging / no PM2)
|
|
120
|
+
niro mcp install --list
|
|
216
121
|
```
|
|
122
|
+
All 14 supported clients and the file each one is configured through.
|
|
217
123
|
|
|
218
|
-
---
|
|
219
|
-
|
|
220
|
-
## Scenario 9 — Remove a project or detach a repo
|
|
221
|
-
|
|
222
|
-
**Terminal**
|
|
223
124
|
```bash
|
|
224
|
-
niro
|
|
225
|
-
niro remove --project --confirm-name my-service # delete the WHOLE project (guarded)
|
|
125
|
+
niro mcp uninstall --all -y
|
|
226
126
|
```
|
|
127
|
+
Removes everything install added: MCP config, hooks and skills. Leaves you logged in.
|
|
227
128
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
**Ask the agent**
|
|
231
|
-
> "Remove the Niro project `my-service`." — the agent confirms with you, then runs `niro remove --project --confirm-name my-service`.
|
|
129
|
+
Per-client details: [docs/connect-your-ai-assistant.md](https://unpkg.com/@niroai/niro/docs/connect-your-ai-assistant.md)
|
|
232
130
|
|
|
233
131
|
---
|
|
234
132
|
|
|
235
|
-
##
|
|
236
|
-
|
|
237
|
-
After `niro mcp install` (and a restart of your assistant), the `niro-skill` routes code questions through Niro's graph instead of grep:
|
|
238
|
-
|
|
239
|
-
> "What calls `chargeCard()`?"
|
|
240
|
-
> "What breaks if I change the `Invoice` schema?"
|
|
241
|
-
> "Where is the auth middleware wired up?"
|
|
242
|
-
> "Is there existing code that parses webhooks before I write a new one?"
|
|
243
|
-
|
|
244
|
-
This works in any folder that resolves to a Niro project (via its git remote or a `.niro-project` pin).
|
|
133
|
+
## Managing projects
|
|
245
134
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
## Scenario 11 — Disconnect an AI assistant (uninstall the MCP)
|
|
135
|
+
```bash
|
|
136
|
+
niro edit --list-env
|
|
137
|
+
```
|
|
138
|
+
Environment variables Niro found, with secret values masked.
|
|
252
139
|
|
|
253
|
-
|
|
140
|
+
```bash
|
|
141
|
+
niro edit --set-env KEY=VALUE
|
|
142
|
+
```
|
|
143
|
+
Set one. The value is never printed or logged.
|
|
254
144
|
|
|
255
|
-
**Terminal**
|
|
256
145
|
```bash
|
|
257
|
-
niro
|
|
258
|
-
niro mcp uninstall --client claude-code # remove from one editor, no prompt
|
|
259
|
-
niro mcp uninstall --client claude-code,codex # remove from several in one go
|
|
260
|
-
niro mcp uninstall --all -y # remove from every editor, skip the confirm
|
|
146
|
+
niro edit --alias new-name
|
|
261
147
|
```
|
|
148
|
+
Rename a project.
|
|
262
149
|
|
|
263
|
-
|
|
150
|
+
```bash
|
|
151
|
+
niro remove --unmap-repo <gitId>
|
|
152
|
+
```
|
|
153
|
+
Detach a repo from a project. Nothing is deleted.
|
|
264
154
|
|
|
265
|
-
|
|
266
|
-
|
|
155
|
+
```bash
|
|
156
|
+
niro remove --project --confirm-name <name>
|
|
157
|
+
```
|
|
158
|
+
Delete a whole project. Destructive, hence the confirmation.
|
|
267
159
|
|
|
268
160
|
---
|
|
269
161
|
|
|
270
|
-
##
|
|
162
|
+
## Keeping in sync
|
|
271
163
|
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
Two things to know before you start one:
|
|
164
|
+
```bash
|
|
165
|
+
niro service status
|
|
166
|
+
```
|
|
167
|
+
Is the background watcher running? It syncs your indexed folders as you edit.
|
|
278
168
|
|
|
279
|
-
|
|
280
|
-
|
|
169
|
+
```bash
|
|
170
|
+
niro service install
|
|
171
|
+
```
|
|
172
|
+
Start it and have it come back on login. Needs PM2 (`npm install -g pm2`).
|
|
281
173
|
|
|
282
|
-
**Terminal**
|
|
283
174
|
```bash
|
|
284
|
-
niro
|
|
285
|
-
niro ab enable # start a 14-day window (states the scope, asks first)
|
|
286
|
-
niro ab enable --days 30 --name "Q3 trial"
|
|
287
|
-
niro ab enable --yes # skip the confirm (scripts / CI)
|
|
288
|
-
niro ab report # the with-Niro / without-Niro comparison
|
|
289
|
-
niro ab report --json # same, machine-readable
|
|
290
|
-
niro ab disable # stop early; every session uses Niro again
|
|
175
|
+
niro watch
|
|
291
176
|
```
|
|
177
|
+
Watch this folder in the foreground instead, for one session.
|
|
292
178
|
|
|
293
|
-
|
|
294
|
-
Niro tool calls, and median context size. A figure the server has not recorded reads
|
|
295
|
-
`not measured` rather than `0`, because `0` is a real result here: an off-bucket session
|
|
296
|
-
genuinely makes zero Niro tool calls.
|
|
179
|
+
---
|
|
297
180
|
|
|
298
|
-
|
|
181
|
+
## Reference
|
|
299
182
|
|
|
300
|
-
|
|
301
|
-
|
|
183
|
+
Add `--help` to any command for its flags. Add `--json` to `whoami`, `info`, `status`,
|
|
184
|
+
`projects`, `build`, `ab report` and `edit --list-env` for machine-readable output.
|
|
302
185
|
|
|
303
|
-
|
|
186
|
+
| File | What it holds |
|
|
187
|
+
|---|---|
|
|
188
|
+
| `~/.niro/credentials.json` | Your login, mode `0600` |
|
|
189
|
+
| `~/.niro/config.json` | Backend URLs saved during setup |
|
|
190
|
+
| `~/.niro/projects.json` | Per-folder sync state |
|
|
191
|
+
| `.niro-project` | Pins a repo folder to a Niro project |
|
|
304
192
|
|
|
305
|
-
|
|
193
|
+
| Variable | What it sets | Default |
|
|
194
|
+
|---|---|---|
|
|
195
|
+
| `NIRO_API_URL` | Backend the CLI talks to | `https://aiorchestrator.niroai.dev` |
|
|
196
|
+
| `NIRO_MCP_SERVER_URL` | Backend the MCP server talks to | `https://aiassistant.niroai.dev` |
|
|
197
|
+
| `NIRO_API_KEY` | Read by the MCP server when running headless. For CI, prefer `niro login --api-key` | none |
|
|
198
|
+
| `NIRO_UPLOAD_CONCURRENCY` / `_TIMEOUT_MS` / `_MAX_TOTAL_BYTES` / `_MAX_FILES` | Tune the first upload | 4 / 60000 / 1 GiB / 50000 |
|
|
306
199
|
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
| `niro start [path]` | First-time setup end to end: sign in, onboard this folder, connect an assistant |
|
|
310
|
-
| `niro login` / `logout` / `whoami` | Authenticate / sign out / show current account |
|
|
311
|
-
| `niro init [path]` | Onboard a folder end-to-end (upload, project, env scan, build, watch) |
|
|
312
|
-
| `niro info [path]` | What Niro knows about this folder (repo, branch, project(s), status) |
|
|
313
|
-
| `niro projects` (`niro ls`) | List all projects in your account |
|
|
314
|
-
| `niro status [project]` | Live build status for a project |
|
|
315
|
-
| `niro build [project]` | Trigger a rebuild and stream progress |
|
|
316
|
-
| `niro edit …` | Rename, map/unmap repos, manage env vars (incl. `--set-env-from`) |
|
|
317
|
-
| `niro remove …` | Delete a project (`--project`, guarded) or detach a repo (`--unmap-repo`) |
|
|
318
|
-
| `niro add repo [path\|url]` | Register a local folder or remote git URL |
|
|
319
|
-
| `niro add project` | Create a project from registered repos |
|
|
320
|
-
| `niro watch [path]` / `niro service …` | Foreground watch / manage the auto-sync daemon |
|
|
321
|
-
| `niro mcp install` | Connect an AI assistant + install the agent skills (one per run; `--client <id>` to skip the prompt, `--url <url>` for your own backend) |
|
|
322
|
-
| `niro mcp uninstall` | Disconnect an AI assistant — reverses `mcp install` (`--client <id>` / `--all`, `-y` to skip confirm) |
|
|
323
|
-
| `niro ab status\|enable\|disable\|report` | Run Niro off for half your sessions for a fixed window, then compare (`--days`, `--name`, `--yes`, `--json`) |
|
|
324
|
-
| `niro delete [project]` | Older whole-project delete (prefer `niro remove --project`) |
|
|
325
|
-
|
|
326
|
-
Add `--json` to `whoami`, `info`, `status`, `projects`, `build`, `ab report`, and `edit --list-env` for machine-readable output. Add `--help` to any command for its full flags.
|
|
200
|
+
Running your own instance? Set `NIRO_API_URL` before `niro login`, and pass `--url <url>` to
|
|
201
|
+
`niro mcp install`.
|
|
327
202
|
|
|
328
203
|
---
|
|
329
204
|
|
|
330
|
-
##
|
|
205
|
+
## What leaves your machine
|
|
331
206
|
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
| `~/.niro/projects.json` | Per-folder sync state (gitId, patterns, file hashes) |
|
|
337
|
-
| `.niro-project` (in a repo) | Pins that folder to a Niro project (single line: project id or alias) |
|
|
207
|
+
Source and config files from the folder you confirmed, and nothing else. `.gitignore` is
|
|
208
|
+
honoured, so a gitignored `.env` is never sent. Raw `.env` and `*.properties` files are not in
|
|
209
|
+
the upload set; committed files like `application.yml` and `.env.example` are, because they hold
|
|
210
|
+
defaults rather than secrets.
|
|
338
211
|
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
| `NIRO_API_URL` | CLI → ai-orchestrator base URL | `https://aiorchestrator.niroai.dev` |
|
|
342
|
-
| `NIRO_MCP_SERVER_URL` | MCP server (ai-assistant) base URL | `https://aiassistant.niroai.dev` |
|
|
343
|
-
| `NIRO_API_KEY` | Read by the **MCP server** (e.g. headless `niro mcp serve`) — not a CLI-command auth path; for CI use `niro login --api-key` | — |
|
|
344
|
-
| `NIRO_UPLOAD_CONCURRENCY` / `NIRO_UPLOAD_TIMEOUT_MS` / `NIRO_UPLOAD_MAX_TOTAL_BYTES` / `NIRO_UPLOAD_MAX_FILES` | Tune the initial upload | 4 / 60000 / 1 GiB / 50000 |
|
|
212
|
+
Secret values are never printed: `--set-env` does not echo them, and `--list-env` masks anything
|
|
213
|
+
that looks like a secret by name or by content.
|
|
345
214
|
|
|
346
215
|
---
|
|
347
216
|
|
|
348
|
-
##
|
|
217
|
+
## If something is wrong
|
|
349
218
|
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
- **The agent never handles raw secret values.** It picks env sources *by file name*; you type any real secret yourself.
|
|
219
|
+
**The assistant ignores Niro.** Restart it. Skills load at startup, so a fresh `niro mcp install`
|
|
220
|
+
does nothing until you do.
|
|
353
221
|
|
|
354
|
-
|
|
222
|
+
**`niro: command not found`.** Your global npm bin is not on `PATH`. Check with `npm bin -g`.
|
|
355
223
|
|
|
356
|
-
|
|
224
|
+
**This folder maps to several projects.** Pass `--project <alias|id>`, or pick one when asked.
|
|
357
225
|
|
|
358
|
-
-
|
|
359
|
-
- **`niro` not found** — ensure your global npm bin is on `PATH` (`npm bin -g`).
|
|
360
|
-
- **A folder maps to multiple projects** — pass `--project <alias|id>` (or pick one when prompted).
|
|
361
|
-
- **Auto-sync isn't running** — install PM2 (`npm install -g pm2`) then `niro service install`.
|
|
226
|
+
**Auto-sync is not running.** `npm install -g pm2`, then `niro service install`.
|
|
362
227
|
|
|
363
|
-
|
|
228
|
+
**A folder was refused.** Niro will not index your home folder, or a folder with no build file
|
|
229
|
+
in it. Point it at the repo you meant.
|
|
364
230
|
|
|
365
|
-
|
|
231
|
+
---
|
|
366
232
|
|
|
367
233
|
MIT
|