RFDiffusion NIM
Design protein backbone PDBs for de novo proteins, motif scaffolds, and binders. Use this guide for first-pass hosted/local usage; load supplemental files only when needed:
references/api.md: exact endpoints, schemas, Docker flags, response fields.references/science.md: design modes, strengths, limits, and handoffs.references/parameters.md: contigs, hotspots, steps, and seeds.references/validation.md: PDB, contig, and artifact sanity checks.references/examples.md: compact hosted/local request patterns.
Choose Mode
Ask only when context is unclear:
Hosted NVIDIA API or local Docker NIM?
- Hosted:
https://health.api.nvidia.com/v1/biology/ipd/rfdiffusion/generate - Local:
http://localhost:8000/biology/ipd/rfdiffusion/generate
Local inference paths do not include /v1/. Hosted requests use Authorization: Bearer $NGC_API_KEY. Supported local Docker
startup uses NGC_API_KEY (or NVIDIA_API_KEY via the preflight) for
registry login, entitlement checks, and first-run model downloads; pass it
into the container with -e NGC_API_KEY. Local inference requests use no
auth header after readiness. Warm-cache key-free startup varies by
image/version and should not be assumed.
Local Docker
For local setup answers, copy the preflight below exactly before docker login,
docker run, readiness, and the no-auth local request. Do not replace it with a
simple : "${NGC_API_KEY:?Set NGC_API_KEY}" check, do not invent a cache
default, and do not drop the NVIDIA_API_KEY fallback. Default setup is single
GPU device=0.
bashset -a [ -f .env ] && . ./.env set +a if [ -z "${NGC_API_KEY:-}" ] && [ -n "${NVIDIA_API_KEY:-}" ]; then export NGC_API_KEY="$NVIDIA_API_KEY" fi : "${NGC_API_KEY:?Set NGC_API_KEY or NVIDIA_API_KEY}" : "${LOCAL_NIM_CACHE:?Set LOCAL_NIM_CACHE}" echo "$NGC_API_KEY" | docker login nvcr.io --username '$oauthtoken' --password-stdin mkdir -p "${LOCAL_NIM_CACHE}" chmod 755 "${LOCAL_NIM_CACHE}" docker run -it \ --runtime=nvidia \ --gpus "device=0" \ -e NGC_API_KEY \ -v "${LOCAL_NIM_CACHE}:/opt/nim/.cache" \ -p 8000:8000 \ nvcr.io/nim/ipd/rfdiffusion:2
Readiness:
bashuntil curl -sf http://localhost:8000/v1/health/ready; do sleep 5; done
Contigs DSL
contigs defines what to keep and what to generate. For the full pattern
syntax (fixed length, ranges, kept chain segments, chain breaks), see
references/api.md under Contigs Language Reference.
Design modes:
- De novo:
contigs="80-120"; live hosted validation requires a non-emptyinput_pdborinput_pdb_asset, so inline requests should include the dummy PDB below. - Motif scaffolding: read
target.pdb, passinput_pdb, use a contig like"A25-35/0 50-80". - Binder design: pass target
input_pdb, contig with target and binder segment, andhotspot_res=["A50", "A51", ...]in ChainResidue string format.
pythonDUMMY_PDB = ( "CRYST1 1.000 1.000 1.000 90.00 90.00 90.00 P 1 1\n" "ATOM 1 CA ALA A 1 0.000 0.000 0.000 1.00 0.00 C\n" "END\n" )
Request Pattern
pythonimport os from pathlib import Path import requests HOSTED = True url = ( "https://health.api.nvidia.com/v1/biology/ipd/rfdiffusion/generate" if HOSTED else "http://localhost:8000/biology/ipd/rfdiffusion/generate" ) headers = {"Content-Type": "application/json"} if HOSTED: headers["Authorization"] = f"Bearer {os.getenv('NGC_API_KEY')}" payload = { "input_pdb": DUMMY_PDB, "contigs": "80-120", "diffusion_steps": 50, } response = requests.post(url, headers=headers, json=payload, timeout=300) response.raise_for_status() result = response.json() Path("designed_backbone.pdb").write_text(result["output_pdb"])
Motif scaffold:
pythonpayload = { "input_pdb": Path("target.pdb").read_text(), "contigs": "A25-35/0 50-80", "diffusion_steps": 50, }
Binder design:
pythonpayload = { "input_pdb": Path("target.pdb").read_text(), "contigs": "A1-100/0 50-100", "hotspot_res": ["A50", "A51", "A52", "A53", "A54"], "diffusion_steps": 50, }
Save And Interpret Output
Save result["output_pdb"] as a PDB artifact and report elapsed_ms when
present. Generated backbones are not final proteins; feed them to ProteinMPNN
for sequence design, then validate sequences/structures with Boltz2 or
OpenFold3. For PDB and contig checks, read references/validation.md.
Limits And Troubleshooting
diffusion_steps: 1-50; 50 is maximum quality, fewer is faster.- Single GPU; minimum GPU VRAM is about 12 GB.
hotspot_resuses strings like"A50", not tuples.422usually means chain IDs incontigs/hotspot_resdo not matchinput_pdb, a malformed contig, or omittedinput_pdbfor hosted de novo.- Local URL 404 usually means an accidental
/v1/prefix.


