> This page is for NeMo Relay, version v0.9.4.
> For other versions, use one of these documentation indexes:
> - Latest (v0.10.0) (default): https://docs.nvidia.com/nemo/relay/latest/llms.txt
> - dev: https://docs.nvidia.com/nemo/relay/dev/llms.txt
> - v0.10.0: https://docs.nvidia.com/nemo/relay/v0.10.0/llms.txt
> - v0.9.4: https://docs.nvidia.com/nemo/relay/v0.9.4/llms.txt
> - v0.8.4: https://docs.nvidia.com/nemo/relay/v0.8.4/llms.txt
> - v0.7.3: https://docs.nvidia.com/nemo/relay/v0.7.3/llms.txt
> - v0.6.0: https://docs.nvidia.com/nemo/relay/v0.6.0/llms.txt
> - v0.5.0: https://docs.nvidia.com/nemo/relay/v0.5.0/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/nemo/relay/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/nemo/relay/_mcp/server.

# Development Setup

This section collects the setup steps needed before building, testing, or contributing
changes.

## Package Installation

If you are consuming NeMo Relay rather than developing this repository, install
the published package for your language. Use
[Installation](/getting-started/installation) for package-manager commands
covering the CLI, Python, Node.js, Rust, and supported integrations.

Go and the raw FFI surface are currently experimental and remain
source-first.

## Source Development

Install these tools before you start:

* Rust stable
* Python 3.11 or newer
* `uv`
* `just`
* Go 1.21 or newer
* Node.js LTS
* `cargo-nextest` 0.9.133
* `cargo-deny`
* `cargo-about` 0.9.1

If you touch Go or the raw FFI surface, build and validate those
bindings from source in the same branch.

Clone the repository and build the workspace:

```bash
git clone <repo-url> && cd NeMo-Relay
uv sync
cargo install just --locked
cargo install cargo-nextest --version 0.9.133 --locked
cargo install cargo-about --version 0.9.1 --locked --features cli
uv run pre-commit install
just build-rust
just build-python
just build-node
```

Validate the source builds for the experimental bindings when you touch them:

```bash
cd go/nemo_relay
CGO_LDFLAGS="-L../../target/release" LD_LIBRARY_PATH="${LD_LIBRARY_PATH:+${LD_LIBRARY_PATH}:}../../target/release" go test -v ./...
cd ../..

```

## Branch Naming

Use these prefixes:

* `build/`
* `chore/`
* `ci/`
* `feat/`
* `fix/`
* `enh/`
* `perf/`
* `revert/`
* `skills/`
* `style/`
* `docs/`
* `test/`
* `refactor/`

## Code Style

These style requirements keep contributions consistent across Rust, Python, Go, and
general repository files.

### Rust

Use these Rust commands and conventions when changing the core runtime or Rust-facing
API surface.

* `cargo fmt`
* `cargo clippy -- -D warnings`
* `cargo deny check`

### Python

Use these Python commands and conventions when changing the wrapper package, tests, or
docs tooling.

* Ruff linting
* Ruff formatting
* `ty` type checking

### General

These general conventions apply across files and language surfaces.

* Follow binding-appropriate naming conventions.
* Keep SPDX headers intact.
* Preserve the shared lifecycle and middleware model across bindings.