← NVIDIA BioNeMo Agent ToolkitCONTENT HISTORY

Update to NVIDIA BioNeMo Agent Toolkit

Snapshot Sep 30, 2026 · 23:14 UTC · version 0.1.0

Collection source: not recorded for this historical snapshot.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "name": "proteinmpnn-nim",
  "description": "Run ProteinMPNN inverse folding via NVIDIA NIM to design protein sequences for a target backbone. Use for ProteinMPNN, inverse folding, sequence design, backbone redesign, fixed chains/residues, omit_AAs, sampling temperature, soluble model, hosted NVIDIA API, local Docker, PDB input, and multi-FASTA output.",
  "included_files": [
    {
      "relative_path": "references/api.md",
      "size_in_bytes": 4226
    },
    {
      "relative_path": "references/examples.md",
      "size_in_bytes": 821
    },
    {
      "relative_path": "references/parameters.md",
      "size_in_bytes": 1158
    },
    {
      "relative_path": "references/science.md",
      "size_in_bytes": 1125
    },
    {
      "relative_path": "references/validation.md",
      "size_in_bytes": 927
    }
  ],
  "skill_md_contents": "---\nname: proteinmpnn-nim\ndescription: >\n  Run ProteinMPNN inverse folding via NVIDIA NIM to design protein sequences for a target backbone. Use for ProteinMPNN, inverse folding, sequence design, backbone redesign, fixed chains/residues, omit_AAs, sampling temperature, soluble model, hosted NVIDIA API, local Docker, PDB input, and multi-FASTA output.\nlicense: Apache-2.0 AND CC-BY-4.0\ncompatibility: \"requests>=2.28\"\nallowed-tools: Bash, Read, Write, AskUserQuestion\n---\n\n# ProteinMPNN NIM\n\nDesign protein sequences for a supplied backbone PDB. Use this `SKILL.md` for\nfirst-pass hosted/local usage; load supplemental files only when needed:\n\n- `references/api.md`: exact endpoints, schemas, Docker flags, response fields.\n- `references/science.md`: inverse-folding uses, limits, and validation.\n- `references/parameters.md`: design controls, fixed positions, sampling.\n- `references/validation.md`: FASTA, score, and structure checks.\n- `references/examples.md`: compact hosted/local request patterns.\n\n## Choose Mode\n\nAsk only when context is unclear:\n\n> Hosted NVIDIA API or local Docker NIM?\n\n- Hosted: `https://health.api.nvidia.com/v1/biology/ipd/proteinmpnn/predict`\n- Local: `http://localhost:8000/biology/ipd/proteinmpnn/predict`\n\nLocal inference paths do not include `/v1/`. Hosted requests use `Authorization: Bearer $NGC_API_KEY`. Supported local Docker\nstartup uses `NGC_API_KEY` (or `NVIDIA_API_KEY` via the preflight) for\nregistry login, entitlement checks, and first-run model downloads; pass it\ninto the container with `-e NGC_API_KEY`. Local inference requests use no\nauth header after readiness. Warm-cache key-free startup varies by\nimage/version and should not be assumed.\n\n## Local Docker\n\nFor local setup answers, copy the preflight below exactly before `docker login`,\n`docker run`, readiness, and the no-auth local request. Do not answer with only\na localhost Python request. This NIM's cache mount is unique:\n`/home/nvs/.cache/nim`, not `/opt/nim/.cache`.\n\n```bash\nset -a\n[ -f .env ] && . ./.env\nset +a\n\nif [ -z \"${NGC_API_KEY:-}\" ] && [ -n \"${NVIDIA_API_KEY:-}\" ]; then\n  export NGC_API_KEY=\"$NVIDIA_API_KEY\"\nfi\n: \"${NGC_API_KEY:?Set NGC_API_KEY or NVIDIA_API_KEY}\"\n: \"${LOCAL_NIM_CACHE:?Set LOCAL_NIM_CACHE}\"\n\necho \"$NGC_API_KEY\" | docker login nvcr.io --username '$oauthtoken' --password-stdin\n\nexport NIM_TEST_GPU=\"${NIM_TEST_GPU:-0}\"\nmkdir -p \"${LOCAL_NIM_CACHE}\"\nchmod 777 \"${LOCAL_NIM_CACHE}\"\n\ndocker run -it \\\n  --runtime=nvidia \\\n  --gpus \"device=${NIM_TEST_GPU}\" \\\n  -e NGC_API_KEY \\\n  -v \"${LOCAL_NIM_CACHE}:/home/nvs/.cache/nim\" \\\n  -p 8000:8000 \\\n  nvcr.io/nim/ipd/proteinmpnn:latest\n```\n\nReadiness:\n\n```bash\nuntil curl -sf http://localhost:8000/v1/health/ready; do sleep 5; done\n```\n\n## Request Pattern\n\nRead PDB content inline; do not send only a file path.\n\n```python\nimport os\nfrom pathlib import Path\nimport requests\n\nHOSTED = True\npdb_content = Path(\"1R42.pdb\").read_text()\nurl = (\n    \"https://health.api.nvidia.com/v1/biology/ipd/proteinmpnn/predict\"\n    if HOSTED else \"http://localhost:8000/biology/ipd/proteinmpnn/predict\"\n)\nheaders = {\"Content-Type\": \"application/json\"}\nif HOSTED:\n    headers[\"Authorization\"] = f\"Bearer {os.environ['NGC_API_KEY']}\"\n\npayload = {\n    \"input_pdb\": pdb_content,\n    \"num_seq_per_target\": 10,\n    \"sampling_temp\": [0.1],\n    \"use_soluble_model\": False,\n    \"ca_only\": False,\n}\nresponse = requests.post(url, headers=headers, json=payload, timeout=300)\nresponse.raise_for_status()\nresult = response.json()\n```\n\nCommon controls:\n\n- Redesign only chain A: `\"input_pdb_chains\": [\"A\"]`.\n- Exclude amino acids: `\"omit_AAs\": [\"C\"]` or `\"omit_AAs\": [\"M\"]`.\n- Diversity: `\"sampling_temp\": [0.1, 0.3, 0.5]` (always a list).\n- Solubility bias: `\"use_soluble_model\": True`.\n- Candidate count: `num_seq_per_target` is 1-100.\n\n## Save And Report Output\n\n```python\nmfasta = result[\"mfasta\"]\nPath(\"designed_sequences.fa\").write_text(mfasta)\n\n# Scores correspond to designed sequences. The mfasta may include a native/WT\n# row; do not pair that row with generated-sequence scores.\nheaders = [line for line in mfasta.splitlines() if line.startswith(\">\")]\ndesigned_headers = [\n    h for h in headers if \"native\" not in h.lower() and \"wt\" not in h.lower()\n]\nfor header, score in zip(designed_headers, result.get(\"scores\", [])):\n    print(f\"{header} score: {score:.4f}\")\n```\n\nValidate promising designs by predicting structures with Boltz2 or OpenFold3\nand comparing them to the target backbone. For FASTA/score sanity checks, read\n`references/validation.md`.\n\n## Limits And Troubleshooting\n\n- Minimum GPU VRAM: about 3 GB.\n- `sampling_temp` must be a list, even for one value.\n- Empty `mfasta`: check non-empty `input_pdb` and `num_seq_per_target >= 1`.\n- PDB parse errors: use valid PDB ATOM records.\n- Local URL 404 usually means an accidental `/v1/` prefix.\n- Cache mount error: use `/home/nvs/.cache/nim` inside the container.\n"
}

SHA-256: 2156c7291e7c8c039613f150f9f63779f34c102b1a8d828f1db24e7296cf17f3