NVIDIA-NeMo / NVIDIA-NeMo/Gym

Add component versions, code identity, and compatibility metadata

Open
#2,001 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Environment Discoverability
Dominant language
Python
Stars
1.2k
Forks
349
Avg merge
1d 21h
Merged PRs (30d)
318

Description

Problem

Gym can discover agent, model, and resources-server components, but the registry entries do not describe the component version, the code being executed, or the interfaces the component requires and provides.

Without that information, discovery and validation cannot determine whether a selected set of components is compatible. Missing information must not be interpreted as compatibility.

Proposed change

Add one shared component-metadata model with these fields:

  • version: the component-owned version, when known;
  • code_identity: a structured source, revision, or digest that can identify the implementation used by the component;
  • requires: capabilities the component expects from the rest of the resolved workload;
  • provides: capabilities the component makes available to the rest of the resolved workload.

The initial capability dimensions must cover:

  • model modality;
  • agent or harness interface;
  • sandbox capability;
  • tool protocol;
  • session model.

Extend the existing agent, model, and resources-server registry entries to expose this shared metadata. Do not create another registry or a second discovery path. A component must define the data once, and registry, inspection, and validation callers must receive the same values.

Add initial metadata for the components used by the first manifest-backed workloads, including simple_agent, example_single_tool_call, code_gen, mcqa, openai_model, and vllm_model. A runtime-selected policy_model without a concrete model implementation must remain unknown.

Migration behavior

  • Existing components without metadata remain discoverable.
  • Missing version, code_identity, requires, or provides values are represented as unknown.
  • Unknown values must not be converted into implicit compatibility claims.
  • Human-readable and JSON inspection must expose the same metadata.

Out of scope

  • Enforcing compatibility during validation.
  • Deciding which workload components may be replaced.
  • Replacing the existing configuration or registry systems.

Acceptance criteria

  • Agent, model, and resources-server registry entries expose the shared metadata fields.
  • A component defines its metadata in one authoritative place.
  • Registry, inspection, and validation consumers observe the same values.
  • The initial capability dimensions are represented without hard-coding a closed list of future capability values.
  • The components used by the first manifest-backed workloads include metadata.
  • Components without metadata report unknown values and remain usable during migration.
  • Human-readable and JSON output agree.

Related work

  • #1520
  • #1582
  • #1583
  • #2094

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the existing agent, model, and resources-server registry entries, then follow their discovery, inspection, and validation consumers. Define the shared metadata once, add initial values for the named manifest-backed components, and verify that human-readable and JSON inspection agree while components without metadata remain discoverable with unknown values.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend-api-design
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.