Skip to main content
Thanks for considering contributing to NVIDIA Isaac GR00T! This guide explains the various ways you can contribute to this project and how to get started.

Bug reports and feature requests

Reporting bugs

Before creating a bug report:
  1. Search existing issues: Do a quick search to see if your issue has already been reported
  2. Comment on existing issues: If your issue exists, add any additional information as a comment
If you’ve confirmed it’s a new issue:
  1. Open a new GitHub issue
  2. Include a clear title and description
  3. Provide:
    • Steps to reproduce the error
    • Expected behavior vs actual behavior
    • Code samples or test cases demonstrating the issue
    • Error messages and stack traces
    • Environment details (CUDA version, GPU model, OS, etc.)
The more information you provide, the easier it is for maintainers to reproduce and fix the issue.

Suggesting features

Before creating a feature request:
  1. Clarify your idea: Make sure you have a clear vision of the enhancement
  2. Check documentation: Verify the feature doesn’t already exist
  3. Search existing issues: Do a quick search to avoid duplicates
When creating your feature request:
  1. Provide a clear title and description
  2. Explain the use case: Why would this enhancement be useful?
  3. Show examples: Highlight similar features in other libraries if applicable
  4. Include code examples: Demonstrate how the feature would be used

Making a pull request

Follow these guidelines when contributing code to help us review your pull request quickly.

Initial setup (one-time)

1

Fork the repository

Fork the Isaac GR00T repository on GitHub.
2

Clone your fork

Clone your fork locally:
3

Add upstream remote

Add the main repository as an upstream remote:
Verify your remotes:
You should see:
4

Install in editable mode

Create a development environment and install GR00T in editable mode:
The -e flag creates a symbolic link from your virtual environment to your local source code, so changes are immediately reflected.

Keeping your fork up-to-date

Once you’ve added an upstream remote, keeping your fork synchronized is easy:

Creating a branch for your changes

Committing directly to the main branch of your fork is not recommended. Working on a separate branch for each contribution keeps your fork cleaner.
Create a new branch:

Testing your changes

Before opening a pull request, run the following checks locally to speed up the review process.

Code formatting and linting

GR00T uses ruff for code formatting and linting.
Many IDEs support ruff as a plugin, allowing automatic formatting on save. For example, black.vim provides this functionality in Vim.
Run ruff from the command line:

Running tests

We strive to maintain high test coverage. Most contributions should include additions to the unit tests. Run tests with pytest:
Example: If you’ve fixed a bug in gr00t/policy/policy.py, run:

Opening a pull request

After all checks have passed:
  1. Open a new GitHub pull request
  2. Provide a clear description of:
    • The problem being solved
    • Your solution approach
    • Links to related issues
  3. Reference any relevant issues (e.g., “Fixes #123”)
We look forward to reviewing your PR! Please be patient as maintainers review contributions.

Developer Certificate of Origin

By making a contribution to this project, you certify that:

Code style guidelines

Python code formatting

  • Use ruff format for consistent formatting
  • Use ruff check --fix for linting
  • Follow PEP 8 guidelines
  • Maximum line length: 100 characters (enforced by ruff)

Documentation

  • Write clear docstrings for all public functions and classes
  • Use Google-style docstring format
  • Update relevant documentation when changing functionality

Commit messages

  • Use clear, descriptive commit messages
  • Start with a verb in present tense (e.g., “Add”, “Fix”, “Update”)
  • Reference issue numbers when applicable (e.g., “Fix #123: …”)
Example:

Testing guidelines

Writing tests

  • Place tests in tests/ directory matching the source structure
  • Name test files with test_ prefix (e.g., test_policy.py)
  • Use descriptive test function names (e.g., test_get_action_with_valid_observation)
  • Include both positive and negative test cases
  • Test edge cases and error conditions

Test coverage

  • Aim for high test coverage of new code
  • Run tests locally before submitting PR
  • CI will run full test suite on all supported platforms

Continuous Integration

All pull requests run through our CI pipeline on GitHub Actions, which checks:
  • Code formatting: ruff format --check
  • Linting: ruff check
  • Unit tests: pytest
  • Type checking: mypy (if configured)
Your PR must pass all CI checks before it can be merged.

Getting help

If you need help with your contribution:
  • Ask questions in your pull request
  • Comment on related issues
  • Check existing documentation and examples
  • Review similar merged pull requests for guidance

License

By contributing to Isaac GR00T, you agree that your contributions will be licensed under the Apache License 2.0.

Thank you

Thank you for contributing to NVIDIA Isaac GR00T! Your contributions help advance the state of robotics research and make foundation models more accessible to the community.