Development Setup#
This section collects the setup steps needed before building, testing, or contributing changes.
Package Installation#
If you are consuming NeMo Flow rather than developing this repository, install the published package for your language:
Rust:
cargo add nemo-flowPython:
uv add nemo-floworpip install nemo-flowNode.js:
npm install nemo-flow-node
Go, WebAssembly, 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
uvjustGo 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-node
Validate 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/wasm
Branch Naming#
Use these prefixes:
feat/fix/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 fmtcargo clippy -- -D warningscargo deny check
Python#
Use these Python commands and conventions when changing the wrapper package, tests, or docs tooling.
Ruff linting
Ruff formatting
tytype 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.