This section collects the setup steps needed before building, testing, or contributing changes.
If you are consuming NeMo Flow rather than developing this repository, install the published package for your language. Use Installation for package-manager commands covering the CLI, Python, Node.js, Rust, and supported integrations.
Go, WebAssembly, and the raw FFI surface are currently experimental and remain source-first.
Install these tools before you start:
- Rust stable
- Python 3.11 or newer
uvjust- Go 1.21 or newer
- Node.js LTS
wasm-packcargo-deny
If you touch Go, WebAssembly, or the raw FFI surface, build and validate those bindings from source in the same branch.
Clone the repository and build the workspace:
git clone <repo-url> && cd NeMo-Flow
uv sync
cargo install just --locked
uv run pre-commit install
just build-rust
just build-python
just build-nodeValidate the source builds for the experimental bindings when you touch them:
cd go/nemo_flow
CGO_LDFLAGS="-L../../target/release" LD_LIBRARY_PATH="${LD_LIBRARY_PATH:+${LD_LIBRARY_PATH}:}../../target/release" go test -v ./...
cd ../..
wasm-pack test --node crates/wasmUse these prefixes:
feat/fix/docs/test/refactor/
These style requirements keep contributions consistent across Rust, Python, Go, and general repository files.
Use these Rust commands and conventions when changing the core runtime or Rust-facing API surface.
cargo fmtcargo clippy -- -D warningscargo deny check
Use these Python commands and conventions when changing the wrapper package, tests, or docs tooling.
- Ruff linting
- Ruff formatting
tytype checking
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.