Open-source project
NVIDIA/elements avatar
NVIDIA/elements

NVIDIA Elements: a design system and agent harness for AI factory, robotics and AV interfaces

NVIDIA Design System and UI Agent Harness for AI/ML Factories, Robotics, and Autonomous Vehicles

88 stars19 forksTypeScriptApache-2.0

At a glance

What is it?
NVIDIA Elements is an Apache-2.0 TypeScript design system whose Web Components ship with a CLI and MCP server so coding assistants can read component APIs and tokens. It suits teams building operational consoles for AI/ML, robotics and autonomous vehicles, and it expects a mise and pnpm toolchain.
Who is it for?
Adopt NVIDIA Elements if you are building operational interfaces for AI/ML factories, robotics consoles or autonomous vehicle tooling and you want Web Components that survive a framework change, plus a CLI and MCP surface your coding assistant can query. Do not adopt it if you need a general marketing-site component kit or a design system with no Node toolchain: the repository is a pnpm workspace built through mise, and the README's setup path assumes you can install both.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 28, 2026, and from our analysis. They are not legal advice.

Editorial analysis

The problem NVIDIA Elements addresses in AI infrastructure UIs

Operational software for AI/ML factories, robotics consoles and autonomous vehicle tools tends to be built by people whose main job is not front-end work. A training dashboard, a fleet telemetry view and a simulation control panel all need the same primitives: dense tables, status indicators, forms, code and log viewers, and a theme that stays legible in a control room. Each team rebuilds them, and the results drift.

NVIDIA Elements is the company's attempt to consolidate that surface. The README describes it as a "Design System and UI Agent Harness for AI/ML Factories, Robotics, and Autonomous Vehicles", and the repository is organised as a top-level repository with individual project directories, each with its own package.json and commands. The audience is narrow on purpose: engineers shipping internal or product UI for accelerated computing workloads, not teams building a marketing site.

The second audience is the AI assistant itself. The README lists "Agent-ready tooling" first among the project's properties, stating that a CLI and MCP expose component APIs, tokens, examples, imports, validation and setup to terminals and AI assistants. That is an unusual thing to put at the top of a design system README, and it tells you where the maintainers think the work is going.

How the repository is laid out and how the framework-agnostic claim works

The mechanism behind the framework-agnostic claim is Web Components. The README states that the components run in React, Angular, Vue, Svelte, Lit, plain HTML, server-rendered templates and mixed stacks. Nothing in the component layer is tied to a single rendering library, so a team can adopt the library in one application and keep the rest of a mixed stack untouched.

The repository splits into projects rather than a single package. The README names /projects/starters (standardized starter apps), /projects/core (the curated UI library maintained by the Elements team), /projects/themes (supported themes) and /projects/styles (CSS utilities for layout and typography). The root package.json shows the workspace wiring: the devDependencies reference @nvidia-elements/code, @nvidia-elements/core, @nvidia-elements/styles and @nvidia-elements/themes as workspace packages, so the root is a coordination layer, not a publishable library. The workspace is private and versioned 0.0.0.

Releases are per package, not per repository. The recent release list shows @nvidia-elements/core at v2.6.0 and v2.5.3, and @nvidia-elements/code at v2.0.4, all dated 2026-08-28. Core and code therefore version independently, which matters when you pin dependencies: upgrading the code package does not drag the component library with it.

Two more pieces of the harness are visible in the root listing. There is a /projects/lint scope in the commit conventions and a lint package, and the README describes "Skills and lint" as guiding authoring best practices, common UI patterns and automated static analysis. There is also a DESIGN.md at the repository root, and the README links an "Official NVIDIA Elements DESIGN.md" page. That file is the contract the lint rules and the agent tooling are presumably checking against.

Installing NVIDIA Elements and running a first build

The README gives one setup path, and it runs at the root of the repository. Dependencies are installed through mise, the tool version manager, and the README's first command fetches it from mise.run. After that, mise run setup installs the repository dependencies and runs the full build. Note the engines field in the root package.json: Node 26.7.0, with pnpm 11.23.0 as the declared package manager.

shell
# install dependencies https://mise.en.dev/getting-started.html
curl https://mise.run | sh
~/.local/bin/mise run setup

The README also warns that the CI pipeline builds Go starters, so Go 1.26.x has to be installed before running the full local CI pipeline. That is a real prerequisite, not an optional extra, if you intend to run everything.

Once setup finishes, build and test all projects from the root with the ci script. The README shows it invoked through mise exec, which is the pattern to use when you switch between repositories and do not want mise activating tools in your shell permanently.

shell
mise exec -- pnpm run ci

If the toolchain looks stale, mise run install reinstalls the Node.js, pnpm, Vale, Go, Git LFS and package versions from mise.toml and pnpm-lock.yaml. For work inside a single project, the README lists the common scripts: dev for watch mode, build, test, test:lighthouse, test:visual for Playwright visual regression, and test:axe for accessibility. It explicitly says the available scripts vary by project and to check the project's package.json first, which is the honest answer given the repository layout.

Contributions have their own gate. The README asks for a new issue or feature request before a branch or pull request, uses topic/ prefixed branch names, and enforces commit formatting through Commit Lint and Semantic Release. Commit messages decide the release, so a fix(core) prefix is not cosmetic.

shell
git checkout -b topic/bug-fix
git commit -a -s -m "fix(core): disable multi-select"

Where NVIDIA Elements is the wrong tool

The repository is a monorepo for a component library, and it behaves like one. There is no single npm install line in the README that drops a finished component into an existing application; the documented path clones the workspace and builds it. If you want to consume a published package, the README does not walk you through that, and the truncated root package.json does not show the dependency list you would need. That is a gap you would have to close by reading the individual project's package.json.

The toolchain is opinionated. mise, pnpm 11.23.0, Node 26.7.0, Go 1.26.x for the CI pipeline, Vale for prose linting, and Git LFS all appear in the setup and troubleshooting text. A team standardised on npm or Yarn, or pinned to an older Node LTS, will spend its first day on tooling rather than on UI. The README's own troubleshooting note anticipates this: developers coming from another repository "may need to refresh the repository toolchain with mise".

Scope is the other boundary. The description names AI/ML factories, robotics and autonomous vehicles. Nothing in the README promises a general-purpose component kit for content sites, e-commerce or consumer mobile. If your product is a blog or a storefront, the design language and the component set are aimed somewhere else.

Finally, the README is a contributor document more than a consumer document. It explains how to set up, build, branch and commit. It does not document rollback, deprecation policy or a migration path between core major versions, and the release notes are not included here. Anyone pinning @nvidia-elements/core should check the changelog for the version they adopt rather than assume the API is frozen across majors.

How NVIDIA Elements differs from Material, Carbon or Spectrum

The obvious comparison is to established enterprise design systems: Material Design from Google, Carbon from IBM, Spectrum from Adobe. The difference in approach is not the component count. It is that those systems are primarily specifications plus implementations for a given framework family, and their documentation is written for application developers.

NVIDIA Elements makes the agent a first-class consumer. The README lists a CLI and an MCP server as part of the product, exposing component APIs, tokens, examples, imports, validation and setup. The repository root carries .agents/, .claude/, .codex/ and .cursor/ directories alongside .mcp.json and AGENTS.md and CLAUDE.md. Those are configuration surfaces for coding assistants, not for browsers. A team whose workflow is an AI assistant writing component code gets a machine-readable description of the library; a team using Material gets a documentation site and a human reader.

The second difference is the framework stance. Carbon is React-first, and Spectrum ships React and Web Components implementations with the React one as the common path. Elements commits to Web Components as the delivery mechanism, which is why the README can list React, Angular, Vue, Svelte, Lit, plain HTML and server-rendered templates in one sentence. That portability costs you framework-native ergonomics: no React context, no Angular dependency injection, no Svelte stores inside the components.

The third is domain fit. Material, Carbon and Spectrum are horizontal. Elements is vertical, aimed at operational consoles for accelerated computing, robotics and AV tooling, with themes and styles packaged as separate workspace projects so a product can adopt the look without the full component set.

Maintenance, releases and the Apache-2.0 licence

The repository is not archived, and the last push was on 2026-08-28. The most recent releases landed the same day: @nvidia-elements/core v2.6.0, @nvidia-elements/core v2.5.3 and @nvidia-elements/code v2.0.4, all dated 2026-08-28. Two core releases within a day of each other suggests a patch followed a minor, which is normal for a Semantic Release pipeline driven by commit messages.

That pipeline is the upgrade cost you should plan for. The README states that Semantic Release manages package changes and that commit messages determine the release on merge. Version numbers are therefore a function of commit types, and the generated changelog notes come from the same messages. A team consuming these packages gets releases whenever a fix or feat lands on main, not on a quarterly cadence. Pinning exact versions and reading the generated notes is the practical response.

The licence is Apache-2.0, and the repository carries both a LICENSE and a NOTICE.md at the root. Apache-2.0 permits commercial use and modification and requires that you retain the licence and notice files and state significant changes. The NOTICE.md file exists for a reason, and redistributing the components inside a product means carrying that attribution. This is not legal advice; if you are embedding the library in a shipped product, have your own counsel read LICENSE and NOTICE.md rather than treating this paragraph as clearance.

One maintenance caveat worth stating plainly: the README does not describe a support window or a deprecation schedule for @nvidia-elements/core. With core at v2.x and code at v2.x, major-version migrations are a real event you should budget for, and the repository does not tell you how much notice you will get.

Editorial conclusion

Adopt NVIDIA Elements if you are building operational interfaces for AI/ML factories, robotics consoles or autonomous vehicle tooling and you want Web Components that survive a framework change, plus a CLI and MCP surface your coding assistant can query. Do not adopt it if you need a general marketing-site component kit or a design system with no Node toolchain: the repository is a pnpm workspace built through mise, and the README's setup path assumes you can install both. Before committing, verify the licence and NOTICE.md obligations for redistribution, and confirm the component set in /projects/core actually covers the controls your screens need, because the README documents the repository layout rather than a component inventory.

Frequently asked questions

What is NVIDIA Elements?

It is NVIDIA's design system and UI Agent Harness for AI/ML factories, robotics and autonomous vehicles, built on Web Components in TypeScript under the Apache-2.0 licence. The README lists agent-ready tooling through a CLI and MCP, framework-agnostic components, and stable API contracts enforced by skills and lint.

How do I install NVIDIA Elements?

The README's setup runs at the root of the repository: install mise with the curl command from mise.run, then run mise run setup to install dependencies and run the full build. Go 1.26.x is required before running the full local CI pipeline, because the CI builds Go starters.

How do I use NVIDIA Elements in a React, Vue or Angular app?

The components are Web Components, and the README states they run in React, Angular, Vue, Svelte, Lit, plain HTML, server-rendered templates and mixed stacks. The README does not document per-framework wrapper packages, so check the individual project's package.json for what is published.

Which projects are inside the NVIDIA Elements repository?

The README names /projects/starters for standardized starter apps, /projects/core for the curated UI library, /projects/themes for supported themes and /projects/styles for CSS utilities covering layout and typography. The commit scopes in the README also reference cli, code, create, forms, internals, lint, markdown, media, monaco and pages.

How does NVIDIA Elements decide version numbers and releases?

The repository uses Semantic Release, and the README states that commit messages determine the release on merge, with Commit Lint enforcing the format. Valid types are fix, feat and chore, and the scopes map to project directories such as core, code and cli.

Can I contribute a component to NVIDIA Elements?

The README asks you to open a new issue or feature request before creating a branch or pull request so the team can check alignment and avoid duplicate work. Branches use a topic/ prefix, and after changes you run mise exec -- pnpm run ci at the root before opening the PR.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/nvidia-elements.svg)](https://hysenlabs.com/projects/nvidia-elements)