Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
2553b44
FABRIC-71: experiment with typed SDK-backed CLI
AnuradhaKaruppiah Jul 16, 2026
cf654ad
Make the SDK-backed CLI a maintained experiment surface
AnuradhaKaruppiah Jul 17, 2026
5fe0f1d
Merge remote-tracking branch 'upstream/main' into ak-cli-experiments
AnuradhaKaruppiah Jul 17, 2026
d785f4b
Merge remote-tracking branch 'upstream/main' into ak-cli-experiments
AnuradhaKaruppiah Jul 17, 2026
e760f2b
fix: address CLI migration review feedback
AnuradhaKaruppiah Jul 17, 2026
15cbbda
docs: align quickstart and overview style
AnuradhaKaruppiah Jul 17, 2026
7df971e
docs: remove stale file configuration references
AnuradhaKaruppiah Jul 17, 2026
564c536
refactor CLI around typed core
AnuradhaKaruppiah Jul 17, 2026
8c97985
docs: move CLI guide under experimentation
AnuradhaKaruppiah Jul 17, 2026
fc440db
docs: track adapter metadata migration
AnuradhaKaruppiah Jul 19, 2026
9ac244a
docs: structure CLI experimentation workflows
AnuradhaKaruppiah Jul 19, 2026
0483efd
refactor: distribute the experimentation CLI separately
AnuradhaKaruppiah Jul 19, 2026
376d9aa
feat: allow preset model overrides
AnuradhaKaruppiah Jul 19, 2026
08e1650
feat: support NVIDIA models in Claude adapter
AnuradhaKaruppiah Jul 19, 2026
b593f82
feat: route CLI presets through NVIDIA inference
AnuradhaKaruppiah Jul 19, 2026
7a3aa0d
docs: clarify CLI examples and scaffolding
AnuradhaKaruppiah Jul 20, 2026
2baf671
Merge remote-tracking branch 'upstream/main' into ak-cli-experiments
AnuradhaKaruppiah Jul 20, 2026
8353ace
fix: address CLI review findings
AnuradhaKaruppiah Jul 20, 2026
787b602
fix: address follow-up CLI review findings
AnuradhaKaruppiah Jul 20, 2026
d213097
fix: address CLI scaffold review feedback
AnuradhaKaruppiah Jul 20, 2026
00f8fd1
test: allow fresh scaffold dependency resolution
AnuradhaKaruppiah Jul 20, 2026
982b069
fix: keep Rust scaffolds independent of checkout
AnuradhaKaruppiah Jul 20, 2026
01be3ad
fix: keep generated Rust variants warning-free
AnuradhaKaruppiah Jul 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .agents/skills/review-doc-style/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ and NVIDIA NeMo Fabric repo conventions.
- Keep docs aligned with current NeMo Fabric behavior, repo layout, and entry points
- Apply NVIDIA technical-writing guidance where it improves clarity and consistency without watering down technical precision
- The full product name is "NVIDIA NeMo Fabric".
- The first usage of the name (typically in the title and H1 tag) should use the full product name.
- The first usage of the name (typically in the title and H1 tag) should use the full product name.
- All other uses of the name can use the shortened form "NeMo Fabric".
- The only acceptable usage of "fabric" by itself is when referring to the CLI tool, and these references must be surrounded by back-ticks.

Expand Down
6,446 changes: 872 additions & 5,574 deletions ATTRIBUTIONS-Rust.md

Large diffs are not rendered by default.

114 changes: 114 additions & 0 deletions CLI.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
<!--
SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
SPDX-License-Identifier: Apache-2.0
-->

# NeMo Fabric Experimentation CLI

`nemo-fabric` is a maintained developer experimentation interface over the
NeMo Fabric SDK. It provides a fast way to try harnesses, run examples, inspect
plans, diagnose integrations, and execute user-owned Python configurations.
The SDK remains the canonical configuration and execution contract.

The CLI is intentionally an experimentation surface. Its command grammar may
evolve as workflows mature; typed SDK applications should be used when API
stability or production integration is required.

## Intent

Keep the CLI as a thin SDK-backed runner:

- every run starts from a complete, typed `FabricConfig`;
- the CLI only selects where that config comes from;
- planning and execution go through the public Python SDK;
- `base_dir` only resolves relative resource paths; and
- Fabric does not load a persisted YAML, TOML, or JSON configuration.

Profiles, overlays, config discovery, and compatibility loaders are out of
scope. Fabric has not been released, so the CLI makes a clean break.

## Supported Inputs

### 1. Preset

```bash
nemo-fabric run --preset hermes --input "Say hello"
```

A small, complete config maintained with the CLI. Useful for smoke tests and
quick harness probes. Presets do not inherit or merge.

### 2. Example

```bash
nemo-fabric run \
--example examples.code_review_agent \
--variant hermes \
--input "Review this workspace"
```

A runnable SDK example with complete variants. Examples are Python source and
assets that people can read, copy, and edit. A variant is a factory, not a
profile.

Copy the bundled example into an editable Python package with:

```bash
nemo-fabric example init examples.code_review_agent my_agent
```

### 3. User factory

```bash
nemo-fabric run \
--factory my_agent.config:build_config \
--base-dir . \
--input "Review this workspace"
```

The unrestricted customization path. The callable takes no arguments and
returns a complete `FabricConfig`.

The `--factory` name makes the executable Python contract explicit.

All three selectors feed the same commands:

```text
plan doctor run chat
```

## Designed For

- quick harness and model experiments;
- smoke tests and troubleshooting;
- comparing complete preset or example variants;
- copying and editing Python examples;
- invoking custom `FabricConfig` factories; and
- inspecting plans and diagnostics.

## Not Designed For

- production deployment or scheduling;
- persistent configuration or secrets management;
- profiles, inheritance, or configuration overlays;
- arbitrary CLI configuration mutation;
- evaluation orchestration or experiment tracking; or
- replacing direct SDK applications.

## Boundaries

- No `agent.yaml` or profile directories.
- No Fabric config loader for YAML, TOML, or JSON.
- No preset inheritance or core merge semantics.
- No implicit user/project/system config discovery.
- JSON request input is still valid; it describes an invocation, not an agent.
- Adapter-generated harness files remain valid implementation details.
- Private serialization across Python/Rust or Harbor process boundaries is not
a public authoring format.

## Design Bias

Start with the three explicit selectors. Keep presets tiny, make examples the
editable learning surface, and use Python factories for real customization.
Keep registration package-owned for now; consider plugin discovery only after
the workflows prove useful.
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ build wheels from a source checkout:

```bash
just wheels
uv pip install --find-links dist "nemo-fabric[runtime]"
uv pip install --find-links dist nemo-fabric
```

Adapters are distributed as optional extras. For example, install the Hermes adapter with:
Expand Down
Loading
Loading