ur-agent 1.84.6 → 1.85.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.
@@ -350,7 +350,7 @@ automatically changes the active provider.
350
350
  | Clean update checks | `ur upgrade`, `ur update`, `src/cli/update.ts` | Detects development/source checkouts and prints a short pull-or-install message instead of attempting self-mutation. npm-installed builds compare the local version with `ur-agent` on npm and print update, latest, registry failure, and malformed-response states without stale planning text. |
351
351
  | Bundled IDE extension install | `extensions/vscode-ur-inline-diffs/`, `src/utils/ide.ts`, `ur ide diff` | Public VS Code install now packages the repo's bundled inline-diffs extension as a local VSIX instead of trying an unpublished marketplace ID. The extension remains local-only and reviews `.ur/ide/diffs` bundles from the current workspace. |
352
352
  | Professional clarification dialogs | `AskUserQuestion`, `src/tools/AskUserQuestionTool/AskUserQuestionTool.tsx` | Mandatory for every question with concrete choices; plain text is reserved for genuinely open-ended answers. Prefers 2-8 focused options but preserves larger legitimate menus, infers labels from description-only objects, accepts prompt aliases, deduplicates equivalent labels, safely repairs single suggestions with a neutral rejection choice, and is loaded without ToolSearch preloading. |
353
- | NVIDIA agent/task split | `nvidiaHostedModels.ts`, `NvidiaNimTask`, `/model` | Positively audits hosted agent contracts and exposes a one-shot model only when the live account catalog returns it and a complete adapter exists (FLUX.1 Schnell, Stable Video Diffusion, or PaliGemma). Task selection shows purpose and never replaces the ongoing agent. |
353
+ | NVIDIA Agentic/Special providers | live Build-card generator, `nvidiaHostedModels.ts`, `NvidiaSpecial`, `/model` | Audits 100 current Build cards and preserves every Free Endpoint card: 13 Agentic and 23 Special. Uses each card's exact HTTP/NVCF/gRPC route, method, function ID, request/response schema, input/output hints, Assets/async handling, and artifact decoding. Runtime errors never remove models; focused selection never replaces the ongoing agent. |
354
354
  | Documentation release sync | `README.md`, `docs/`, `documentation/`, `CHANGELOG.md` | Keeps the npm README, static documentation site, provider guide, usage guide, feature ledger, validation runbook, and release notes aligned with current release behavior. |
355
355
 
356
356
  ## v1.24.0 Additions
@@ -80,7 +80,7 @@ Inside an interactive session:
80
80
 
81
81
  | Trend | UR status | Current coverage | Professional next step |
82
82
  | --- | --- | --- | --- |
83
- | Provider-flexible, local-first runtime | Covered | Local Ollama; direct OpenAI, Anthropic, Gemini, OpenRouter, NVIDIA NIM, and OpenAI-compatible APIs; authenticated subscription-CLI adapters; explicit provider selection | Normalize capability discovery across providers and make automatic per-step routing opt-in |
83
+ | Provider-flexible, local-first runtime | Covered | Local Ollama; direct OpenAI, Anthropic, Gemini, OpenRouter, NVIDIA Agentic/Special, and OpenAI-compatible APIs; authenticated subscription-CLI adapters; explicit provider selection | Normalize capability discovery across providers and make automatic per-step routing opt-in |
84
84
  | Model Context Protocol ecosystem | Covered | Stable TypeScript SDK v2 split client/server/core runtime; `ur mcp`, OAuth/XAA, fail-closed bounded tools, final `input_required` continuation, all workspace roots with change notifications, and the opt-in stateless web server | Broaden independent-client interoperability fixtures |
85
85
  | Protocol Tasks and Apps | Covered | Negotiated Tasks lifecycle, owner-isolated durable state, and a self-contained Apps resource through `ur mcp serve-web` | Broaden independent-client interoperability fixtures |
86
86
  | A2A / Agent Card interoperability | Covered | Stable official v1.1 SDK, native ProtoJSON JSON-RPC/HTTP+JSON, SSE streaming, task resubscription, authenticated push delivery with validated destinations, negotiated cards, tenant isolation, durable artifacts, and explicit v0.3 compatibility | Broaden independent-client/TCK fixtures; keep gRPC and extended cards unadvertised until deployed and tested |
@@ -168,7 +168,7 @@ compatibility transport rather than relabeling either wire schema.
168
168
  ## Model Runtime Position
169
169
 
170
170
  UR is local-first, not local-only. Ollama supports private on-device execution;
171
- direct adapters support OpenAI, Anthropic, Gemini, OpenRouter, NVIDIA NIM, and compatible
171
+ direct adapters support OpenAI, Anthropic, Gemini, OpenRouter, NVIDIA Agentic/Special, and compatible
172
172
  endpoints; subscription adapters use the provider's authenticated CLI. Provider
173
173
  and model selection are explicit, credentials are resolved through the
174
174
  credential layer, and the optional fallback setting is diagnostic advice rather
@@ -88,7 +88,8 @@ receives general-purpose tools through this path.
88
88
 
89
89
  UR-Nexus supports official provider access paths only:
90
90
 
91
- - Explicit API providers: OpenAI, Anthropic, Gemini, OpenRouter, NVIDIA NIM, and
91
+ - Explicit API providers: OpenAI, Anthropic, Gemini, OpenRouter, NVIDIA
92
+ Agentic/Special, and
92
93
  OpenAI-compatible endpoints.
93
94
  - Local/server providers: Ollama, LM Studio, llama.cpp, vLLM, and Unsloth OpenAI-compatible
94
95
  server mode.
@@ -133,6 +134,7 @@ ur config set provider anthropic-api
133
134
  ur config set provider gemini-api
134
135
  ur config set provider openrouter
135
136
  ur config set provider nvidia-nim
137
+ ur config set provider nvidia-special
136
138
  ur config set provider openai-compatible
137
139
  ur config set provider unsloth
138
140
  ur provider doctor agy
@@ -188,7 +190,8 @@ When the active provider fails, `ur provider doctor` shows the configured
188
190
  recovery command; changing providers remains an explicit user action.
189
191
 
190
192
  Provider values accept canonical IDs and common aliases. Examples:
191
- `openai-api`, `anthropic-api`, `gemini-api`, `openrouter`, `nvidia-nim` (`NVIDIA Build`), `ollama`,
193
+ `openai-api`, `anthropic-api`, `gemini-api`, `openrouter`, `nvidia-nim`
194
+ (`NVIDIA Agentic`), `nvidia-special` (`NVIDIA Special`), `ollama`,
192
195
  `lmstudio`, `LM Studio`, `llama.cpp`, `vllm`, `unsloth` (`Unsloth Studio`), and the subscription CLI
193
196
  providers `codex-cli` (`chatgpt`), `claude-code-cli` (`claude`), `gemini-cli`
194
197
  (`gemini`), and `antigravity-cli` (`agy`). Values with spaces should be quoted
@@ -203,14 +206,14 @@ saved provider/model pair controls the runtime backend for the next agent
203
206
  request; Ollama is only used when `ollama` is the selected provider.
204
207
 
205
208
  The configured `base_url` is provider-scoped. Setting an address while vLLM is
206
- active does not replace the saved Ollama, llama.cpp, Unsloth, or NVIDIA NIM address;
209
+ active does not replace the saved Ollama, llama.cpp, Unsloth, or NVIDIA Agentic address;
207
210
  returning to any provider restores its own URL. Legacy `provider.baseUrl`
208
211
  settings are migrated to the old active provider on the first provider switch
209
212
  or scoped base-URL write.
210
213
  To configure a provider that is not active, use
211
214
  `ur config set base_url <provider> <url>`; the success message names the target
212
215
  provider. This applies to direct API providers and gateways (OpenAI, Anthropic,
213
- Gemini, OpenRouter, and NVIDIA NIM) as well as local/server providers; built-in vendor URLs
216
+ Gemini, OpenRouter, and NVIDIA Agentic) as well as local/server providers; built-in vendor URLs
214
217
  are fallbacks only. Discovery, doctor output, and request dispatch all resolve
215
218
  the same per-provider override. `/model` also opens an endpoint field when a
216
219
  disconnected local/server provider is selected.
@@ -280,27 +283,28 @@ VLLM_API_KEY=... # optional when required by the endpoint
280
283
  UNSLOTH_API_KEY=...
281
284
  ```
282
285
 
283
- NVIDIA NIM defaults to `https://integrate.api.nvidia.com/v1`, discovers the
284
- connected account's models live, and accepts a provider-scoped override for an
285
- enterprise or self-hosted NIM. On NVIDIA's hosted endpoint, `/v1/models`
286
- establishes account availability and UR's audited positive contract registry
287
- establishes agent compatibility; only their intersection can become the
288
- ongoing model. It does not narrow hosted models using the separate NVCF
289
- deployment inventory; a configured NIM gateway uses its own model feed. Generic
286
+ NVIDIA Agentic defaults to `https://integrate.api.nvidia.com/v1` and accepts a
287
+ provider-scoped override for an enterprise or self-hosted NIM. Public Build
288
+ models come from the current per-card Agentic contracts and are never filtered
289
+ or removed by an account inventory or entitlement failure. A configured NIM
290
+ gateway uses its own live model feed. Generic
290
291
  `openai-compatible` authentication is
291
292
  optional: `ur connect openai-compatible` or the picker's `K` key stores a
292
293
  credential when the chosen gateway needs one, without breaking anonymous
293
294
  local endpoints.
294
295
 
295
- The broader Build web page includes download-only NIMs; those are not valid
296
- hosted choices unless the authenticated `/v1/models` endpoint returns them.
297
- For the hosted service, UR focuses NVIDIA's documented fastest 30B agent model,
296
+ Download-only Build cards are not hosted choices. For the public Agentic
297
+ service, UR focuses NVIDIA's documented fastest 30B agent model,
298
298
  `nvidia/nemotron-3.5-lightning-30b-a3b`, first. Its thinking toggle maps to
299
299
  NVIDIA's model-specific `chat_template_kwargs.enable_thinking` field.
300
- The same key also authorizes the separately labelled one-shot FLUX.1 Schnell,
301
- Stable Video Diffusion, and PaliGemma adapters. Those use their exact
302
- `ai.api.nvidia.com` paths, never replace `provider.model`, and write generated
303
- media under `.ur/artifacts/nvidia/` unless an output path is supplied.
300
+ The same key authorizes NVIDIA Special. The current generator audits 100 Build
301
+ cards and preserves all 36 Free Endpoint entries across both providers: 13
302
+ Agentic and 23 Special. Every executable entry uses that card's exact URL,
303
+ HTTP/RPC method, function ID, and request/response schema. Twenty-two Special
304
+ entries are executable through HTTP, direct NVCF, or five native gRPC services;
305
+ the one unpublished protocol stays visible and labelled. Special selection
306
+ never replaces `provider.model`; large inputs use NVIDIA Assets and returned
307
+ artifacts are saved under `.ur/artifacts/nvidia/` unless a path is supplied.
304
308
 
305
309
  Unsloth is an inference-provider integration only. Start Unsloth Studio and
306
310
  load the model outside UR, connect its generated key with `ur connect unsloth`,
@@ -207,19 +207,17 @@ ur provider doctor
207
207
 
208
208
  For an authenticated generic gateway, run `ur connect openai-compatible` or
209
209
  press `K` on its `/model` screen; the key is optional and stored separately
210
- from `OPENAI_API_KEY`. NVIDIA NIM uses `ur connect nvidia-nim` and keeps any
210
+ from `OPENAI_API_KEY`. NVIDIA Agentic/Special use one key stored with
211
+ `ur connect nvidia-nim` or `ur connect nvidia-special`; Agentic keeps any
211
212
  custom `base_url` scoped to that provider.
212
213
 
213
214
  ### NVIDIA lists a model but inference returns `Function … Not found for account`
214
215
 
215
- - Cause: NVIDIA's hosted `/v1/models` feed can change, or a listed model's
216
- backing function can become unavailable for the connected account.
217
- - Fix: upgrade UR, run `ur provider doctor nvidia-nim`, then open `/model` and
218
- press `Ctrl+R`. Hosted discovery intersects NVIDIA's live `/v1/models`
219
- availability with UR's audited agent contracts. It does not intersect the
220
- catalog with the separate NVCF deployment-function inventory. A definitive
221
- runtime 404 removes only that model from the current endpoint-scoped session
222
- catalog until the next explicit refresh.
216
+ - Cause: the card is documented by NVIDIA, but its backing function is not
217
+ entitled or temporarily available for this API key/account.
218
+ - Fix: verify the model card and key with `ur provider doctor nvidia-nim`, then
219
+ retry. UR uses the exact per-card endpoint and keeps the model visible. A 404
220
+ never removes it from the current or future catalog.
223
221
  - Privacy: UR does not display or retain the internal NVIDIA function UUID and
224
222
  account identifier from this error response.
225
223
 
@@ -227,17 +225,22 @@ If `chat_models` fails, reconnect a current build.nvidia.com key with
227
225
  `ur connect nvidia-nim`. A configured enterprise/self-hosted NIM endpoint is
228
226
  validated only against that gateway's own `/models` response.
229
227
 
230
- ### An NVIDIA image/video/vision model is missing from `/model`
231
-
232
- - Ongoing models appear only when NVIDIA returns them live and their exact
233
- documented contract supports UR's multi-turn streaming tool loop.
234
- - Dedicated models appear only in the `ONE-SHOT` section after UR implements
235
- their endpoint, request, response, media constraints, and artifact handling.
236
- The current set is FLUX.1 Schnell, Stable Video Diffusion, and PaliGemma.
237
- - Download-only Build cards and unadapted endpoints are intentionally absent;
238
- UR does not present a model that it cannot execute correctly.
239
- - Stable Video Diffusion's hosted inline-image contract accepts JPEG/PNG files
240
- smaller than 200 KB. Compress larger input before retrying.
228
+ ### An NVIDIA specialized model is missing from `/model`
229
+
230
+ - Ongoing public models come from exact Build cards that advertise agent/tool
231
+ use; a configured enterprise NIM uses its own live `/models` feed.
232
+ - Dedicated models appear under NVIDIA Special without relying on a chat
233
+ `/v1/models` response.
234
+ Run `bun run provider:nvidia-catalog` in a source checkout to refresh the
235
+ checked-in contracts from NVIDIA's current public reference.
236
+ - Download-only cards are absent. Every Free Endpoint card is preserved. If a
237
+ card lacks a published invocation protocol, it remains visible with
238
+ `unpublished` status rather than receiving a guessed endpoint.
239
+ - UR inlines small supported media and automatically uses NVIDIA's Asset API
240
+ for larger files or contracts that require an asset UUID/reference.
241
+ - A task-specific entitlement failure never removes the model. Exact endpoint,
242
+ HTTP/RPC method, function ID, request/response schemas, and documentation are
243
+ available through the `NvidiaSpecial` describe action.
241
244
 
242
245
  ### A provider says the previous answer was empty after successful tool calls
243
246
 
package/docs/USAGE.md CHANGED
@@ -240,7 +240,8 @@ Use `ur provider status` or `ur provider doctor <provider>` to see provider
240
240
  kind, external CLI usage, native tool/streaming support, and the boundary text.
241
241
 
242
242
  Provider values accept canonical IDs and common aliases. For example,
243
- `openai-api`, `anthropic-api`, `gemini-api`, `openrouter`, `nvidia-nim`, `ollama`,
243
+ `openai-api`, `anthropic-api`, `gemini-api`, `openrouter`, `nvidia-nim`,
244
+ `nvidia-special`, `ollama`,
244
245
  `lmstudio`, `llama.cpp`, `vllm`, and `unsloth` are UR-native runtime providers, and
245
246
  `codex-cli` (`chatgpt`), `claude-code-cli` (`claude`), `gemini-cli` (`gemini`),
246
247
  and `antigravity-cli` (`agy`) are subscription CLI providers.
@@ -257,7 +258,7 @@ and is inference-only: UR does not manage Unsloth and disables its server-side
257
258
  tools while retaining standard function calls inside UR's guarded tool loop.
258
259
 
259
260
  UR stores `base_url` per provider. You can set different addresses for
260
- Ollama, LM Studio, llama.cpp, vLLM, Unsloth, and NVIDIA NIM once, then switch providers without
261
+ Ollama, LM Studio, llama.cpp, vLLM, Unsloth, and NVIDIA Agentic once, then switch providers without
261
262
  re-entering any of them. `ur config get base_url` reports the active provider's
262
263
  saved scoped override when one exists; use `ur provider status` or
263
264
  `ur provider doctor <provider>` to inspect the effective endpoint.
@@ -266,32 +267,30 @@ without making it active first. The `/model` picker offers the same endpoint
266
267
  entry flow for a disconnected local/server provider.
267
268
 
268
269
  Use `/model` in an interactive session to select provider first and model
269
- second. OpenAI API, Claude API, Gemini API, OpenRouter, NVIDIA NIM, Ollama, and
270
+ second. OpenAI API, Claude API, Gemini API, OpenRouter, NVIDIA Agentic, Ollama, and
270
271
  OpenAI-compatible endpoints stay separate; a subscription login does not grant
271
272
  API-key access, and an API key does not grant subscription CLI access.
272
273
 
273
- NVIDIA NIM uses the build.nvidia.com key and hosted
274
+ NVIDIA Agentic and NVIDIA Special share the build.nvidia.com key. Agentic uses
274
275
  `https://integrate.api.nvidia.com/v1` endpoint by default. Connect it with
275
- `ur connect nvidia-nim`; use `ur config set base_url nvidia-nim <url>` for a
276
- different NIM deployment. For the hosted endpoint, `/model` intersects the
277
- account's live `/v1/models` feed with exact NVIDIA-documented agent contracts.
278
- This excludes utility endpoints and dedicated single-use APIs from the ongoing
279
- agent list even when NVIDIA returns them. NVCF deployment functions are a
280
- separate API and do not narrow this hosted catalog. A custom NIM gateway
281
- retains its own independent catalog.
276
+ `ur connect nvidia-nim` (or `ur connect nvidia-special`); use
277
+ `ur config set base_url nvidia-nim <url>` for a
278
+ different NIM deployment. Public Agentic entries come from exact per-card
279
+ contracts and are not filtered or removed by NVIDIA account inventory errors.
280
+ A custom NIM gateway retains its own independent live catalog.
282
281
  Download-only cards from the Build web catalog are not inserted into the
283
282
  hosted picker. NVIDIA's live `nemotron-3.5-lightning-30b-a3b` endpoint is
284
283
  focused first as its documented fastest 30B agent model; Left/Right controls
285
284
  that model's advertised on/off thinking switch.
286
- Verified specialized models returned by the connected account appear
287
- separately as `ONE-SHOT`, with their purpose visible before selection. FLUX.1
288
- Schnell generates a JPEG from text, Stable Video Diffusion generates an MP4
289
- from a sub-200-KB JPEG/PNG, and PaliGemma analyzes one image with one prompt.
290
- Selecting one leaves the ongoing agent unchanged; describe the task normally
291
- and UR uses `NvidiaNimTask` with the same stored NVIDIA key and exact model
292
- endpoint. Generated media defaults to `.ur/artifacts/nvidia/`. Other
293
- download-only, utility, and dedicated models remain hidden until UR has a
294
- complete executable adapter for their contract.
285
+ NVIDIA Special appears as its own provider, with purpose and input/output hints
286
+ before selection. The current Build audit preserves all 23 focused Free
287
+ Endpoint cards. `NvidiaSpecial` describes or runs each card's exact inference
288
+ URL, HTTP/RPC method, function ID, and request/response schema using the shared
289
+ key. It supports HTTP, direct NVCF, async polling, NVIDIA Assets, and five
290
+ documented Maxine/Riva gRPC services. Selecting one leaves the ongoing agent
291
+ unchanged. Returned media/binary/JSON defaults to `.ur/artifacts/nvidia/`.
292
+ Cards are never removed; an unpublished protocol remains visible and clearly
293
+ cannot be invoked until NVIDIA publishes its contract.
295
294
  On the `/model` model screen, `K` adds or replaces a
296
295
  provider API key and `E` edits its endpoint. This also makes optional
297
296
  authentication practical for generic OpenAI-compatible gateways.
@@ -19,7 +19,7 @@ You need:
19
19
 
20
20
  ```sh
21
21
  ur --version
22
- # expected for this release: "1.84.6 (UR-Nexus)"
22
+ # expected for this release: "1.85.0 (UR-Nexus)"
23
23
  ```
24
24
 
25
25
  ### 0.0 Redteam mode and Reverse Skills (1.81.0)
@@ -258,19 +258,18 @@ bun test test/bashCommandExecution.test.ts \
258
258
  Expected: macOS can execute `timeout 0.1 …` without GNU coreutils and reports
259
259
  124 when the deadline expires. Image-bearing tool results retain their text and
260
260
  image bytes across OpenAI Chat/Responses, Anthropic, Gemini, OpenRouter,
261
- NVIDIA NIM, Ollama, LM Studio, llama.cpp, vLLM, Unsloth, and generic OpenAI-compatible
261
+ NVIDIA Agentic/Special, Ollama, LM Studio, llama.cpp, vLLM, Unsloth, and generic OpenAI-compatible
262
262
  request shapes.
263
263
 
264
- The NVIDIA fixture also verifies hosted/default and overridden endpoints,
265
- Bearer discovery from NVIDIA's live `/v1/models` endpoint, positive agent
266
- contract intersection, selected-model doctor diagnostics, redaction of
267
- internal NVIDIA account/function IDs, endpoint-scoped runtime invalidation,
268
- native dispatch, the preferred Lightning endpoint and its model-scoped
269
- `enable_thinking` switch, documented effort aliases, and no Ultra on an unknown model.
270
- `nvidiaTaskRuntime.test.ts` verifies the exact FLUX, Stable Video Diffusion,
271
- and PaliGemma endpoints and payloads; Bearer reuse; async request-ID polling;
272
- artifact decoding; media constraints; and rejection of every model without an
273
- implemented adapter. In
264
+ The NVIDIA fixtures verify the 100-card/36-Free-Endpoint audit, the 13 Agentic
265
+ and 23 Special split, shared credential ownership, exact per-card endpoint
266
+ routing, public-catalog preservation after entitlement failures, enterprise
267
+ gateway isolation, redaction of internal NVIDIA account/function IDs, native
268
+ dispatch, Lightning thinking, documented effort aliases, and no Ultra on an
269
+ unknown model. `nvidiaTaskRuntime.test.ts` verifies PaliGemma, Cosmos Transfer,
270
+ Cosmos3 async polling, direct-function BEV multi-artifacts, embeddings,
271
+ NVIDIA Asset upload/cleanup, generated-schema validation, and all five exact
272
+ public gRPC service/method and streaming shapes. In
274
273
  `/model`, select `openai-compatible` and verify `K` can
275
274
  add or replace its optional key while `E` continues to edit only its endpoint.
276
275
 
package/docs/providers.md CHANGED
@@ -37,7 +37,8 @@ multimodal input, external CLI boundary, and sandbox scope:
37
37
  | Claude API | API | UR-native | no | yes | yes | yes | UR Bash/File sandbox | `api:anthropic` | `ANTHROPIC_API_KEY` |
38
38
  | Gemini API | API | UR-native | no | yes | yes | yes | UR Bash/File sandbox | `api:gemini` | `GEMINI_API_KEY` |
39
39
  | OpenRouter | API/router | UR-native | no | yes | yes | yes | UR Bash/File sandbox | `api:openrouter` | `OPENROUTER_API_KEY` |
40
- | NVIDIA NIM | hosted/server API | UR-native | no | yes | yes | model-dependent | UR Bash/File sandbox | `api:nvidia-nim` | `NVIDIA_API_KEY`; configurable NIM endpoint |
40
+ | NVIDIA Agentic | hosted/server API | UR-native | no | yes | yes | model-dependent | UR Bash/File sandbox | `api:nvidia-nim` | `NVIDIA_API_KEY`; public per-card endpoints or configurable NIM gateway |
41
+ | NVIDIA Special | hosted/focused-task API | UR-native | no | task-specific | task-specific | task-specific | UR tool permission flow | `api:nvidia-special` | shared `NVIDIA_API_KEY`; exact HTTP/NVCF/gRPC contracts |
41
42
  | OpenAI-compatible | server/API | UR-native | no | yes | yes | endpoint-dependent | UR Bash/File sandbox | `openai-compatible` | optional `OPENAI_COMPATIBLE_API_KEY`; never reuses `OPENAI_API_KEY` |
42
43
  | Ollama | local/server | UR-native | no | yes | yes | yes* | UR Bash/File sandbox | `ollama` | configured local, LAN, or hosted endpoint; optional `OLLAMA_API_KEY` |
43
44
  | LM Studio | local/server | UR-native | no | yes | yes | yes | UR Bash/File sandbox | `openai-compatible:lmstudio` | configured endpoint; optional `LMSTUDIO_API_KEY` |
@@ -161,7 +162,7 @@ migrated to the previously active provider on the first provider switch or
161
162
  scoped base-URL write.
162
163
 
163
164
  The override is not limited to local runtimes. OpenAI API, Anthropic API,
164
- Gemini API, OpenRouter, and NVIDIA NIM can each target a separate compatible gateway using
165
+ Gemini API, OpenRouter, and NVIDIA Agentic can each target a separate compatible gateway using
165
166
  the same command. Their official URLs are defaults, not hardcoded dispatch
166
167
  destinations; model discovery and inference use the selected provider's saved
167
168
  URL. Subscription CLI providers remain vendor-managed and do not accept a base
@@ -212,15 +213,14 @@ or has unknown capability metadata. Arbitrary
212
213
  labels such as `deep` still require an explicit provider alias because UR
213
214
  cannot infer their rank.
214
215
 
215
- NVIDIA NIM is live-discovery first. UR enriches a discovered model only when
216
- NVIDIA's current model API reference documents that exact model's
217
- `reasoning_effort` values. Documented `none` appears as Minimal and `max`
218
- appears as Ultra while the request preserves NVIDIA's wire values. An unknown
219
- NIM model never inherits an invented graded ladder.
220
- Hosted discovery is also a positive agent-contract intersection: a row in the
221
- mixed NVIDIA `/v1/models` inventory is not sufficient by itself to enter the
222
- ongoing agent picker. Verified dedicated media/VLM endpoints are exposed only
223
- as one-shot task contracts and cannot pass provider/model validation.
216
+ Public NVIDIA Agentic discovery comes from current Build Free Endpoint cards
217
+ that advertise agent/tool use. NVIDIA's account inventory can enrich but never
218
+ filter or remove those models. UR applies only model-specific documented
219
+ reasoning ladders: `none` appears as Minimal and a documented `max` can map to
220
+ Ultra while preserving NVIDIA's wire value. Unknown models never inherit a
221
+ ladder. Focused media, analysis, embedding, safety, translation, and gRPC
222
+ contracts are isolated in NVIDIA Special and cannot pass ongoing-agent model
223
+ validation.
224
224
 
225
225
  For an unknown or newly released model, UR waits for provider-authored model
226
226
  metadata or a supported model-scoped probe before adding thinking parameters.
@@ -298,10 +298,10 @@ and [fast mode](https://platform.claude.com/docs/en/build-with-claude/fast-mode)
298
298
  UR uses only provider-documented acceleration controls. OpenAI Responses
299
299
  already has native streaming and WebSocket continuation; Gemini 2.5+ implicit
300
300
  caching is automatic. Google's Priority tier requires the Interactions API and
301
- is not a valid `generateContent` option. NVIDIA NIM and local servers publish
301
+ is not a valid `generateContent` option. NVIDIA Agentic and local servers publish
302
302
  no universal OpenRouter-style routing field, so UR does not invent one.
303
303
  API-key entry for
304
- OpenAI, Claude, Gemini, OpenRouter, NVIDIA NIM, and authenticated compatible
304
+ OpenAI, Claude, Gemini, OpenRouter, NVIDIA Agentic/Special, and authenticated compatible
305
305
  endpoints is a single aligned masked row; the key is stored in the OS keychain
306
306
  flow and is never written to settings. On the model screen, `K` adds or
307
307
  replaces the selected HTTP provider's key and `E` edits its endpoint. Generic
@@ -313,7 +313,7 @@ UR uses each provider's non-generating count endpoint when one covers the full
313
313
  request: OpenAI Responses input tokens, Anthropic Messages token counting,
314
314
  Gemini `countTokens`, llama.cpp chat input tokens, and vLLM Messages token
315
315
  counting. NVIDIA's hosted NIM API has no documented token-count route;
316
- NVIDIA NIM, Ollama, OpenRouter, LM Studio, Unsloth, and subscription CLIs use a
316
+ NVIDIA Agentic, Ollama, OpenRouter, LM Studio, Unsloth, and subscription CLIs use a
317
317
  provider-wire local estimate because those runtimes do not share a dependable
318
318
  preflight tokenizer for complete chat history plus tools. UR never launches a
319
319
  hidden completion for token counting. If a native count call is unavailable,
@@ -344,7 +344,7 @@ error, not a successful `Did 0 searches` result.
344
344
  When you select a UR-native provider and model, every agent request is routed
345
345
  through that provider's backend:
346
346
 
347
- - **API providers** make direct HTTP calls in each provider's native wire format: Anthropic uses `x-api-key` + `anthropic-version` against `/v1/messages`; OpenAI uses `Authorization: Bearer` against `/v1/chat/completions` by default or `/v1/responses` when explicitly selected; Gemini uses `x-goog-api-key` against `…:generateContent`; OpenRouter and NVIDIA NIM use their OpenAI-compatible chat endpoints.
347
+ - **API providers** make direct calls in each provider's native wire format: Anthropic uses `x-api-key` + `anthropic-version` against `/v1/messages`; OpenAI uses `Authorization: Bearer` against `/v1/chat/completions` by default or `/v1/responses` when explicitly selected; Gemini uses `x-goog-api-key` against `…:generateContent`; OpenRouter and NVIDIA Agentic use documented chat endpoints; NVIDIA Special uses per-card HTTP, NVCF, or gRPC inference.
348
348
  - **Local/server providers** connect to the configured local or OpenAI-compatible endpoint (`/v1/chat/completions` for LM Studio, llama.cpp and vLLM; the native tags/chat API for Ollama)
349
349
  - **Subscription CLI providers** (Codex CLI, Claude Code, Gemini CLI,
350
350
  Antigravity) dispatch the turn through the vendor's official CLI using your
@@ -455,7 +455,8 @@ ur config set provider anthropic-api
455
455
  | --- | --- | --- |
456
456
  | API providers (openai-api, anthropic-api, gemini-api) | Live discovery from the provider's `/models` endpoint using your connected key (curated fallback until connected) | live |
457
457
  | OpenRouter | Live `/models` discovery with an endpoint-scoped five-minute cache; Ctrl+R forces a fresh request with no stale fallback | live/cache |
458
- | NVIDIA NIM | Hosted: live `/models` availability intersected with audited agent contracts, plus separately labelled one-shot models with implemented adapters. Configured NIM gateway: its own live `/models` catalog | live |
458
+ | NVIDIA Agentic | Public Build: generated per-card agent contracts, never narrowed by account inventory. Configured NIM gateway: its own live `/models` catalog | live card contracts or gateway live |
459
+ | NVIDIA Special | Generated from every current focused Free Endpoint card, including exact HTTP/NVCF/gRPC inference metadata | static generated contracts |
459
460
  | Local/server providers (ollama, lmstudio, llama.cpp, vllm, unsloth) | Dynamic discovery from the selected provider endpoint | live |
460
461
  | OpenAI-compatible | Dynamic discovery from configured endpoint | live |
461
462
  | Subscription CLIs (codex-cli, claude-code-cli, gemini-cli, antigravity-cli) | Curated list (the official CLIs expose no models API); first-class in `/model`, dispatched via the official CLI. External CLI behavior depends on the vendor CLI. Log in with `ur auth <provider>` | static |
@@ -482,7 +483,7 @@ provider's successful live catalog remains authoritative for that account.
482
483
  - `anthropic-api` — requires `ANTHROPIC_API_KEY`
483
484
  - `gemini-api` — requires `GEMINI_API_KEY`
484
485
  - `openrouter` — requires `OPENROUTER_API_KEY`
485
- - `nvidia-nim` — requires `NVIDIA_API_KEY` for build.nvidia.com; endpoint is configurable
486
+ - `nvidia-nim` / `nvidia-special` share `NVIDIA_API_KEY`; Agentic's enterprise endpoint is configurable, while Special routes each public model to its card-specific contract
486
487
 
487
488
  **Local/server providers** require local runtime or endpoint:
488
489
  - `ollama` — configurable local, LAN, or hosted Ollama server
@@ -616,6 +617,7 @@ Provider config and doctor commands accept canonical IDs and common aliases:
616
617
  | `gemini-api` | `gemini api`, `google gemini api` |
617
618
  | `openrouter` | `openrouter api` |
618
619
  | `nvidia-nim` | `nvidia`, `NVIDIA Build`, `nvidia api`, `nim` |
620
+ | `nvidia-special` | `NVIDIA Special`, `nvidia task`, `nvidia one-shot` |
619
621
  | `openai-compatible` | `compatible`, `openai compatible` |
620
622
  | `ollama` | `ollama local` |
621
623
  | `lmstudio` | `LM Studio`, `lm-studio` |
@@ -680,36 +682,35 @@ The compatible provider's key is optional and provider-scoped. Add or replace
680
682
  it with `ur connect openai-compatible`, `/connect openai-compatible`, or `K`
681
683
  in the `/model` model screen. Anonymous endpoints continue to work without it.
682
684
 
683
- ### NVIDIA NIM / build.nvidia.com
685
+ ### NVIDIA Agentic and NVIDIA Special / build.nvidia.com
684
686
 
685
- NVIDIA NIM is a UR-native, OpenAI-compatible provider with live discovery:
687
+ NVIDIA is exposed through two UR-native providers sharing one stored key:
686
688
 
687
689
  ```sh
688
690
  echo "$NVIDIA_API_KEY" | ur connect nvidia-nim
689
691
  ur config set provider nvidia-nim
690
692
  ur provider doctor nvidia-nim
693
+ # Focused inference uses the same key:
694
+ ur config set provider nvidia-special
691
695
  # Optional self-hosted/enterprise gateway:
692
696
  ur config set base_url nvidia-nim https://nim-gateway.example/v1
693
697
  ```
694
698
 
695
- The default is `https://integrate.api.nvidia.com/v1`. NVIDIA's authenticated
696
- `/v1/models` response proves current account availability but mixes agents,
697
- utilities, VLMs, and generation functions. UR intersects it with a reviewed
698
- positive agent registry before allowing a model to own the multi-turn tool
699
- loop. It does not intersect the result with NVCF's separate deployment-function
700
- inventory. A custom enterprise or self-hosted NIM remains independent and uses
701
- only that configured gateway's `/models` response.
702
-
703
- The Build web catalog also contains download-only NIMs. UR does not add those
704
- cards to the hosted picker: only IDs returned by the authenticated hosted
705
- `/v1/models` endpoint can appear. UR focuses
699
+ NVIDIA Agentic defaults to `https://integrate.api.nvidia.com/v1`. For the
700
+ public service, UR generates its agent catalog from every current Free Endpoint
701
+ card that explicitly advertises agent/tool use. `/v1/models` is not an
702
+ allowlist: account entitlement failures are reported and never remove a model.
703
+ A custom enterprise or self-hosted NIM remains independent and uses only that
704
+ configured gateway's live `/models` response. Download-only cards never enter
705
+ either hosted provider. UR focuses
706
706
  `nvidia/nemotron-3.5-lightning-30b-a3b` first because NVIDIA documents it as
707
707
  its fastest 30B model for long-running agents. Left/Right can turn that exact
708
708
  model's thinking off/on through NVIDIA's documented
709
709
  `chat_template_kwargs.enable_thinking`; other NIM models receive only their
710
710
  own advertised reasoning contract.
711
711
 
712
- UR calls `/models` and `/chat/completions`. It counts NVIDIA requests with a
712
+ Agentic uses each generated card's documented chat endpoint (or the configured
713
+ gateway). It counts NVIDIA requests with a
713
714
  provider-wire local estimate instead of first calling the unsupported hosted
714
715
  `/messages/count_tokens` route, and never launches a hidden completion.
715
716
  Streaming, standard tool calls, and image input use the
@@ -719,31 +720,29 @@ documented Nemotron coding-agent models, UR includes NVIDIA's
719
720
  [NIM LLM API reference](https://docs.api.nvidia.com/nim/reference/llm-apis)
720
721
  and [NIM endpoint guide](https://docs.nvidia.com/nim/large-language-models/latest/tutorials.html).
721
722
 
722
- NVIDIA's dedicated APIs are a separate one-shot surface. `/model` labels them
723
- `ONE-SHOT`, shows the task purpose, and keeps the current agent model when one
724
- is selected. `NvidiaNimTask` currently implements three exact contracts:
725
-
726
- - [FLUX.1 Schnell](https://docs.api.nvidia.com/nim/reference/black-forest-labs-flux_1-schnell-infer)
727
- text-to-JPEG at
728
- `https://ai.api.nvidia.com/v1/genai/black-forest-labs/flux.1-schnell`.
729
- - [Stable Video Diffusion](https://docs.api.nvidia.com/nim/reference/stabilityai-stable-video-diffusion-infer)
730
- JPEG/PNG-to-MP4 at
731
- `https://ai.api.nvidia.com/v1/genai/stabilityai/stable-video-diffusion`;
732
- NVIDIA's inline input contract requires a source smaller than 200 KB.
733
- - [PaliGemma](https://docs.api.nvidia.com/nim/reference/google-paligemma-infer)
734
- → one-image visual analysis at
735
- `https://ai.api.nvidia.com/v1/vlm/google/paligemma`.
736
-
737
- They reuse `NVIDIA_API_KEY`, poll documented asynchronous responses when
738
- necessary, save generated files under `.ur/artifacts/nvidia/` by default, and
739
- return only text/path metadata to the enclosing agent. Unsupported,
740
- download-only, and unadapted dedicated models never appear as usable choices.
741
-
742
- `ur provider doctor nvidia-nim` verifies the hosted catalog and selected model
743
- against the live `/v1/models` response. If NVIDIA rejects a listed model after
744
- selection, UR redacts NVIDIA's internal function/account IDs, removes that
745
- model from the current endpoint-scoped session catalog, and asks the user to
746
- select another model. `Ctrl+R` explicitly retries discovery.
723
+ NVIDIA Special is a separate focused-task provider. Selecting a row stores a
724
+ one-shot preference and keeps the current chat provider/model. The generator
725
+ crawls all 100 current Build cards and preserves every card labelled Free
726
+ Endpoint: 36 total, split into 13 Agentic and 23 Special. Thirty-five publish a
727
+ complete executable contract; 22 are Special. The remaining VoiceChat card is
728
+ kept visible with `unpublished` transport because NVIDIA currently provides no
729
+ public request/response protocol.
730
+
731
+ Every executable row records the purpose, input/output hints, exact endpoint,
732
+ HTTP or RPC method, card-specific function ID, request and response schemas,
733
+ documentation, and current NVIDIA availability flag. HTTP cards use their own
734
+ `integrate.api.nvidia.com`, `ai.api.nvidia.com`, or direct
735
+ `{function-id}.invocation.api.nvcf.nvidia.com` route. Five Maxine/Riva cards use
736
+ their exact public service/method on `grpc.nvcf.nvidia.com:443`.
737
+
738
+ `NvidiaSpecial` exposes `describe` for the full contract and `run` for
739
+ convenience text/image/audio/video inputs or exact `payload_json` with
740
+ JSON-pointer file bindings. UR inlines small media, uses NVIDIA Assets for
741
+ larger inputs, polls documented asynchronous requests, decodes single or
742
+ multiple returned artifacts, and saves output under `.ur/artifacts/nvidia/`
743
+ unless the caller supplies a path. Both providers reuse `NVIDIA_API_KEY`.
744
+ NVIDIA availability and entitlement errors are redacted and reported, but no
745
+ model is ever removed from either generated catalog.
747
746
 
748
747
  Local/server providers use their normal endpoints:
749
748
 
@@ -801,7 +800,7 @@ Required variables:
801
800
  | --- | --- | --- |
802
801
  | OpenAI-compatible | `OPENAI_COMPATIBLE_BASE_URL`, `OPENAI_COMPATIBLE_MODEL` | `OPENAI_COMPATIBLE_API_KEY` |
803
802
  | Unsloth | `UNSLOTH_API_KEY`, `UNSLOTH_MODEL` | `UNSLOTH_BASE_URL` (defaults to `http://localhost:8888/v1`) |
804
- | NVIDIA NIM | `NVIDIA_API_KEY`, `NVIDIA_MODEL` | `NVIDIA_BASE_URL` (defaults to `https://integrate.api.nvidia.com/v1`) |
803
+ | NVIDIA Agentic | `NVIDIA_API_KEY`, `NVIDIA_MODEL` | `NVIDIA_BASE_URL` (defaults to `https://integrate.api.nvidia.com/v1`) |
805
804
  | OpenAI | `OPENAI_API_KEY`, `OPENAI_MODEL` | `OPENAI_BASE_URL` |
806
805
  | OpenRouter | `OPENROUTER_API_KEY`, `OPENROUTER_MODEL` | `OPENROUTER_BASE_URL` |
807
806
  | Anthropic | `ANTHROPIC_API_KEY`, `ANTHROPIC_MODEL` | `ANTHROPIC_BASE_URL` |
@@ -68,8 +68,8 @@ const featureGroups = [
68
68
  {
69
69
  title: 'Providers and auth',
70
70
  tags: ['subscription', 'API', 'local', 'effort', 'status bar'],
71
- text: 'UR-native API/local/OpenAI-compatible runtimes, provider-scoped endpoints, audited NVIDIA agent discovery plus exact one-shot image/video/vision adapters, provider-only Unsloth inference, optional compatible-gateway keys, capability-driven reasoning effort, responsive OpenRouter routing, first-class subscription CLI providers dispatched through the official vendor CLIs, provider doctor checks, secure API-key connect, non-secret config, fallback hints, and provider-aware status-bar output.',
72
- commands: ['ur provider list', 'ur provider status', 'ur provider doctor nvidia-nim', 'ur connect status', 'ur config set provider nvidia-nim', 'ur config set provider openai-api', 'ur config set provider ollama', 'ur config set base_url llama.cpp http://localhost:9931/v1', '/model', '/effort ultra', '/thinking on'],
71
+ text: 'UR-native API/local/OpenAI-compatible runtimes, provider-scoped endpoints, NVIDIA Agentic plus NVIDIA Special with all 36 current Build Free Endpoint cards and exact per-card HTTP/NVCF/gRPC inference contracts, provider-only Unsloth inference, optional compatible-gateway keys, capability-driven reasoning effort, responsive OpenRouter routing, first-class subscription CLI providers dispatched through official vendor CLIs, provider doctor checks, secure API-key connect, non-secret config, fallback hints, and provider-aware status-bar output.',
72
+ commands: ['ur provider list', 'ur provider status', 'ur provider doctor nvidia-nim', 'ur connect status', 'ur config set provider nvidia-nim', 'ur config set provider nvidia-special', 'ur config set provider openai-api', 'ur config set provider ollama', 'ur config set base_url llama.cpp http://localhost:9931/v1', '/model', '/effort ultra', '/thinking on'],
73
73
  },
74
74
  {
75
75
  title: 'Security and operations',
@@ -45,7 +45,7 @@
45
45
  <main id="content" class="content">
46
46
  <header class="topbar">
47
47
  <div>
48
- <p class="eyebrow">Version 1.84.6</p>
48
+ <p class="eyebrow">Version 1.85.0</p>
49
49
  <h1>UR-Nexus Documentation</h1>
50
50
  <p class="lead">A practical, tutorial-style reference for installing, configuring, automating, extending, and operating UR-Nexus.</p>
51
51
  </div>
@@ -166,6 +166,7 @@ ur provider doctor agy</code></pre>
166
166
  <pre><code>ur config set provider openai-compatible
167
167
  ur config set provider openai-api
168
168
  ur config set provider nvidia-nim
169
+ ur config set provider nvidia-special
169
170
  ur config set base_url ollama http://localhost:11434
170
171
  ur config set base_url llama.cpp http://localhost:9931/v1
171
172
  ur config set provider unsloth
@@ -174,7 +175,7 @@ ur config set provider.fallback ollama
174
175
  ur config set openai_transport responses
175
176
  ur config set responses.store false
176
177
  ur config set anthropic.speed fast</code></pre>
177
- <p>API providers require explicit selection and read keys from a key stored via <code>ur connect</code> (OS keychain) or from environment variables. Each configurable provider keeps its own <code>base_url</code>, so switching among Ollama, LM Studio, llama.cpp, vLLM, Unsloth, NVIDIA NIM, and API gateways restores the matching address. OpenAI Responses is opt-in and privacy-first; Chat Completions remains the default. Direct Anthropic preserves prompt-cache breakpoints, streams tool inputs with its per-tool control, and enables the documented premium fast tier only when explicitly configured for a supported model. Unsloth is an authenticated inference provider only.</p>
178
+ <p>API providers require explicit selection and read keys from a key stored via <code>ur connect</code> (OS keychain) or from environment variables. Each configurable provider keeps its own <code>base_url</code>, so switching among Ollama, LM Studio, llama.cpp, vLLM, Unsloth, NVIDIA Agentic, and API gateways restores the matching address. OpenAI Responses is opt-in and privacy-first; Chat Completions remains the default. Direct Anthropic preserves prompt-cache breakpoints, streams tool inputs with its per-tool control, and enables the documented premium fast tier only when explicitly configured for a supported model. Unsloth is an authenticated inference provider only.</p>
178
179
  </article>
179
180
  <article>
180
181
  <h3>Capability-driven reasoning effort</h3>
@@ -191,12 +192,13 @@ ur --model kimi-k3:cloud --effort high
191
192
  <p>The endpoint-scoped model catalog is reused for five minutes, while forced refresh never substitutes stale data. Tool turns preserve OpenRouter Auto Exacto for live throughput and tool-call reliability; non-tool turns prefer end-to-end throughput. Stable session affinity keeps prompt caches warm, while configurable routing preferences and the <code>:nitro</code>, <code>:floor</code>, and <code>:exacto</code> variants remain authoritative.</p>
192
193
  </article>
193
194
  <article>
194
- <h3>NVIDIA NIM and compatible API keys</h3>
195
+ <h3>NVIDIA Agentic, NVIDIA Special, and compatible API keys</h3>
195
196
  <pre><code>ur connect nvidia-nim
196
197
  ur config set provider nvidia-nim
198
+ ur config set provider nvidia-special
197
199
  ur config set base_url nvidia-nim https://integrate.api.nvidia.com/v1
198
200
  /model # K API key · E endpoint</code></pre>
199
- <p>NVIDIA NIM separates ongoing agents from specialized one-shot models. Hosted agent discovery intersects the live <code>/v1/models</code> inventory with audited tool-loop contracts; download-only, utility, and unadapted models stay hidden. The separately labelled one-shot section shows a model only when the connected account returns it and UR has a complete adapter: FLUX.1 Schnell text-to-image, Stable Video Diffusion image-to-video, and PaliGemma image understanding use their exact documented endpoints and the same stored NVIDIA key. Their purpose appears before selection, generated media is saved under <code>.ur/artifacts/nvidia/</code>, and the ongoing agent never changes. Nemotron 3.5 Lightning retains its documented on/off thinking field; unknown models inherit no fabricated effort. Generic OpenAI-compatible endpoints can store an optional dedicated key, while anonymous endpoints remain valid.</p>
201
+ <p>NVIDIA is split into NVIDIA Agentic for the ongoing tool loop and NVIDIA Special for focused inference; both share one stored <code>NVIDIA_API_KEY</code>. UR audits all 100 current Build cards and preserves every Free Endpoint card: 13 Agentic and 23 Special. Thirty-five publish executable contracts; the one unpublished protocol stays visible and labelled. Each row shows purpose, input, and output, and uses that card's exact HTTP, direct NVCF, or gRPC endpoint, method, function ID, and request/response schema. NVIDIA Assets, asynchronous polling, five native Maxine/Riva gRPC services, and media/binary/JSON artifact saving are built in. Account errors never remove models, and choosing a Special task never changes the ongoing agent. Nemotron 3.5 Lightning retains its documented on/off thinking field; unknown models inherit no fabricated effort. Generic OpenAI-compatible endpoints can store an optional dedicated key, while anonymous endpoints remain valid.</p>
200
202
  </article>
201
203
  <article>
202
204
  <h3>Portable shell deadlines</h3>
@@ -207,7 +209,7 @@ ur config set base_url nvidia-nim https://integrate.api.nvidia.com/v1
207
209
  <article>
208
210
  <h3>Tool images across providers</h3>
209
211
  <pre><code>Computer screenshot → tool result → vision model</code></pre>
210
- <p>Every UR-native provider preserves image-bearing tool output in its valid wire shape. OpenRouter, NVIDIA NIM, and other Chat-Completions backends keep the tool result textual and send the image in the next multimodal user turn; Gemini, OpenAI Responses, Anthropic, and Ollama use their native rich forms. Vision still depends on the selected model.</p>
212
+ <p>Every UR-native provider preserves image-bearing tool output in its valid wire shape. OpenRouter, NVIDIA Agentic, and other Chat-Completions backends keep the tool result textual and send the image in the next multimodal user turn; Gemini, OpenAI Responses, Anthropic, and Ollama use their native rich forms. Vision still depends on the selected model.</p>
211
213
  </article>
212
214
  <article>
213
215
  <h3>Status bar and updates</h3>