[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-tao-run-on-brev":3,"mdc-inerb0-key":34,"related-repo-nvidia-tao-run-on-brev":2523,"related-org-nvidia-tao-run-on-brev":2627},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":32,"mdContent":33},"tao-run-on-brev","run TAO training on Brev GPU instances","Brev managed GPU instances with Docker support. Use when running TAO training, evaluation, or inference on Brev GPU instances, managing Brev deployments, or dispatching TAO jobs through the Brev CLI. Trigger phrases include \"run on Brev\", \"Brev GPU instance\", \"submit job to Brev\", \"Brev CLI deployment\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},"nvidia","NVIDIA","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fnvidia.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"Deep Learning","deep-learning","tag",{"name":17,"slug":18,"type":15},"CLI","cli",{"name":20,"slug":21,"type":15},"Deployment","deployment",{"name":9,"slug":8,"type":15},2473,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fskills","2026-07-14T05:30:37.866459","Apache-2.0",281,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":31},[],"AI agent skills published by NVIDIA","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fskills\u002Ftree\u002FHEAD\u002Fskills\u002Ftao-run-on-brev","---\nname: tao-run-on-brev\ndescription: Brev managed GPU instances with Docker support. Use when running TAO training, evaluation, or inference on\n  Brev GPU instances, managing Brev deployments, or dispatching TAO jobs through the Brev CLI. Trigger phrases include\n  \"run on Brev\", \"Brev GPU instance\", \"submit job to Brev\", \"Brev CLI deployment\".\nlicense: Apache-2.0\ncompatibility: Requires the brev CLI (https:\u002F\u002Fgithub.com\u002Fbrevdev\u002Fbrev-cli) and an active brev login.\nmetadata:\n  author: NVIDIA Corporation\n  version: \"0.1.0\"\nallowed-tools: Read Bash\ntags:\n- gpu\n- compute\n- instance-based\n- brev\n---\n\n# Brev\n\nNVIDIA Brev provides on-demand GPU instances across multiple cloud providers. Instances come pre-loaded with NVIDIA drivers, CUDA, Docker, and NVIDIA Container Toolkit.\n\nBrev is instance-based (not job-based). You create an instance, run commands on it via `brev exec`, and delete it when done. The TAO SDK's BrevHandler wraps this into the standard job interface.\n\n## Preflight\n\nThis skill needs the `brev` CLI and an active login. Check before proceeding:\n\n```bash\n# 1. brev CLI installed\ncommand -v brev >\u002Fdev\u002Fnull 2>&1 || {\n  echo \"MISSING: brev CLI not installed. Install:\"\n  echo \"  https:\u002F\u002Fdocs.nvidia.com\u002Fbrev\u002F\"\n  exit 1\n}\n\n# 2. brev command reference available.\nbrev --help >\u002Fdev\u002Fnull || {\n  echo \"MISSING: brev CLI help unavailable; verify the brev installation.\"\n  exit 1\n}\n\n# 3. brev login active — always token-login first when running headless.\n#    Plain `brev ls` will hit an interactive auth prompt (read: EOF on stdin)\n#    even when BREV_API_TOKEN is set, so refresh the session up front.\nif [ -n \"$BREV_API_TOKEN\" ]; then\n  brev login --token \"$BREV_API_TOKEN\" >\u002Fdev\u002Fnull 2>&1 || {\n    echo \"MISSING: brev token login failed. Verify BREV_API_TOKEN.\"\n    exit 1\n  }\nfi\n# Retry once after a forced re-login: cached creds occasionally desync and the\n# first `brev ls` returns auth EOF until the session is rebuilt.\nbrev ls >\u002Fdev\u002Fnull 2>&1 || {\n  [ -n \"$BREV_API_TOKEN\" ] && brev login --token \"$BREV_API_TOKEN\" >\u002Fdev\u002Fnull 2>&1\n  brev ls >\u002Fdev\u002Fnull 2>&1 || {\n    echo \"MISSING: not logged in to brev. Run:\"\n    echo \"  brev login                                    # interactive (opens browser)\"\n    echo \"  # or export BREV_API_TOKEN in your shell before launching (then 'brev login --token \\$BREV_API_TOKEN')\"\n    exit 1\n  }\n}\n```\n\nIf any non-pip step fails, the agent prompts the user to authorize the fix via Bash, then re-runs the preflight before continuing. The TAO SDK is **not** required for Brev — `brev exec docker run …` is sufficient. Reach for the SDK only if you want Job handles, S3 I\u002FO wrapping via `script_runner`, or state persistence; `nvidia-tao-sdk` is on public PyPI, install missing SDK requirements automatically from the pinned Brev extra in `versions.yaml`: `python -m pip install \"$(\"${TAO_SKILL_BANK_PATH:?}\u002Fscripts\u002Fresolve_versions_key.py\" wheels.tao_sdk_brev)\"`. **When going the SDK route, read `tao-skill-bank:tao-run-platform` for the `BrevSDK` kwarg reference, `build_entrypoint`, and `ActionWorkflow` patterns.**\n\n## Authentication\n\nTwo options:\n\n1. **Automated (recommended)**: Get an API token from the Brev console settings page. Set `BREV_API_TOKEN` as an environment variable (e.g., `export BREV_API_TOKEN=...` in your shell). The handler auto-authenticates via `brev login --token` on first use.\n\n2. **Manual**: Run `brev login` (opens browser). Tokens expire hourly — the handler refreshes automatically.\n\nS3 credentials (ACCESS_KEY, SECRET_KEY) are needed separately for data transfer.\n\n### Headless \u002F non-interactive\n\nIn a CI shell, container, or agent session with no controlling TTY, **always\nrun `brev login --token \"$BREV_API_TOKEN\"` before any other `brev` call** —\neven when the token is exported. Otherwise the CLI prompts on stdin and\nreturns an `EOF` auth error on commands like `brev ls`, `brev create`, or\n`brev exec`. Re-run the token login if a call returns auth-EOF; a single\nrefresh is usually enough.\n\n## Launch Preflight\n\nBefore generating scripts or submitting jobs:\n\n1. Verify `BREV_API_TOKEN` is set.\n2. Verify the `brev` CLI is installed and can list instances, for example\n   `brev ls --json`. If needed, authenticate with `brev login --token`.\n3. For `s3:\u002F\u002F` datasets\u002Fresults, verify `ACCESS_KEY` and `SECRET_KEY` are set\n   and the exact paths are readable with `aws s3 ls`.\n4. Do not accept local `\u002Fpath` inputs for Brev unless the user has proven those\n   paths exist on the target Brev instance or are mounted into it.\n5. Verify model-specific credentials such as `HF_TOKEN` before launch.\n\n## Instance Lifecycle\n\nThe agent controls instance lifecycle:\n\n- **Reuse**: Pass `instance_id` in `backend_details` to run multiple jobs on the same instance. Efficient for multi-step workflows.\n- **Ephemeral**: Omit `instance_id` — the handler creates a new instance per job. Clean but slower (instance boot ~2-5 min).\n\n### Creating an instance — placement info\n\nFor accounts with more than one cloud credential or workspace group, plain\n`brev create` rejects the call with a placement error. Pass the account-specific\nIDs explicitly:\n\n```bash\nbrev create my-instance \\\n  --gpu L40S:1 \\\n  --cloud-cred-id \u003CcloudCredId> \\\n  --workspace-group-id \u003CworkspaceGroupId>\n```\n\nDiscover the values once and export them in your shell before launching:\n\n```bash\nbrev ls --json | jq -r '.workspaces[0].workspaceGroupId'   # default group\nbrev orgs --json | jq -r '.[0].cloudCredentials[].id'      # cloud credential\n```\n\nWhen using the SDK, pass them through `backend_details`:\n\n```python\nBrevSDK().create_job(\n    ...,\n    backend_details={\n        \"cloud_cred_id\": \"\u003CcloudCredId>\",\n        \"workspace_group_id\": \"\u003CworkspaceGroupId>\",\n    },\n)\n```\n\n## Multi-GPU and multi-node\n\n**Multi-node is not supported on Brev.** Brev is instance-based — one job runs on one instance, with no cross-instance coordination.\n\nMulti-GPU **on a single instance** is supported (instances available with up to 8× H100 \u002F A100 \u002F L40S). `gpu_count` maps to the GPU count on the instance; `torchrun --nproc-per-node=N` or PyTorch DDP work within the instance.\n\n## GPU Types\n\nAvailable via `brev search`:\n- L40S, A100 80GB, H100 (availability varies by provider)\n- Use `--gpu-name` to filter, `--min-vram` for memory requirements\n\n## Storage\n\nNo shared NFS\u002FLustre. All data flows through S3 via the script_runner's fsspec integration. Instance-local disk at `~\u002F` persists across stop\u002Fstart but not across delete\u002Fcreate.\n\n## Docker on Brev\n\nVM Mode instances have Docker pre-installed. For TAO container images:\n\n```bash\n# NGC auth (one-time per instance)\nbrev exec \u003Cinstance> -- docker login nvcr.io -u '$oauthtoken' -p \u003CNGC_KEY>\n\n# Run a TAO training job\nbrev exec \u003Cinstance> -- docker run --gpus all --rm \\\n  -v ~\u002Fdata:\u002Fdata \\\n  nvcr.io\u002Fnvidia\u002Ftao\u002Ftao-toolkit:6.26.3-pyt \\\n  visual_changenet train -e \u002Fdata\u002Fspec.yaml\n```\n\n### Wait for instance readiness before the first `brev exec`\n\nA freshly created instance reports `RUNNING` long before sshd, hostname\nresolution, and the user shell are ready. The first `brev exec` against an\nunsettled instance fails with `hostname not resolvable`,\n`Connection refused`, or a silent timeout. Always poll until a trivial exec\nsucceeds before issuing real work:\n\n```bash\n# Wait up to 5 minutes for shell readiness — covers the SSH bring-up window.\nfor i in $(seq 1 60); do\n  brev exec \u003Cinstance> -- true >\u002Fdev\u002Fnull 2>&1 && break\n  sleep 5\ndone\nbrev exec \u003Cinstance> -- true >\u002Fdev\u002Fnull 2>&1 || {\n  echo \"instance \u003Cinstance> never became exec-ready\"; exit 1;\n}\n```\n\n### `brev exec` timeout for cold-start workloads\n\n`brev exec` inherits no default timeout, but anything that wraps it (the SDK\nhandler, CI step wrappers, `timeout` shell builtins) must allow time for both\nthe SSH bring-up window and the container pull on a fresh instance. Use\n**≥ 600 s (10 min)** for the first exec on a new instance; the previous\n60–120 s default truncates remote startup and surfaces as a spurious\n`exec failed` even though the remote command is still progressing.\n\n## Cleanup\n\n```bash\nbrev delete \u003Cinstance>      # plain delete — no flags\n```\n\nThe CLI does not accept `--yes` \u002F `-y`; passing it errors with\n`unknown flag: --yes`. `brev delete \u003Cinstance>` is already non-interactive on\nrecent CLIs, so no confirmation flag is needed.\n\n## Error Patterns\n\n**brev CLI not found**: Install from https:\u002F\u002Fdocs.nvidia.com\u002Fbrev\u002F.\n\n**`brev ls` returns auth EOF even with `BREV_API_TOKEN` set**: Headless shell\nhas no stdin for the interactive auth prompt. Run\n`brev login --token \"$BREV_API_TOKEN\"` first, then retry. If the failure\npersists across a single retry, the token itself is stale — mint a fresh one.\n\n**Token expired**: Handler auto-refreshes via `brev login --token`. If\npersistent, run `brev login` manually.\n\n**`brev create` rejected with placement error (`cloudCredId` \u002F\n`workspaceGroupId` required)**: Multi-credential or multi-workspace accounts\nmust pass `--cloud-cred-id` and\u002For `--workspace-group-id`. See\n*Creating an instance — placement info* above.\n\n**`brev exec` fails with `hostname not resolvable` or `Connection refused`\nright after create**: Instance reports `RUNNING` before sshd is up. Use the\nreadiness-wait loop in *Wait for instance readiness before the first `brev\nexec`* before issuing the real command.\n\n**SDK exec timeout \u002F `exec failed` on a fresh instance**: The SDK's\n`brev exec` wrapper timed out before remote startup finished. Raise the\ntimeout to ≥ 600 s for cold-start runs (see *`brev exec` timeout for\ncold-start workloads*).\n\n**`brev delete --yes`: `unknown flag: --yes`**: The CLI has no confirmation\nflag. Use plain `brev delete \u003Cinstance>`.\n\n**Instance stuck in provisioning**: Some GPU types have limited availability. Try a different `--gpu-name` or provider.\n\n**Docker pull fails on nvcr.io**: NGC_KEY not set or expired. Run `docker login nvcr.io` on the instance.\n",{"data":35,"body":46},{"name":4,"description":6,"license":26,"compatibility":36,"metadata":37,"allowed-tools":40,"tags":41},"Requires the brev CLI (https:\u002F\u002Fgithub.com\u002Fbrevdev\u002Fbrev-cli) and an active brev login.",{"author":38,"version":39},"NVIDIA Corporation","0.1.0","Read Bash",[42,43,44,45],"gpu","compute","instance-based","brev",{"type":47,"children":48},"root",[49,57,63,77,84,96,765,855,861,866,923,928,935,993,999,1004,1108,1114,1119,1166,1172,1184,1288,1293,1397,1409,1474,1480,1490,1518,1524,1536,1565,1571,1584,1590,1595,1826,1837,1873,2115,2126,2159,2165,2205,2241,2247,2266,2295,2319,2373,2420,2456,2482,2499,2517],{"type":50,"tag":51,"props":52,"children":53},"element","h1",{"id":45},[54],{"type":55,"value":56},"text","Brev",{"type":50,"tag":58,"props":59,"children":60},"p",{},[61],{"type":55,"value":62},"NVIDIA Brev provides on-demand GPU instances across multiple cloud providers. Instances come pre-loaded with NVIDIA drivers, CUDA, Docker, and NVIDIA Container Toolkit.",{"type":50,"tag":58,"props":64,"children":65},{},[66,68,75],{"type":55,"value":67},"Brev is instance-based (not job-based). You create an instance, run commands on it via ",{"type":50,"tag":69,"props":70,"children":72},"code",{"className":71},[],[73],{"type":55,"value":74},"brev exec",{"type":55,"value":76},", and delete it when done. The TAO SDK's BrevHandler wraps this into the standard job interface.",{"type":50,"tag":78,"props":79,"children":81},"h2",{"id":80},"preflight",[82],{"type":55,"value":83},"Preflight",{"type":50,"tag":58,"props":85,"children":86},{},[87,89,94],{"type":55,"value":88},"This skill needs the ",{"type":50,"tag":69,"props":90,"children":92},{"className":91},[],[93],{"type":55,"value":45},{"type":55,"value":95}," CLI and an active login. Check before proceeding:",{"type":50,"tag":97,"props":98,"children":103},"pre",{"className":99,"code":100,"language":101,"meta":102,"style":102},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# 1. brev CLI installed\ncommand -v brev >\u002Fdev\u002Fnull 2>&1 || {\n  echo \"MISSING: brev CLI not installed. Install:\"\n  echo \"  https:\u002F\u002Fdocs.nvidia.com\u002Fbrev\u002F\"\n  exit 1\n}\n\n# 2. brev command reference available.\nbrev --help >\u002Fdev\u002Fnull || {\n  echo \"MISSING: brev CLI help unavailable; verify the brev installation.\"\n  exit 1\n}\n\n# 3. brev login active — always token-login first when running headless.\n#    Plain `brev ls` will hit an interactive auth prompt (read: EOF on stdin)\n#    even when BREV_API_TOKEN is set, so refresh the session up front.\nif [ -n \"$BREV_API_TOKEN\" ]; then\n  brev login --token \"$BREV_API_TOKEN\" >\u002Fdev\u002Fnull 2>&1 || {\n    echo \"MISSING: brev token login failed. Verify BREV_API_TOKEN.\"\n    exit 1\n  }\nfi\n# Retry once after a forced re-login: cached creds occasionally desync and the\n# first `brev ls` returns auth EOF until the session is rebuilt.\nbrev ls >\u002Fdev\u002Fnull 2>&1 || {\n  [ -n \"$BREV_API_TOKEN\" ] && brev login --token \"$BREV_API_TOKEN\" >\u002Fdev\u002Fnull 2>&1\n  brev ls >\u002Fdev\u002Fnull 2>&1 || {\n    echo \"MISSING: not logged in to brev. Run:\"\n    echo \"  brev login                                    # interactive (opens browser)\"\n    echo \"  # or export BREV_API_TOKEN in your shell before launching (then 'brev login --token \\$BREV_API_TOKEN')\"\n    exit 1\n  }\n}\n","bash","",[104],{"type":50,"tag":69,"props":105,"children":106},{"__ignoreMap":102},[107,119,166,190,211,226,235,245,254,284,305,317,325,333,342,351,360,405,456,478,491,500,509,518,527,560,632,664,685,706,737,749,757],{"type":50,"tag":108,"props":109,"children":112},"span",{"class":110,"line":111},"line",1,[113],{"type":50,"tag":108,"props":114,"children":116},{"style":115},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[117],{"type":55,"value":118},"# 1. brev CLI installed\n",{"type":50,"tag":108,"props":120,"children":122},{"class":110,"line":121},2,[123,129,135,140,146,151,156,161],{"type":50,"tag":108,"props":124,"children":126},{"style":125},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[127],{"type":55,"value":128},"command",{"type":50,"tag":108,"props":130,"children":132},{"style":131},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[133],{"type":55,"value":134}," -v",{"type":50,"tag":108,"props":136,"children":137},{"style":131},[138],{"type":55,"value":139}," brev",{"type":50,"tag":108,"props":141,"children":143},{"style":142},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[144],{"type":55,"value":145}," >",{"type":50,"tag":108,"props":147,"children":148},{"style":131},[149],{"type":55,"value":150},"\u002Fdev\u002Fnull",{"type":50,"tag":108,"props":152,"children":153},{"style":142},[154],{"type":55,"value":155}," 2>&1",{"type":50,"tag":108,"props":157,"children":158},{"style":142},[159],{"type":55,"value":160}," ||",{"type":50,"tag":108,"props":162,"children":163},{"style":142},[164],{"type":55,"value":165}," {\n",{"type":50,"tag":108,"props":167,"children":169},{"class":110,"line":168},3,[170,175,180,185],{"type":50,"tag":108,"props":171,"children":172},{"style":125},[173],{"type":55,"value":174},"  echo",{"type":50,"tag":108,"props":176,"children":177},{"style":142},[178],{"type":55,"value":179}," \"",{"type":50,"tag":108,"props":181,"children":182},{"style":131},[183],{"type":55,"value":184},"MISSING: brev CLI not installed. Install:",{"type":50,"tag":108,"props":186,"children":187},{"style":142},[188],{"type":55,"value":189},"\"\n",{"type":50,"tag":108,"props":191,"children":193},{"class":110,"line":192},4,[194,198,202,207],{"type":50,"tag":108,"props":195,"children":196},{"style":125},[197],{"type":55,"value":174},{"type":50,"tag":108,"props":199,"children":200},{"style":142},[201],{"type":55,"value":179},{"type":50,"tag":108,"props":203,"children":204},{"style":131},[205],{"type":55,"value":206},"  https:\u002F\u002Fdocs.nvidia.com\u002Fbrev\u002F",{"type":50,"tag":108,"props":208,"children":209},{"style":142},[210],{"type":55,"value":189},{"type":50,"tag":108,"props":212,"children":214},{"class":110,"line":213},5,[215,220],{"type":50,"tag":108,"props":216,"children":217},{"style":125},[218],{"type":55,"value":219},"  exit",{"type":50,"tag":108,"props":221,"children":223},{"style":222},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[224],{"type":55,"value":225}," 1\n",{"type":50,"tag":108,"props":227,"children":229},{"class":110,"line":228},6,[230],{"type":50,"tag":108,"props":231,"children":232},{"style":142},[233],{"type":55,"value":234},"}\n",{"type":50,"tag":108,"props":236,"children":238},{"class":110,"line":237},7,[239],{"type":50,"tag":108,"props":240,"children":242},{"emptyLinePlaceholder":241},true,[243],{"type":55,"value":244},"\n",{"type":50,"tag":108,"props":246,"children":248},{"class":110,"line":247},8,[249],{"type":50,"tag":108,"props":250,"children":251},{"style":115},[252],{"type":55,"value":253},"# 2. brev command reference available.\n",{"type":50,"tag":108,"props":255,"children":257},{"class":110,"line":256},9,[258,263,268,272,276,280],{"type":50,"tag":108,"props":259,"children":261},{"style":260},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[262],{"type":55,"value":45},{"type":50,"tag":108,"props":264,"children":265},{"style":131},[266],{"type":55,"value":267}," --help",{"type":50,"tag":108,"props":269,"children":270},{"style":142},[271],{"type":55,"value":145},{"type":50,"tag":108,"props":273,"children":274},{"style":131},[275],{"type":55,"value":150},{"type":50,"tag":108,"props":277,"children":278},{"style":142},[279],{"type":55,"value":160},{"type":50,"tag":108,"props":281,"children":282},{"style":142},[283],{"type":55,"value":165},{"type":50,"tag":108,"props":285,"children":287},{"class":110,"line":286},10,[288,292,296,301],{"type":50,"tag":108,"props":289,"children":290},{"style":125},[291],{"type":55,"value":174},{"type":50,"tag":108,"props":293,"children":294},{"style":142},[295],{"type":55,"value":179},{"type":50,"tag":108,"props":297,"children":298},{"style":131},[299],{"type":55,"value":300},"MISSING: brev CLI help unavailable; verify the brev installation.",{"type":50,"tag":108,"props":302,"children":303},{"style":142},[304],{"type":55,"value":189},{"type":50,"tag":108,"props":306,"children":308},{"class":110,"line":307},11,[309,313],{"type":50,"tag":108,"props":310,"children":311},{"style":125},[312],{"type":55,"value":219},{"type":50,"tag":108,"props":314,"children":315},{"style":222},[316],{"type":55,"value":225},{"type":50,"tag":108,"props":318,"children":320},{"class":110,"line":319},12,[321],{"type":50,"tag":108,"props":322,"children":323},{"style":142},[324],{"type":55,"value":234},{"type":50,"tag":108,"props":326,"children":328},{"class":110,"line":327},13,[329],{"type":50,"tag":108,"props":330,"children":331},{"emptyLinePlaceholder":241},[332],{"type":55,"value":244},{"type":50,"tag":108,"props":334,"children":336},{"class":110,"line":335},14,[337],{"type":50,"tag":108,"props":338,"children":339},{"style":115},[340],{"type":55,"value":341},"# 3. brev login active — always token-login first when running headless.\n",{"type":50,"tag":108,"props":343,"children":345},{"class":110,"line":344},15,[346],{"type":50,"tag":108,"props":347,"children":348},{"style":115},[349],{"type":55,"value":350},"#    Plain `brev ls` will hit an interactive auth prompt (read: EOF on stdin)\n",{"type":50,"tag":108,"props":352,"children":354},{"class":110,"line":353},16,[355],{"type":50,"tag":108,"props":356,"children":357},{"style":115},[358],{"type":55,"value":359},"#    even when BREV_API_TOKEN is set, so refresh the session up front.\n",{"type":50,"tag":108,"props":361,"children":363},{"class":110,"line":362},17,[364,370,375,380,384,390,395,400],{"type":50,"tag":108,"props":365,"children":367},{"style":366},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[368],{"type":55,"value":369},"if",{"type":50,"tag":108,"props":371,"children":372},{"style":142},[373],{"type":55,"value":374}," [",{"type":50,"tag":108,"props":376,"children":377},{"style":142},[378],{"type":55,"value":379}," -n",{"type":50,"tag":108,"props":381,"children":382},{"style":142},[383],{"type":55,"value":179},{"type":50,"tag":108,"props":385,"children":387},{"style":386},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[388],{"type":55,"value":389},"$BREV_API_TOKEN",{"type":50,"tag":108,"props":391,"children":392},{"style":142},[393],{"type":55,"value":394},"\"",{"type":50,"tag":108,"props":396,"children":397},{"style":142},[398],{"type":55,"value":399}," ];",{"type":50,"tag":108,"props":401,"children":402},{"style":366},[403],{"type":55,"value":404}," then\n",{"type":50,"tag":108,"props":406,"children":408},{"class":110,"line":407},18,[409,414,419,424,428,432,436,440,444,448,452],{"type":50,"tag":108,"props":410,"children":411},{"style":260},[412],{"type":55,"value":413},"  brev",{"type":50,"tag":108,"props":415,"children":416},{"style":131},[417],{"type":55,"value":418}," login",{"type":50,"tag":108,"props":420,"children":421},{"style":131},[422],{"type":55,"value":423}," --token",{"type":50,"tag":108,"props":425,"children":426},{"style":142},[427],{"type":55,"value":179},{"type":50,"tag":108,"props":429,"children":430},{"style":386},[431],{"type":55,"value":389},{"type":50,"tag":108,"props":433,"children":434},{"style":142},[435],{"type":55,"value":394},{"type":50,"tag":108,"props":437,"children":438},{"style":142},[439],{"type":55,"value":145},{"type":50,"tag":108,"props":441,"children":442},{"style":131},[443],{"type":55,"value":150},{"type":50,"tag":108,"props":445,"children":446},{"style":142},[447],{"type":55,"value":155},{"type":50,"tag":108,"props":449,"children":450},{"style":142},[451],{"type":55,"value":160},{"type":50,"tag":108,"props":453,"children":454},{"style":142},[455],{"type":55,"value":165},{"type":50,"tag":108,"props":457,"children":459},{"class":110,"line":458},19,[460,465,469,474],{"type":50,"tag":108,"props":461,"children":462},{"style":125},[463],{"type":55,"value":464},"    echo",{"type":50,"tag":108,"props":466,"children":467},{"style":142},[468],{"type":55,"value":179},{"type":50,"tag":108,"props":470,"children":471},{"style":131},[472],{"type":55,"value":473},"MISSING: brev token login failed. Verify BREV_API_TOKEN.",{"type":50,"tag":108,"props":475,"children":476},{"style":142},[477],{"type":55,"value":189},{"type":50,"tag":108,"props":479,"children":481},{"class":110,"line":480},20,[482,487],{"type":50,"tag":108,"props":483,"children":484},{"style":125},[485],{"type":55,"value":486},"    exit",{"type":50,"tag":108,"props":488,"children":489},{"style":222},[490],{"type":55,"value":225},{"type":50,"tag":108,"props":492,"children":494},{"class":110,"line":493},21,[495],{"type":50,"tag":108,"props":496,"children":497},{"style":142},[498],{"type":55,"value":499},"  }\n",{"type":50,"tag":108,"props":501,"children":503},{"class":110,"line":502},22,[504],{"type":50,"tag":108,"props":505,"children":506},{"style":366},[507],{"type":55,"value":508},"fi\n",{"type":50,"tag":108,"props":510,"children":512},{"class":110,"line":511},23,[513],{"type":50,"tag":108,"props":514,"children":515},{"style":115},[516],{"type":55,"value":517},"# Retry once after a forced re-login: cached creds occasionally desync and the\n",{"type":50,"tag":108,"props":519,"children":521},{"class":110,"line":520},24,[522],{"type":50,"tag":108,"props":523,"children":524},{"style":115},[525],{"type":55,"value":526},"# first `brev ls` returns auth EOF until the session is rebuilt.\n",{"type":50,"tag":108,"props":528,"children":530},{"class":110,"line":529},25,[531,535,540,544,548,552,556],{"type":50,"tag":108,"props":532,"children":533},{"style":260},[534],{"type":55,"value":45},{"type":50,"tag":108,"props":536,"children":537},{"style":131},[538],{"type":55,"value":539}," ls",{"type":50,"tag":108,"props":541,"children":542},{"style":142},[543],{"type":55,"value":145},{"type":50,"tag":108,"props":545,"children":546},{"style":131},[547],{"type":55,"value":150},{"type":50,"tag":108,"props":549,"children":550},{"style":142},[551],{"type":55,"value":155},{"type":50,"tag":108,"props":553,"children":554},{"style":142},[555],{"type":55,"value":160},{"type":50,"tag":108,"props":557,"children":558},{"style":142},[559],{"type":55,"value":165},{"type":50,"tag":108,"props":561,"children":563},{"class":110,"line":562},26,[564,569,573,577,581,585,590,595,599,603,607,611,615,619,623,627],{"type":50,"tag":108,"props":565,"children":566},{"style":142},[567],{"type":55,"value":568},"  [",{"type":50,"tag":108,"props":570,"children":571},{"style":142},[572],{"type":55,"value":379},{"type":50,"tag":108,"props":574,"children":575},{"style":142},[576],{"type":55,"value":179},{"type":50,"tag":108,"props":578,"children":579},{"style":386},[580],{"type":55,"value":389},{"type":50,"tag":108,"props":582,"children":583},{"style":142},[584],{"type":55,"value":394},{"type":50,"tag":108,"props":586,"children":587},{"style":142},[588],{"type":55,"value":589}," ]",{"type":50,"tag":108,"props":591,"children":592},{"style":142},[593],{"type":55,"value":594}," &&",{"type":50,"tag":108,"props":596,"children":597},{"style":260},[598],{"type":55,"value":139},{"type":50,"tag":108,"props":600,"children":601},{"style":131},[602],{"type":55,"value":418},{"type":50,"tag":108,"props":604,"children":605},{"style":131},[606],{"type":55,"value":423},{"type":50,"tag":108,"props":608,"children":609},{"style":142},[610],{"type":55,"value":179},{"type":50,"tag":108,"props":612,"children":613},{"style":386},[614],{"type":55,"value":389},{"type":50,"tag":108,"props":616,"children":617},{"style":142},[618],{"type":55,"value":394},{"type":50,"tag":108,"props":620,"children":621},{"style":142},[622],{"type":55,"value":145},{"type":50,"tag":108,"props":624,"children":625},{"style":131},[626],{"type":55,"value":150},{"type":50,"tag":108,"props":628,"children":629},{"style":142},[630],{"type":55,"value":631}," 2>&1\n",{"type":50,"tag":108,"props":633,"children":635},{"class":110,"line":634},27,[636,640,644,648,652,656,660],{"type":50,"tag":108,"props":637,"children":638},{"style":260},[639],{"type":55,"value":413},{"type":50,"tag":108,"props":641,"children":642},{"style":131},[643],{"type":55,"value":539},{"type":50,"tag":108,"props":645,"children":646},{"style":142},[647],{"type":55,"value":145},{"type":50,"tag":108,"props":649,"children":650},{"style":131},[651],{"type":55,"value":150},{"type":50,"tag":108,"props":653,"children":654},{"style":142},[655],{"type":55,"value":155},{"type":50,"tag":108,"props":657,"children":658},{"style":142},[659],{"type":55,"value":160},{"type":50,"tag":108,"props":661,"children":662},{"style":142},[663],{"type":55,"value":165},{"type":50,"tag":108,"props":665,"children":667},{"class":110,"line":666},28,[668,672,676,681],{"type":50,"tag":108,"props":669,"children":670},{"style":125},[671],{"type":55,"value":464},{"type":50,"tag":108,"props":673,"children":674},{"style":142},[675],{"type":55,"value":179},{"type":50,"tag":108,"props":677,"children":678},{"style":131},[679],{"type":55,"value":680},"MISSING: not logged in to brev. Run:",{"type":50,"tag":108,"props":682,"children":683},{"style":142},[684],{"type":55,"value":189},{"type":50,"tag":108,"props":686,"children":688},{"class":110,"line":687},29,[689,693,697,702],{"type":50,"tag":108,"props":690,"children":691},{"style":125},[692],{"type":55,"value":464},{"type":50,"tag":108,"props":694,"children":695},{"style":142},[696],{"type":55,"value":179},{"type":50,"tag":108,"props":698,"children":699},{"style":131},[700],{"type":55,"value":701},"  brev login                                    # interactive (opens browser)",{"type":50,"tag":108,"props":703,"children":704},{"style":142},[705],{"type":55,"value":189},{"type":50,"tag":108,"props":707,"children":709},{"class":110,"line":708},30,[710,714,718,723,728,733],{"type":50,"tag":108,"props":711,"children":712},{"style":125},[713],{"type":55,"value":464},{"type":50,"tag":108,"props":715,"children":716},{"style":142},[717],{"type":55,"value":179},{"type":50,"tag":108,"props":719,"children":720},{"style":131},[721],{"type":55,"value":722},"  # or export BREV_API_TOKEN in your shell before launching (then 'brev login --token ",{"type":50,"tag":108,"props":724,"children":725},{"style":386},[726],{"type":55,"value":727},"\\$",{"type":50,"tag":108,"props":729,"children":730},{"style":131},[731],{"type":55,"value":732},"BREV_API_TOKEN')",{"type":50,"tag":108,"props":734,"children":735},{"style":142},[736],{"type":55,"value":189},{"type":50,"tag":108,"props":738,"children":740},{"class":110,"line":739},31,[741,745],{"type":50,"tag":108,"props":742,"children":743},{"style":125},[744],{"type":55,"value":486},{"type":50,"tag":108,"props":746,"children":747},{"style":222},[748],{"type":55,"value":225},{"type":50,"tag":108,"props":750,"children":752},{"class":110,"line":751},32,[753],{"type":50,"tag":108,"props":754,"children":755},{"style":142},[756],{"type":55,"value":499},{"type":50,"tag":108,"props":758,"children":760},{"class":110,"line":759},33,[761],{"type":50,"tag":108,"props":762,"children":763},{"style":142},[764],{"type":55,"value":234},{"type":50,"tag":58,"props":766,"children":767},{},[768,770,776,778,784,786,792,794,800,802,808,810,816,818],{"type":55,"value":769},"If any non-pip step fails, the agent prompts the user to authorize the fix via Bash, then re-runs the preflight before continuing. The TAO SDK is ",{"type":50,"tag":771,"props":772,"children":773},"strong",{},[774],{"type":55,"value":775},"not",{"type":55,"value":777}," required for Brev — ",{"type":50,"tag":69,"props":779,"children":781},{"className":780},[],[782],{"type":55,"value":783},"brev exec docker run …",{"type":55,"value":785}," is sufficient. Reach for the SDK only if you want Job handles, S3 I\u002FO wrapping via ",{"type":50,"tag":69,"props":787,"children":789},{"className":788},[],[790],{"type":55,"value":791},"script_runner",{"type":55,"value":793},", or state persistence; ",{"type":50,"tag":69,"props":795,"children":797},{"className":796},[],[798],{"type":55,"value":799},"nvidia-tao-sdk",{"type":55,"value":801}," is on public PyPI, install missing SDK requirements automatically from the pinned Brev extra in ",{"type":50,"tag":69,"props":803,"children":805},{"className":804},[],[806],{"type":55,"value":807},"versions.yaml",{"type":55,"value":809},": ",{"type":50,"tag":69,"props":811,"children":813},{"className":812},[],[814],{"type":55,"value":815},"python -m pip install \"$(\"${TAO_SKILL_BANK_PATH:?}\u002Fscripts\u002Fresolve_versions_key.py\" wheels.tao_sdk_brev)\"",{"type":55,"value":817},". ",{"type":50,"tag":771,"props":819,"children":820},{},[821,823,829,831,837,839,845,847,853],{"type":55,"value":822},"When going the SDK route, read ",{"type":50,"tag":69,"props":824,"children":826},{"className":825},[],[827],{"type":55,"value":828},"tao-skill-bank:tao-run-platform",{"type":55,"value":830}," for the ",{"type":50,"tag":69,"props":832,"children":834},{"className":833},[],[835],{"type":55,"value":836},"BrevSDK",{"type":55,"value":838}," kwarg reference, ",{"type":50,"tag":69,"props":840,"children":842},{"className":841},[],[843],{"type":55,"value":844},"build_entrypoint",{"type":55,"value":846},", and ",{"type":50,"tag":69,"props":848,"children":850},{"className":849},[],[851],{"type":55,"value":852},"ActionWorkflow",{"type":55,"value":854}," patterns.",{"type":50,"tag":78,"props":856,"children":858},{"id":857},"authentication",[859],{"type":55,"value":860},"Authentication",{"type":50,"tag":58,"props":862,"children":863},{},[864],{"type":55,"value":865},"Two options:",{"type":50,"tag":867,"props":868,"children":869},"ol",{},[870,905],{"type":50,"tag":871,"props":872,"children":873},"li",{},[874,879,881,887,889,895,897,903],{"type":50,"tag":771,"props":875,"children":876},{},[877],{"type":55,"value":878},"Automated (recommended)",{"type":55,"value":880},": Get an API token from the Brev console settings page. Set ",{"type":50,"tag":69,"props":882,"children":884},{"className":883},[],[885],{"type":55,"value":886},"BREV_API_TOKEN",{"type":55,"value":888}," as an environment variable (e.g., ",{"type":50,"tag":69,"props":890,"children":892},{"className":891},[],[893],{"type":55,"value":894},"export BREV_API_TOKEN=...",{"type":55,"value":896}," in your shell). The handler auto-authenticates via ",{"type":50,"tag":69,"props":898,"children":900},{"className":899},[],[901],{"type":55,"value":902},"brev login --token",{"type":55,"value":904}," on first use.",{"type":50,"tag":871,"props":906,"children":907},{},[908,913,915,921],{"type":50,"tag":771,"props":909,"children":910},{},[911],{"type":55,"value":912},"Manual",{"type":55,"value":914},": Run ",{"type":50,"tag":69,"props":916,"children":918},{"className":917},[],[919],{"type":55,"value":920},"brev login",{"type":55,"value":922}," (opens browser). Tokens expire hourly — the handler refreshes automatically.",{"type":50,"tag":58,"props":924,"children":925},{},[926],{"type":55,"value":927},"S3 credentials (ACCESS_KEY, SECRET_KEY) are needed separately for data transfer.",{"type":50,"tag":929,"props":930,"children":932},"h3",{"id":931},"headless-non-interactive",[933],{"type":55,"value":934},"Headless \u002F non-interactive",{"type":50,"tag":58,"props":936,"children":937},{},[938,940,960,962,968,970,976,978,984,986,991],{"type":55,"value":939},"In a CI shell, container, or agent session with no controlling TTY, ",{"type":50,"tag":771,"props":941,"children":942},{},[943,945,951,953,958],{"type":55,"value":944},"always\nrun ",{"type":50,"tag":69,"props":946,"children":948},{"className":947},[],[949],{"type":55,"value":950},"brev login --token \"$BREV_API_TOKEN\"",{"type":55,"value":952}," before any other ",{"type":50,"tag":69,"props":954,"children":956},{"className":955},[],[957],{"type":55,"value":45},{"type":55,"value":959}," call",{"type":55,"value":961}," —\neven when the token is exported. Otherwise the CLI prompts on stdin and\nreturns an ",{"type":50,"tag":69,"props":963,"children":965},{"className":964},[],[966],{"type":55,"value":967},"EOF",{"type":55,"value":969}," auth error on commands like ",{"type":50,"tag":69,"props":971,"children":973},{"className":972},[],[974],{"type":55,"value":975},"brev ls",{"type":55,"value":977},", ",{"type":50,"tag":69,"props":979,"children":981},{"className":980},[],[982],{"type":55,"value":983},"brev create",{"type":55,"value":985},", or\n",{"type":50,"tag":69,"props":987,"children":989},{"className":988},[],[990],{"type":55,"value":74},{"type":55,"value":992},". Re-run the token login if a call returns auth-EOF; a single\nrefresh is usually enough.",{"type":50,"tag":78,"props":994,"children":996},{"id":995},"launch-preflight",[997],{"type":55,"value":998},"Launch Preflight",{"type":50,"tag":58,"props":1000,"children":1001},{},[1002],{"type":55,"value":1003},"Before generating scripts or submitting jobs:",{"type":50,"tag":867,"props":1005,"children":1006},{},[1007,1019,1046,1082,1095],{"type":50,"tag":871,"props":1008,"children":1009},{},[1010,1012,1017],{"type":55,"value":1011},"Verify ",{"type":50,"tag":69,"props":1013,"children":1015},{"className":1014},[],[1016],{"type":55,"value":886},{"type":55,"value":1018}," is set.",{"type":50,"tag":871,"props":1020,"children":1021},{},[1022,1024,1029,1031,1037,1039,1044],{"type":55,"value":1023},"Verify the ",{"type":50,"tag":69,"props":1025,"children":1027},{"className":1026},[],[1028],{"type":55,"value":45},{"type":55,"value":1030}," CLI is installed and can list instances, for example\n",{"type":50,"tag":69,"props":1032,"children":1034},{"className":1033},[],[1035],{"type":55,"value":1036},"brev ls --json",{"type":55,"value":1038},". If needed, authenticate with ",{"type":50,"tag":69,"props":1040,"children":1042},{"className":1041},[],[1043],{"type":55,"value":902},{"type":55,"value":1045},".",{"type":50,"tag":871,"props":1047,"children":1048},{},[1049,1051,1057,1059,1065,1067,1073,1075,1081],{"type":55,"value":1050},"For ",{"type":50,"tag":69,"props":1052,"children":1054},{"className":1053},[],[1055],{"type":55,"value":1056},"s3:\u002F\u002F",{"type":55,"value":1058}," datasets\u002Fresults, verify ",{"type":50,"tag":69,"props":1060,"children":1062},{"className":1061},[],[1063],{"type":55,"value":1064},"ACCESS_KEY",{"type":55,"value":1066}," and ",{"type":50,"tag":69,"props":1068,"children":1070},{"className":1069},[],[1071],{"type":55,"value":1072},"SECRET_KEY",{"type":55,"value":1074}," are set\nand the exact paths are readable with ",{"type":50,"tag":69,"props":1076,"children":1078},{"className":1077},[],[1079],{"type":55,"value":1080},"aws s3 ls",{"type":55,"value":1045},{"type":50,"tag":871,"props":1083,"children":1084},{},[1085,1087,1093],{"type":55,"value":1086},"Do not accept local ",{"type":50,"tag":69,"props":1088,"children":1090},{"className":1089},[],[1091],{"type":55,"value":1092},"\u002Fpath",{"type":55,"value":1094}," inputs for Brev unless the user has proven those\npaths exist on the target Brev instance or are mounted into it.",{"type":50,"tag":871,"props":1096,"children":1097},{},[1098,1100,1106],{"type":55,"value":1099},"Verify model-specific credentials such as ",{"type":50,"tag":69,"props":1101,"children":1103},{"className":1102},[],[1104],{"type":55,"value":1105},"HF_TOKEN",{"type":55,"value":1107}," before launch.",{"type":50,"tag":78,"props":1109,"children":1111},{"id":1110},"instance-lifecycle",[1112],{"type":55,"value":1113},"Instance Lifecycle",{"type":50,"tag":58,"props":1115,"children":1116},{},[1117],{"type":55,"value":1118},"The agent controls instance lifecycle:",{"type":50,"tag":1120,"props":1121,"children":1122},"ul",{},[1123,1149],{"type":50,"tag":871,"props":1124,"children":1125},{},[1126,1131,1133,1139,1141,1147],{"type":50,"tag":771,"props":1127,"children":1128},{},[1129],{"type":55,"value":1130},"Reuse",{"type":55,"value":1132},": Pass ",{"type":50,"tag":69,"props":1134,"children":1136},{"className":1135},[],[1137],{"type":55,"value":1138},"instance_id",{"type":55,"value":1140}," in ",{"type":50,"tag":69,"props":1142,"children":1144},{"className":1143},[],[1145],{"type":55,"value":1146},"backend_details",{"type":55,"value":1148}," to run multiple jobs on the same instance. Efficient for multi-step workflows.",{"type":50,"tag":871,"props":1150,"children":1151},{},[1152,1157,1159,1164],{"type":50,"tag":771,"props":1153,"children":1154},{},[1155],{"type":55,"value":1156},"Ephemeral",{"type":55,"value":1158},": Omit ",{"type":50,"tag":69,"props":1160,"children":1162},{"className":1161},[],[1163],{"type":55,"value":1138},{"type":55,"value":1165}," — the handler creates a new instance per job. Clean but slower (instance boot ~2-5 min).",{"type":50,"tag":929,"props":1167,"children":1169},{"id":1168},"creating-an-instance-placement-info",[1170],{"type":55,"value":1171},"Creating an instance — placement info",{"type":50,"tag":58,"props":1173,"children":1174},{},[1175,1177,1182],{"type":55,"value":1176},"For accounts with more than one cloud credential or workspace group, plain\n",{"type":50,"tag":69,"props":1178,"children":1180},{"className":1179},[],[1181],{"type":55,"value":983},{"type":55,"value":1183}," rejects the call with a placement error. Pass the account-specific\nIDs explicitly:",{"type":50,"tag":97,"props":1185,"children":1187},{"className":99,"code":1186,"language":101,"meta":102,"style":102},"brev create my-instance \\\n  --gpu L40S:1 \\\n  --cloud-cred-id \u003CcloudCredId> \\\n  --workspace-group-id \u003CworkspaceGroupId>\n",[1188],{"type":50,"tag":69,"props":1189,"children":1190},{"__ignoreMap":102},[1191,1213,1230,1262],{"type":50,"tag":108,"props":1192,"children":1193},{"class":110,"line":111},[1194,1198,1203,1208],{"type":50,"tag":108,"props":1195,"children":1196},{"style":260},[1197],{"type":55,"value":45},{"type":50,"tag":108,"props":1199,"children":1200},{"style":131},[1201],{"type":55,"value":1202}," create",{"type":50,"tag":108,"props":1204,"children":1205},{"style":131},[1206],{"type":55,"value":1207}," my-instance",{"type":50,"tag":108,"props":1209,"children":1210},{"style":386},[1211],{"type":55,"value":1212}," \\\n",{"type":50,"tag":108,"props":1214,"children":1215},{"class":110,"line":121},[1216,1221,1226],{"type":50,"tag":108,"props":1217,"children":1218},{"style":131},[1219],{"type":55,"value":1220},"  --gpu",{"type":50,"tag":108,"props":1222,"children":1223},{"style":131},[1224],{"type":55,"value":1225}," L40S:1",{"type":50,"tag":108,"props":1227,"children":1228},{"style":386},[1229],{"type":55,"value":1212},{"type":50,"tag":108,"props":1231,"children":1232},{"class":110,"line":168},[1233,1238,1243,1248,1253,1258],{"type":50,"tag":108,"props":1234,"children":1235},{"style":131},[1236],{"type":55,"value":1237},"  --cloud-cred-id",{"type":50,"tag":108,"props":1239,"children":1240},{"style":142},[1241],{"type":55,"value":1242}," \u003C",{"type":50,"tag":108,"props":1244,"children":1245},{"style":131},[1246],{"type":55,"value":1247},"cloudCredI",{"type":50,"tag":108,"props":1249,"children":1250},{"style":386},[1251],{"type":55,"value":1252},"d",{"type":50,"tag":108,"props":1254,"children":1255},{"style":142},[1256],{"type":55,"value":1257},">",{"type":50,"tag":108,"props":1259,"children":1260},{"style":386},[1261],{"type":55,"value":1212},{"type":50,"tag":108,"props":1263,"children":1264},{"class":110,"line":192},[1265,1270,1274,1279,1283],{"type":50,"tag":108,"props":1266,"children":1267},{"style":131},[1268],{"type":55,"value":1269},"  --workspace-group-id",{"type":50,"tag":108,"props":1271,"children":1272},{"style":142},[1273],{"type":55,"value":1242},{"type":50,"tag":108,"props":1275,"children":1276},{"style":131},[1277],{"type":55,"value":1278},"workspaceGroupI",{"type":50,"tag":108,"props":1280,"children":1281},{"style":386},[1282],{"type":55,"value":1252},{"type":50,"tag":108,"props":1284,"children":1285},{"style":142},[1286],{"type":55,"value":1287},">\n",{"type":50,"tag":58,"props":1289,"children":1290},{},[1291],{"type":55,"value":1292},"Discover the values once and export them in your shell before launching:",{"type":50,"tag":97,"props":1294,"children":1296},{"className":99,"code":1295,"language":101,"meta":102,"style":102},"brev ls --json | jq -r '.workspaces[0].workspaceGroupId'   # default group\nbrev orgs --json | jq -r '.[0].cloudCredentials[].id'      # cloud credential\n",[1297],{"type":50,"tag":69,"props":1298,"children":1299},{"__ignoreMap":102},[1300,1351],{"type":50,"tag":108,"props":1301,"children":1302},{"class":110,"line":111},[1303,1307,1311,1316,1321,1326,1331,1336,1341,1346],{"type":50,"tag":108,"props":1304,"children":1305},{"style":260},[1306],{"type":55,"value":45},{"type":50,"tag":108,"props":1308,"children":1309},{"style":131},[1310],{"type":55,"value":539},{"type":50,"tag":108,"props":1312,"children":1313},{"style":131},[1314],{"type":55,"value":1315}," --json",{"type":50,"tag":108,"props":1317,"children":1318},{"style":142},[1319],{"type":55,"value":1320}," |",{"type":50,"tag":108,"props":1322,"children":1323},{"style":260},[1324],{"type":55,"value":1325}," jq",{"type":50,"tag":108,"props":1327,"children":1328},{"style":131},[1329],{"type":55,"value":1330}," -r",{"type":50,"tag":108,"props":1332,"children":1333},{"style":142},[1334],{"type":55,"value":1335}," '",{"type":50,"tag":108,"props":1337,"children":1338},{"style":131},[1339],{"type":55,"value":1340},".workspaces[0].workspaceGroupId",{"type":50,"tag":108,"props":1342,"children":1343},{"style":142},[1344],{"type":55,"value":1345},"'",{"type":50,"tag":108,"props":1347,"children":1348},{"style":115},[1349],{"type":55,"value":1350},"   # default group\n",{"type":50,"tag":108,"props":1352,"children":1353},{"class":110,"line":121},[1354,1358,1363,1367,1371,1375,1379,1383,1388,1392],{"type":50,"tag":108,"props":1355,"children":1356},{"style":260},[1357],{"type":55,"value":45},{"type":50,"tag":108,"props":1359,"children":1360},{"style":131},[1361],{"type":55,"value":1362}," orgs",{"type":50,"tag":108,"props":1364,"children":1365},{"style":131},[1366],{"type":55,"value":1315},{"type":50,"tag":108,"props":1368,"children":1369},{"style":142},[1370],{"type":55,"value":1320},{"type":50,"tag":108,"props":1372,"children":1373},{"style":260},[1374],{"type":55,"value":1325},{"type":50,"tag":108,"props":1376,"children":1377},{"style":131},[1378],{"type":55,"value":1330},{"type":50,"tag":108,"props":1380,"children":1381},{"style":142},[1382],{"type":55,"value":1335},{"type":50,"tag":108,"props":1384,"children":1385},{"style":131},[1386],{"type":55,"value":1387},".[0].cloudCredentials[].id",{"type":50,"tag":108,"props":1389,"children":1390},{"style":142},[1391],{"type":55,"value":1345},{"type":50,"tag":108,"props":1393,"children":1394},{"style":115},[1395],{"type":55,"value":1396},"      # cloud credential\n",{"type":50,"tag":58,"props":1398,"children":1399},{},[1400,1402,1407],{"type":55,"value":1401},"When using the SDK, pass them through ",{"type":50,"tag":69,"props":1403,"children":1405},{"className":1404},[],[1406],{"type":55,"value":1146},{"type":55,"value":1408},":",{"type":50,"tag":97,"props":1410,"children":1414},{"className":1411,"code":1412,"language":1413,"meta":102,"style":102},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","BrevSDK().create_job(\n    ...,\n    backend_details={\n        \"cloud_cred_id\": \"\u003CcloudCredId>\",\n        \"workspace_group_id\": \"\u003CworkspaceGroupId>\",\n    },\n)\n","python",[1415],{"type":50,"tag":69,"props":1416,"children":1417},{"__ignoreMap":102},[1418,1426,1434,1442,1450,1458,1466],{"type":50,"tag":108,"props":1419,"children":1420},{"class":110,"line":111},[1421],{"type":50,"tag":108,"props":1422,"children":1423},{},[1424],{"type":55,"value":1425},"BrevSDK().create_job(\n",{"type":50,"tag":108,"props":1427,"children":1428},{"class":110,"line":121},[1429],{"type":50,"tag":108,"props":1430,"children":1431},{},[1432],{"type":55,"value":1433},"    ...,\n",{"type":50,"tag":108,"props":1435,"children":1436},{"class":110,"line":168},[1437],{"type":50,"tag":108,"props":1438,"children":1439},{},[1440],{"type":55,"value":1441},"    backend_details={\n",{"type":50,"tag":108,"props":1443,"children":1444},{"class":110,"line":192},[1445],{"type":50,"tag":108,"props":1446,"children":1447},{},[1448],{"type":55,"value":1449},"        \"cloud_cred_id\": \"\u003CcloudCredId>\",\n",{"type":50,"tag":108,"props":1451,"children":1452},{"class":110,"line":213},[1453],{"type":50,"tag":108,"props":1454,"children":1455},{},[1456],{"type":55,"value":1457},"        \"workspace_group_id\": \"\u003CworkspaceGroupId>\",\n",{"type":50,"tag":108,"props":1459,"children":1460},{"class":110,"line":228},[1461],{"type":50,"tag":108,"props":1462,"children":1463},{},[1464],{"type":55,"value":1465},"    },\n",{"type":50,"tag":108,"props":1467,"children":1468},{"class":110,"line":237},[1469],{"type":50,"tag":108,"props":1470,"children":1471},{},[1472],{"type":55,"value":1473},")\n",{"type":50,"tag":78,"props":1475,"children":1477},{"id":1476},"multi-gpu-and-multi-node",[1478],{"type":55,"value":1479},"Multi-GPU and multi-node",{"type":50,"tag":58,"props":1481,"children":1482},{},[1483,1488],{"type":50,"tag":771,"props":1484,"children":1485},{},[1486],{"type":55,"value":1487},"Multi-node is not supported on Brev.",{"type":55,"value":1489}," Brev is instance-based — one job runs on one instance, with no cross-instance coordination.",{"type":50,"tag":58,"props":1491,"children":1492},{},[1493,1495,1500,1502,1508,1510,1516],{"type":55,"value":1494},"Multi-GPU ",{"type":50,"tag":771,"props":1496,"children":1497},{},[1498],{"type":55,"value":1499},"on a single instance",{"type":55,"value":1501}," is supported (instances available with up to 8× H100 \u002F A100 \u002F L40S). ",{"type":50,"tag":69,"props":1503,"children":1505},{"className":1504},[],[1506],{"type":55,"value":1507},"gpu_count",{"type":55,"value":1509}," maps to the GPU count on the instance; ",{"type":50,"tag":69,"props":1511,"children":1513},{"className":1512},[],[1514],{"type":55,"value":1515},"torchrun --nproc-per-node=N",{"type":55,"value":1517}," or PyTorch DDP work within the instance.",{"type":50,"tag":78,"props":1519,"children":1521},{"id":1520},"gpu-types",[1522],{"type":55,"value":1523},"GPU Types",{"type":50,"tag":58,"props":1525,"children":1526},{},[1527,1529,1535],{"type":55,"value":1528},"Available via ",{"type":50,"tag":69,"props":1530,"children":1532},{"className":1531},[],[1533],{"type":55,"value":1534},"brev search",{"type":55,"value":1408},{"type":50,"tag":1120,"props":1537,"children":1538},{},[1539,1544],{"type":50,"tag":871,"props":1540,"children":1541},{},[1542],{"type":55,"value":1543},"L40S, A100 80GB, H100 (availability varies by provider)",{"type":50,"tag":871,"props":1545,"children":1546},{},[1547,1549,1555,1557,1563],{"type":55,"value":1548},"Use ",{"type":50,"tag":69,"props":1550,"children":1552},{"className":1551},[],[1553],{"type":55,"value":1554},"--gpu-name",{"type":55,"value":1556}," to filter, ",{"type":50,"tag":69,"props":1558,"children":1560},{"className":1559},[],[1561],{"type":55,"value":1562},"--min-vram",{"type":55,"value":1564}," for memory requirements",{"type":50,"tag":78,"props":1566,"children":1568},{"id":1567},"storage",[1569],{"type":55,"value":1570},"Storage",{"type":50,"tag":58,"props":1572,"children":1573},{},[1574,1576,1582],{"type":55,"value":1575},"No shared NFS\u002FLustre. All data flows through S3 via the script_runner's fsspec integration. Instance-local disk at ",{"type":50,"tag":69,"props":1577,"children":1579},{"className":1578},[],[1580],{"type":55,"value":1581},"~\u002F",{"type":55,"value":1583}," persists across stop\u002Fstart but not across delete\u002Fcreate.",{"type":50,"tag":78,"props":1585,"children":1587},{"id":1586},"docker-on-brev",[1588],{"type":55,"value":1589},"Docker on Brev",{"type":50,"tag":58,"props":1591,"children":1592},{},[1593],{"type":55,"value":1594},"VM Mode instances have Docker pre-installed. For TAO container images:",{"type":50,"tag":97,"props":1596,"children":1598},{"className":99,"code":1597,"language":101,"meta":102,"style":102},"# NGC auth (one-time per instance)\nbrev exec \u003Cinstance> -- docker login nvcr.io -u '$oauthtoken' -p \u003CNGC_KEY>\n\n# Run a TAO training job\nbrev exec \u003Cinstance> -- docker run --gpus all --rm \\\n  -v ~\u002Fdata:\u002Fdata \\\n  nvcr.io\u002Fnvidia\u002Ftao\u002Ftao-toolkit:6.26.3-pyt \\\n  visual_changenet train -e \u002Fdata\u002Fspec.yaml\n",[1599],{"type":50,"tag":69,"props":1600,"children":1601},{"__ignoreMap":102},[1602,1610,1700,1707,1715,1774,1791,1803],{"type":50,"tag":108,"props":1603,"children":1604},{"class":110,"line":111},[1605],{"type":50,"tag":108,"props":1606,"children":1607},{"style":115},[1608],{"type":55,"value":1609},"# NGC auth (one-time per instance)\n",{"type":50,"tag":108,"props":1611,"children":1612},{"class":110,"line":121},[1613,1617,1622,1626,1631,1636,1640,1645,1650,1654,1659,1664,1668,1673,1677,1682,1686,1691,1696],{"type":50,"tag":108,"props":1614,"children":1615},{"style":260},[1616],{"type":55,"value":45},{"type":50,"tag":108,"props":1618,"children":1619},{"style":131},[1620],{"type":55,"value":1621}," exec",{"type":50,"tag":108,"props":1623,"children":1624},{"style":142},[1625],{"type":55,"value":1242},{"type":50,"tag":108,"props":1627,"children":1628},{"style":131},[1629],{"type":55,"value":1630},"instanc",{"type":50,"tag":108,"props":1632,"children":1633},{"style":386},[1634],{"type":55,"value":1635},"e",{"type":50,"tag":108,"props":1637,"children":1638},{"style":142},[1639],{"type":55,"value":1257},{"type":50,"tag":108,"props":1641,"children":1642},{"style":131},[1643],{"type":55,"value":1644}," --",{"type":50,"tag":108,"props":1646,"children":1647},{"style":131},[1648],{"type":55,"value":1649}," docker",{"type":50,"tag":108,"props":1651,"children":1652},{"style":131},[1653],{"type":55,"value":418},{"type":50,"tag":108,"props":1655,"children":1656},{"style":131},[1657],{"type":55,"value":1658}," nvcr.io",{"type":50,"tag":108,"props":1660,"children":1661},{"style":131},[1662],{"type":55,"value":1663}," -u",{"type":50,"tag":108,"props":1665,"children":1666},{"style":142},[1667],{"type":55,"value":1335},{"type":50,"tag":108,"props":1669,"children":1670},{"style":131},[1671],{"type":55,"value":1672},"$oauthtoken",{"type":50,"tag":108,"props":1674,"children":1675},{"style":142},[1676],{"type":55,"value":1345},{"type":50,"tag":108,"props":1678,"children":1679},{"style":131},[1680],{"type":55,"value":1681}," -p",{"type":50,"tag":108,"props":1683,"children":1684},{"style":142},[1685],{"type":55,"value":1242},{"type":50,"tag":108,"props":1687,"children":1688},{"style":131},[1689],{"type":55,"value":1690},"NGC_KE",{"type":50,"tag":108,"props":1692,"children":1693},{"style":386},[1694],{"type":55,"value":1695},"Y",{"type":50,"tag":108,"props":1697,"children":1698},{"style":142},[1699],{"type":55,"value":1287},{"type":50,"tag":108,"props":1701,"children":1702},{"class":110,"line":168},[1703],{"type":50,"tag":108,"props":1704,"children":1705},{"emptyLinePlaceholder":241},[1706],{"type":55,"value":244},{"type":50,"tag":108,"props":1708,"children":1709},{"class":110,"line":192},[1710],{"type":50,"tag":108,"props":1711,"children":1712},{"style":115},[1713],{"type":55,"value":1714},"# Run a TAO training job\n",{"type":50,"tag":108,"props":1716,"children":1717},{"class":110,"line":213},[1718,1722,1726,1730,1734,1738,1742,1746,1750,1755,1760,1765,1770],{"type":50,"tag":108,"props":1719,"children":1720},{"style":260},[1721],{"type":55,"value":45},{"type":50,"tag":108,"props":1723,"children":1724},{"style":131},[1725],{"type":55,"value":1621},{"type":50,"tag":108,"props":1727,"children":1728},{"style":142},[1729],{"type":55,"value":1242},{"type":50,"tag":108,"props":1731,"children":1732},{"style":131},[1733],{"type":55,"value":1630},{"type":50,"tag":108,"props":1735,"children":1736},{"style":386},[1737],{"type":55,"value":1635},{"type":50,"tag":108,"props":1739,"children":1740},{"style":142},[1741],{"type":55,"value":1257},{"type":50,"tag":108,"props":1743,"children":1744},{"style":131},[1745],{"type":55,"value":1644},{"type":50,"tag":108,"props":1747,"children":1748},{"style":131},[1749],{"type":55,"value":1649},{"type":50,"tag":108,"props":1751,"children":1752},{"style":131},[1753],{"type":55,"value":1754}," run",{"type":50,"tag":108,"props":1756,"children":1757},{"style":131},[1758],{"type":55,"value":1759}," --gpus",{"type":50,"tag":108,"props":1761,"children":1762},{"style":131},[1763],{"type":55,"value":1764}," all",{"type":50,"tag":108,"props":1766,"children":1767},{"style":131},[1768],{"type":55,"value":1769}," --rm",{"type":50,"tag":108,"props":1771,"children":1772},{"style":386},[1773],{"type":55,"value":1212},{"type":50,"tag":108,"props":1775,"children":1776},{"class":110,"line":228},[1777,1782,1787],{"type":50,"tag":108,"props":1778,"children":1779},{"style":131},[1780],{"type":55,"value":1781},"  -v",{"type":50,"tag":108,"props":1783,"children":1784},{"style":131},[1785],{"type":55,"value":1786}," ~\u002Fdata:\u002Fdata",{"type":50,"tag":108,"props":1788,"children":1789},{"style":386},[1790],{"type":55,"value":1212},{"type":50,"tag":108,"props":1792,"children":1793},{"class":110,"line":237},[1794,1799],{"type":50,"tag":108,"props":1795,"children":1796},{"style":131},[1797],{"type":55,"value":1798},"  nvcr.io\u002Fnvidia\u002Ftao\u002Ftao-toolkit:6.26.3-pyt",{"type":50,"tag":108,"props":1800,"children":1801},{"style":386},[1802],{"type":55,"value":1212},{"type":50,"tag":108,"props":1804,"children":1805},{"class":110,"line":247},[1806,1811,1816,1821],{"type":50,"tag":108,"props":1807,"children":1808},{"style":131},[1809],{"type":55,"value":1810},"  visual_changenet",{"type":50,"tag":108,"props":1812,"children":1813},{"style":131},[1814],{"type":55,"value":1815}," train",{"type":50,"tag":108,"props":1817,"children":1818},{"style":131},[1819],{"type":55,"value":1820}," -e",{"type":50,"tag":108,"props":1822,"children":1823},{"style":131},[1824],{"type":55,"value":1825}," \u002Fdata\u002Fspec.yaml\n",{"type":50,"tag":929,"props":1827,"children":1829},{"id":1828},"wait-for-instance-readiness-before-the-first-brev-exec",[1830,1832],{"type":55,"value":1831},"Wait for instance readiness before the first ",{"type":50,"tag":69,"props":1833,"children":1835},{"className":1834},[],[1836],{"type":55,"value":74},{"type":50,"tag":58,"props":1838,"children":1839},{},[1840,1842,1848,1850,1855,1857,1863,1865,1871],{"type":55,"value":1841},"A freshly created instance reports ",{"type":50,"tag":69,"props":1843,"children":1845},{"className":1844},[],[1846],{"type":55,"value":1847},"RUNNING",{"type":55,"value":1849}," long before sshd, hostname\nresolution, and the user shell are ready. The first ",{"type":50,"tag":69,"props":1851,"children":1853},{"className":1852},[],[1854],{"type":55,"value":74},{"type":55,"value":1856}," against an\nunsettled instance fails with ",{"type":50,"tag":69,"props":1858,"children":1860},{"className":1859},[],[1861],{"type":55,"value":1862},"hostname not resolvable",{"type":55,"value":1864},",\n",{"type":50,"tag":69,"props":1866,"children":1868},{"className":1867},[],[1869],{"type":55,"value":1870},"Connection refused",{"type":55,"value":1872},", or a silent timeout. Always poll until a trivial exec\nsucceeds before issuing real work:",{"type":50,"tag":97,"props":1874,"children":1876},{"className":99,"code":1875,"language":101,"meta":102,"style":102},"# Wait up to 5 minutes for shell readiness — covers the SSH bring-up window.\nfor i in $(seq 1 60); do\n  brev exec \u003Cinstance> -- true >\u002Fdev\u002Fnull 2>&1 && break\n  sleep 5\ndone\nbrev exec \u003Cinstance> -- true >\u002Fdev\u002Fnull 2>&1 || {\n  echo \"instance \u003Cinstance> never became exec-ready\"; exit 1;\n}\n",[1877],{"type":50,"tag":69,"props":1878,"children":1879},{"__ignoreMap":102},[1880,1888,1936,1993,2006,2014,2069,2108],{"type":50,"tag":108,"props":1881,"children":1882},{"class":110,"line":111},[1883],{"type":50,"tag":108,"props":1884,"children":1885},{"style":115},[1886],{"type":55,"value":1887},"# Wait up to 5 minutes for shell readiness — covers the SSH bring-up window.\n",{"type":50,"tag":108,"props":1889,"children":1890},{"class":110,"line":121},[1891,1896,1901,1906,1911,1916,1921,1926,1931],{"type":50,"tag":108,"props":1892,"children":1893},{"style":366},[1894],{"type":55,"value":1895},"for",{"type":50,"tag":108,"props":1897,"children":1898},{"style":386},[1899],{"type":55,"value":1900}," i ",{"type":50,"tag":108,"props":1902,"children":1903},{"style":366},[1904],{"type":55,"value":1905},"in",{"type":50,"tag":108,"props":1907,"children":1908},{"style":142},[1909],{"type":55,"value":1910}," $(",{"type":50,"tag":108,"props":1912,"children":1913},{"style":260},[1914],{"type":55,"value":1915},"seq",{"type":50,"tag":108,"props":1917,"children":1918},{"style":222},[1919],{"type":55,"value":1920}," 1",{"type":50,"tag":108,"props":1922,"children":1923},{"style":222},[1924],{"type":55,"value":1925}," 60",{"type":50,"tag":108,"props":1927,"children":1928},{"style":142},[1929],{"type":55,"value":1930},");",{"type":50,"tag":108,"props":1932,"children":1933},{"style":366},[1934],{"type":55,"value":1935}," do\n",{"type":50,"tag":108,"props":1937,"children":1938},{"class":110,"line":168},[1939,1943,1947,1951,1955,1959,1963,1967,1972,1976,1980,1984,1988],{"type":50,"tag":108,"props":1940,"children":1941},{"style":260},[1942],{"type":55,"value":413},{"type":50,"tag":108,"props":1944,"children":1945},{"style":131},[1946],{"type":55,"value":1621},{"type":50,"tag":108,"props":1948,"children":1949},{"style":142},[1950],{"type":55,"value":1242},{"type":50,"tag":108,"props":1952,"children":1953},{"style":131},[1954],{"type":55,"value":1630},{"type":50,"tag":108,"props":1956,"children":1957},{"style":386},[1958],{"type":55,"value":1635},{"type":50,"tag":108,"props":1960,"children":1961},{"style":142},[1962],{"type":55,"value":1257},{"type":50,"tag":108,"props":1964,"children":1965},{"style":131},[1966],{"type":55,"value":1644},{"type":50,"tag":108,"props":1968,"children":1969},{"style":142},[1970],{"type":55,"value":1971}," true",{"type":50,"tag":108,"props":1973,"children":1974},{"style":142},[1975],{"type":55,"value":145},{"type":50,"tag":108,"props":1977,"children":1978},{"style":131},[1979],{"type":55,"value":150},{"type":50,"tag":108,"props":1981,"children":1982},{"style":142},[1983],{"type":55,"value":155},{"type":50,"tag":108,"props":1985,"children":1986},{"style":142},[1987],{"type":55,"value":594},{"type":50,"tag":108,"props":1989,"children":1990},{"style":366},[1991],{"type":55,"value":1992}," break\n",{"type":50,"tag":108,"props":1994,"children":1995},{"class":110,"line":192},[1996,2001],{"type":50,"tag":108,"props":1997,"children":1998},{"style":260},[1999],{"type":55,"value":2000},"  sleep",{"type":50,"tag":108,"props":2002,"children":2003},{"style":222},[2004],{"type":55,"value":2005}," 5\n",{"type":50,"tag":108,"props":2007,"children":2008},{"class":110,"line":213},[2009],{"type":50,"tag":108,"props":2010,"children":2011},{"style":366},[2012],{"type":55,"value":2013},"done\n",{"type":50,"tag":108,"props":2015,"children":2016},{"class":110,"line":228},[2017,2021,2025,2029,2033,2037,2041,2045,2049,2053,2057,2061,2065],{"type":50,"tag":108,"props":2018,"children":2019},{"style":260},[2020],{"type":55,"value":45},{"type":50,"tag":108,"props":2022,"children":2023},{"style":131},[2024],{"type":55,"value":1621},{"type":50,"tag":108,"props":2026,"children":2027},{"style":142},[2028],{"type":55,"value":1242},{"type":50,"tag":108,"props":2030,"children":2031},{"style":131},[2032],{"type":55,"value":1630},{"type":50,"tag":108,"props":2034,"children":2035},{"style":386},[2036],{"type":55,"value":1635},{"type":50,"tag":108,"props":2038,"children":2039},{"style":142},[2040],{"type":55,"value":1257},{"type":50,"tag":108,"props":2042,"children":2043},{"style":131},[2044],{"type":55,"value":1644},{"type":50,"tag":108,"props":2046,"children":2047},{"style":142},[2048],{"type":55,"value":1971},{"type":50,"tag":108,"props":2050,"children":2051},{"style":142},[2052],{"type":55,"value":145},{"type":50,"tag":108,"props":2054,"children":2055},{"style":131},[2056],{"type":55,"value":150},{"type":50,"tag":108,"props":2058,"children":2059},{"style":142},[2060],{"type":55,"value":155},{"type":50,"tag":108,"props":2062,"children":2063},{"style":142},[2064],{"type":55,"value":160},{"type":50,"tag":108,"props":2066,"children":2067},{"style":142},[2068],{"type":55,"value":165},{"type":50,"tag":108,"props":2070,"children":2071},{"class":110,"line":237},[2072,2076,2080,2085,2089,2094,2099,2103],{"type":50,"tag":108,"props":2073,"children":2074},{"style":125},[2075],{"type":55,"value":174},{"type":50,"tag":108,"props":2077,"children":2078},{"style":142},[2079],{"type":55,"value":179},{"type":50,"tag":108,"props":2081,"children":2082},{"style":131},[2083],{"type":55,"value":2084},"instance \u003Cinstance> never became exec-ready",{"type":50,"tag":108,"props":2086,"children":2087},{"style":142},[2088],{"type":55,"value":394},{"type":50,"tag":108,"props":2090,"children":2091},{"style":142},[2092],{"type":55,"value":2093},";",{"type":50,"tag":108,"props":2095,"children":2096},{"style":125},[2097],{"type":55,"value":2098}," exit",{"type":50,"tag":108,"props":2100,"children":2101},{"style":222},[2102],{"type":55,"value":1920},{"type":50,"tag":108,"props":2104,"children":2105},{"style":142},[2106],{"type":55,"value":2107},";\n",{"type":50,"tag":108,"props":2109,"children":2110},{"class":110,"line":247},[2111],{"type":50,"tag":108,"props":2112,"children":2113},{"style":142},[2114],{"type":55,"value":234},{"type":50,"tag":929,"props":2116,"children":2118},{"id":2117},"brev-exec-timeout-for-cold-start-workloads",[2119,2124],{"type":50,"tag":69,"props":2120,"children":2122},{"className":2121},[],[2123],{"type":55,"value":74},{"type":55,"value":2125}," timeout for cold-start workloads",{"type":50,"tag":58,"props":2127,"children":2128},{},[2129,2134,2136,2142,2144,2149,2151,2157],{"type":50,"tag":69,"props":2130,"children":2132},{"className":2131},[],[2133],{"type":55,"value":74},{"type":55,"value":2135}," inherits no default timeout, but anything that wraps it (the SDK\nhandler, CI step wrappers, ",{"type":50,"tag":69,"props":2137,"children":2139},{"className":2138},[],[2140],{"type":55,"value":2141},"timeout",{"type":55,"value":2143}," shell builtins) must allow time for both\nthe SSH bring-up window and the container pull on a fresh instance. Use\n",{"type":50,"tag":771,"props":2145,"children":2146},{},[2147],{"type":55,"value":2148},"≥ 600 s (10 min)",{"type":55,"value":2150}," for the first exec on a new instance; the previous\n60–120 s default truncates remote startup and surfaces as a spurious\n",{"type":50,"tag":69,"props":2152,"children":2154},{"className":2153},[],[2155],{"type":55,"value":2156},"exec failed",{"type":55,"value":2158}," even though the remote command is still progressing.",{"type":50,"tag":78,"props":2160,"children":2162},{"id":2161},"cleanup",[2163],{"type":55,"value":2164},"Cleanup",{"type":50,"tag":97,"props":2166,"children":2168},{"className":99,"code":2167,"language":101,"meta":102,"style":102},"brev delete \u003Cinstance>      # plain delete — no flags\n",[2169],{"type":50,"tag":69,"props":2170,"children":2171},{"__ignoreMap":102},[2172],{"type":50,"tag":108,"props":2173,"children":2174},{"class":110,"line":111},[2175,2179,2184,2188,2192,2196,2200],{"type":50,"tag":108,"props":2176,"children":2177},{"style":260},[2178],{"type":55,"value":45},{"type":50,"tag":108,"props":2180,"children":2181},{"style":131},[2182],{"type":55,"value":2183}," delete",{"type":50,"tag":108,"props":2185,"children":2186},{"style":142},[2187],{"type":55,"value":1242},{"type":50,"tag":108,"props":2189,"children":2190},{"style":131},[2191],{"type":55,"value":1630},{"type":50,"tag":108,"props":2193,"children":2194},{"style":386},[2195],{"type":55,"value":1635},{"type":50,"tag":108,"props":2197,"children":2198},{"style":142},[2199],{"type":55,"value":1257},{"type":50,"tag":108,"props":2201,"children":2202},{"style":115},[2203],{"type":55,"value":2204},"      # plain delete — no flags\n",{"type":50,"tag":58,"props":2206,"children":2207},{},[2208,2210,2216,2218,2224,2226,2232,2233,2239],{"type":55,"value":2209},"The CLI does not accept ",{"type":50,"tag":69,"props":2211,"children":2213},{"className":2212},[],[2214],{"type":55,"value":2215},"--yes",{"type":55,"value":2217}," \u002F ",{"type":50,"tag":69,"props":2219,"children":2221},{"className":2220},[],[2222],{"type":55,"value":2223},"-y",{"type":55,"value":2225},"; passing it errors with\n",{"type":50,"tag":69,"props":2227,"children":2229},{"className":2228},[],[2230],{"type":55,"value":2231},"unknown flag: --yes",{"type":55,"value":817},{"type":50,"tag":69,"props":2234,"children":2236},{"className":2235},[],[2237],{"type":55,"value":2238},"brev delete \u003Cinstance>",{"type":55,"value":2240}," is already non-interactive on\nrecent CLIs, so no confirmation flag is needed.",{"type":50,"tag":78,"props":2242,"children":2244},{"id":2243},"error-patterns",[2245],{"type":55,"value":2246},"Error Patterns",{"type":50,"tag":58,"props":2248,"children":2249},{},[2250,2255,2257,2265],{"type":50,"tag":771,"props":2251,"children":2252},{},[2253],{"type":55,"value":2254},"brev CLI not found",{"type":55,"value":2256},": Install from ",{"type":50,"tag":2258,"props":2259,"children":2263},"a",{"href":2260,"rel":2261},"https:\u002F\u002Fdocs.nvidia.com\u002Fbrev\u002F",[2262],"nofollow",[2264],{"type":55,"value":2260},{"type":55,"value":1045},{"type":50,"tag":58,"props":2267,"children":2268},{},[2269,2286,2288,2293],{"type":50,"tag":771,"props":2270,"children":2271},{},[2272,2277,2279,2284],{"type":50,"tag":69,"props":2273,"children":2275},{"className":2274},[],[2276],{"type":55,"value":975},{"type":55,"value":2278}," returns auth EOF even with ",{"type":50,"tag":69,"props":2280,"children":2282},{"className":2281},[],[2283],{"type":55,"value":886},{"type":55,"value":2285}," set",{"type":55,"value":2287},": Headless shell\nhas no stdin for the interactive auth prompt. Run\n",{"type":50,"tag":69,"props":2289,"children":2291},{"className":2290},[],[2292],{"type":55,"value":950},{"type":55,"value":2294}," first, then retry. If the failure\npersists across a single retry, the token itself is stale — mint a fresh one.",{"type":50,"tag":58,"props":2296,"children":2297},{},[2298,2303,2305,2310,2312,2317],{"type":50,"tag":771,"props":2299,"children":2300},{},[2301],{"type":55,"value":2302},"Token expired",{"type":55,"value":2304},": Handler auto-refreshes via ",{"type":50,"tag":69,"props":2306,"children":2308},{"className":2307},[],[2309],{"type":55,"value":902},{"type":55,"value":2311},". If\npersistent, run ",{"type":50,"tag":69,"props":2313,"children":2315},{"className":2314},[],[2316],{"type":55,"value":920},{"type":55,"value":2318}," manually.",{"type":50,"tag":58,"props":2320,"children":2321},{},[2322,2348,2350,2356,2358,2364,2366,2371],{"type":50,"tag":771,"props":2323,"children":2324},{},[2325,2330,2332,2338,2340,2346],{"type":50,"tag":69,"props":2326,"children":2328},{"className":2327},[],[2329],{"type":55,"value":983},{"type":55,"value":2331}," rejected with placement error (",{"type":50,"tag":69,"props":2333,"children":2335},{"className":2334},[],[2336],{"type":55,"value":2337},"cloudCredId",{"type":55,"value":2339}," \u002F\n",{"type":50,"tag":69,"props":2341,"children":2343},{"className":2342},[],[2344],{"type":55,"value":2345},"workspaceGroupId",{"type":55,"value":2347}," required)",{"type":55,"value":2349},": Multi-credential or multi-workspace accounts\nmust pass ",{"type":50,"tag":69,"props":2351,"children":2353},{"className":2352},[],[2354],{"type":55,"value":2355},"--cloud-cred-id",{"type":55,"value":2357}," and\u002For ",{"type":50,"tag":69,"props":2359,"children":2361},{"className":2360},[],[2362],{"type":55,"value":2363},"--workspace-group-id",{"type":55,"value":2365},". See\n",{"type":50,"tag":2367,"props":2368,"children":2369},"em",{},[2370],{"type":55,"value":1171},{"type":55,"value":2372}," above.",{"type":50,"tag":58,"props":2374,"children":2375},{},[2376,2400,2402,2407,2409,2418],{"type":50,"tag":771,"props":2377,"children":2378},{},[2379,2384,2386,2391,2393,2398],{"type":50,"tag":69,"props":2380,"children":2382},{"className":2381},[],[2383],{"type":55,"value":74},{"type":55,"value":2385}," fails with ",{"type":50,"tag":69,"props":2387,"children":2389},{"className":2388},[],[2390],{"type":55,"value":1862},{"type":55,"value":2392}," or ",{"type":50,"tag":69,"props":2394,"children":2396},{"className":2395},[],[2397],{"type":55,"value":1870},{"type":55,"value":2399},"\nright after create",{"type":55,"value":2401},": Instance reports ",{"type":50,"tag":69,"props":2403,"children":2405},{"className":2404},[],[2406],{"type":55,"value":1847},{"type":55,"value":2408}," before sshd is up. Use the\nreadiness-wait loop in ",{"type":50,"tag":2367,"props":2410,"children":2411},{},[2412,2413],{"type":55,"value":1831},{"type":50,"tag":69,"props":2414,"children":2416},{"className":2415},[],[2417],{"type":55,"value":74},{"type":55,"value":2419}," before issuing the real command.",{"type":50,"tag":58,"props":2421,"children":2422},{},[2423,2435,2437,2442,2444,2454],{"type":50,"tag":771,"props":2424,"children":2425},{},[2426,2428,2433],{"type":55,"value":2427},"SDK exec timeout \u002F ",{"type":50,"tag":69,"props":2429,"children":2431},{"className":2430},[],[2432],{"type":55,"value":2156},{"type":55,"value":2434}," on a fresh instance",{"type":55,"value":2436},": The SDK's\n",{"type":50,"tag":69,"props":2438,"children":2440},{"className":2439},[],[2441],{"type":55,"value":74},{"type":55,"value":2443}," wrapper timed out before remote startup finished. Raise the\ntimeout to ≥ 600 s for cold-start runs (see ",{"type":50,"tag":2367,"props":2445,"children":2446},{},[2447,2452],{"type":50,"tag":69,"props":2448,"children":2450},{"className":2449},[],[2451],{"type":55,"value":74},{"type":55,"value":2453}," timeout for\ncold-start workloads",{"type":55,"value":2455},").",{"type":50,"tag":58,"props":2457,"children":2458},{},[2459,2474,2476,2481],{"type":50,"tag":771,"props":2460,"children":2461},{},[2462,2468,2469],{"type":50,"tag":69,"props":2463,"children":2465},{"className":2464},[],[2466],{"type":55,"value":2467},"brev delete --yes",{"type":55,"value":809},{"type":50,"tag":69,"props":2470,"children":2472},{"className":2471},[],[2473],{"type":55,"value":2231},{"type":55,"value":2475},": The CLI has no confirmation\nflag. Use plain ",{"type":50,"tag":69,"props":2477,"children":2479},{"className":2478},[],[2480],{"type":55,"value":2238},{"type":55,"value":1045},{"type":50,"tag":58,"props":2483,"children":2484},{},[2485,2490,2492,2497],{"type":50,"tag":771,"props":2486,"children":2487},{},[2488],{"type":55,"value":2489},"Instance stuck in provisioning",{"type":55,"value":2491},": Some GPU types have limited availability. Try a different ",{"type":50,"tag":69,"props":2493,"children":2495},{"className":2494},[],[2496],{"type":55,"value":1554},{"type":55,"value":2498}," or provider.",{"type":50,"tag":58,"props":2500,"children":2501},{},[2502,2507,2509,2515],{"type":50,"tag":771,"props":2503,"children":2504},{},[2505],{"type":55,"value":2506},"Docker pull fails on nvcr.io",{"type":55,"value":2508},": NGC_KEY not set or expired. Run ",{"type":50,"tag":69,"props":2510,"children":2512},{"className":2511},[],[2513],{"type":55,"value":2514},"docker login nvcr.io",{"type":55,"value":2516}," on the instance.",{"type":50,"tag":2518,"props":2519,"children":2520},"style",{},[2521],{"type":55,"value":2522},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":2524,"total":2626},[2525,2542,2554,2568,2580,2597,2612],{"slug":2526,"name":2526,"fn":2527,"description":2528,"org":2529,"tags":2530,"stars":23,"repoUrl":24,"updatedAt":2541},"accelerated-computing-cudf","accelerate data processing with cuDF","Official NVIDIA-authored guidance for NVIDIA cuDF GPU DataFrames, pandas acceleration, dask-cuDF, ETL, joins, groupby, CSV\u002FParquet I\u002FO, nullable semantics, and multi-GPU DataFrame workloads.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2531,2534,2537,2538],{"name":2532,"slug":2533,"type":15},"Data Analysis","data-analysis",{"name":2535,"slug":2536,"type":15},"Data Engineering","data-engineering",{"name":9,"slug":8,"type":15},{"name":2539,"slug":2540,"type":15},"Performance","performance","2026-07-14T05:28:43.176466",{"slug":2543,"name":2543,"fn":2544,"description":2545,"org":2546,"tags":2547,"stars":23,"repoUrl":24,"updatedAt":2553},"aiq-deploy","deploy and manage NVIDIA AI-Q infrastructure","Use when asked to install, deploy, run, validate, troubleshoot, or stop NVIDIA AI-Q Blueprint infrastructure.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2548,2549,2552],{"name":20,"slug":21,"type":15},{"name":2550,"slug":2551,"type":15},"Infrastructure","infrastructure",{"name":9,"slug":8,"type":15},"2026-07-14T05:29:06.667109",{"slug":2555,"name":2555,"fn":2556,"description":2557,"org":2558,"tags":2559,"stars":23,"repoUrl":24,"updatedAt":2567},"aiq-research","conduct deep research with AI-Q","Use when asked to run deep research or AI-Q research through a reachable NVIDIA AI-Q Blueprint backend.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2560,2563,2564],{"name":2561,"slug":2562,"type":15},"Agents","agents",{"name":9,"slug":8,"type":15},{"name":2565,"slug":2566,"type":15},"Research","research","2026-07-14T05:28:06.816956",{"slug":2569,"name":2569,"fn":2570,"description":2571,"org":2572,"tags":2573,"stars":23,"repoUrl":24,"updatedAt":2579},"amc-run-sample-calibration","run AMC sample dataset calibration","Run end-to-end calibration on the shipped sample dataset (sdg_08_2_sample_data_010926.zip) against a running AMC microservice. Use when user says 'test sample dataset', 'run sample calibration', 'verify AMC install', or 'launch and test'.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2574,2575,2576],{"name":2532,"slug":2533,"type":15},{"name":9,"slug":8,"type":15},{"name":2577,"slug":2578,"type":15},"Testing","testing","2026-07-17T05:29:03.913266",{"slug":2581,"name":2581,"fn":2582,"description":2583,"org":2584,"tags":2585,"stars":23,"repoUrl":24,"updatedAt":2596},"amc-run-video-calibration","calibrate video datasets with AutoMagicCalib","Calibrate a new dataset from pre-recorded video files via the AutoMagicCalib REST API. Use when user has local MP4s and says 'calibrate my videos', 'run AMC on these videos', or similar. For RTSP\u002Flive streams, use amc-run-rtsp-calibration instead.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2586,2589,2592,2593],{"name":2587,"slug":2588,"type":15},"Automation","automation",{"name":2590,"slug":2591,"type":15},"Imaging","imaging",{"name":9,"slug":8,"type":15},{"name":2594,"slug":2595,"type":15},"Video","video","2026-07-17T05:28:53.905004",{"slug":2598,"name":2598,"fn":2599,"description":2600,"org":2601,"tags":2602,"stars":23,"repoUrl":24,"updatedAt":2611},"amc-setup-calibration-stack","deploy AutoMagicCalib microservice with Docker","Launch AutoMagicCalib microservice and web UI from NGC release images via Docker Compose. Use when user says 'deploy auto calibration', 'launch auto calibration', 'launch AMC', 'start MS+UI', or 'set up auto-magic-calib'. Requires NGC API key.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2603,2604,2607,2608],{"name":20,"slug":21,"type":15},{"name":2605,"slug":2606,"type":15},"Docker","docker",{"name":9,"slug":8,"type":15},{"name":2609,"slug":2610,"type":15},"Operations","operations","2026-07-17T05:28:56.913999",{"slug":2613,"name":2613,"fn":2614,"description":2615,"org":2616,"tags":2617,"stars":23,"repoUrl":24,"updatedAt":2625},"cudaq-guide","develop quantum applications with CUDA-Q","CUDA-Q onboarding guide for installation, test programs, GPU simulation, QPU hardware, and quantum applications.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2618,2619,2622],{"name":9,"slug":8,"type":15},{"name":2620,"slug":2621,"type":15},"Quantum Computing","quantum-computing",{"name":2623,"slug":2624,"type":15},"Simulation","simulation","2026-07-14T05:26:58.898253",305,{"items":2628,"total":2778},[2629,2647,2662,2673,2685,2699,2712,2726,2737,2746,2760,2769],{"slug":2630,"name":2630,"fn":2631,"description":2632,"org":2633,"tags":2634,"stars":2644,"repoUrl":2645,"updatedAt":2646},"nemoclaw-user-guide","retrieve NemoClaw documentation and configuration","Guides human users' AI agents to the NemoClaw docs MCP server and canonical Fern documentation in Markdown form. Use when users ask how to install, configure, operate, troubleshoot, secure, or learn NemoClaw with an AI coding assistant. Trigger keywords - nemoclaw docs, use nemoclaw with ai agent, nemoclaw mcp docs, nemoclaw install help, nemoclaw quickstart, nemoclaw markdown docs, llms.txt, agent skills.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2635,2638,2641],{"name":2636,"slug":2637,"type":15},"Documentation","documentation",{"name":2639,"slug":2640,"type":15},"MCP","mcp",{"name":2642,"slug":2643,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":2648,"name":2648,"fn":2649,"description":2650,"org":2651,"tags":2652,"stars":2659,"repoUrl":2660,"updatedAt":2661},"mcore-build-and-dependency","manage Megatron-LM development environments","Container-based dev environment setup and dependency management for Megatron-LM. Covers acquiring and launching the CI container, uv package management, and updating uv.lock.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2653,2656,2657],{"name":2654,"slug":2655,"type":15},"Containers","containers",{"name":20,"slug":21,"type":15},{"name":2658,"slug":1413,"type":15},"Python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":2663,"name":2663,"fn":2664,"description":2665,"org":2666,"tags":2667,"stars":2659,"repoUrl":2660,"updatedAt":2672},"mcore-bump-base-image","update NVIDIA PyTorch base images","Bump the NVIDIA PyTorch base image (`nvcr.io\u002Fnvidia\u002Fpytorch:YY.MM-py3`) used by Megatron-LM CI. Covers the two pin sites (GitHub CI in `docker\u002F.ngc_version.dev` and GitLab CI in `.gitlab\u002Fstages\u002F01.build.yml`), the post-bump CI loop (re-run functional tests, refresh golden values, mark broken tests), and the gotchas that bit PRs",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2668,2671],{"name":2669,"slug":2670,"type":15},"CI\u002FCD","ci-cd",{"name":20,"slug":21,"type":15},"2026-07-14T05:25:59.97109",{"slug":2674,"name":2674,"fn":2675,"description":2676,"org":2677,"tags":2678,"stars":2659,"repoUrl":2660,"updatedAt":2684},"mcore-cicd","manage CI\u002FCD pipelines for Megatron-LM","CI\u002FCD reference for Megatron-LM. Covers CI pipeline structure, PR scope labels, triggering internal GitLab CI (which force-pushes the current branch to a pull-request\u002FBRANCH ref — always dry-run and verify the destination first; never run against shared or protected branches), and CI failure investigation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2679,2680,2681],{"name":2669,"slug":2670,"type":15},{"name":20,"slug":21,"type":15},{"name":2682,"slug":2683,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":2686,"name":2686,"fn":2687,"description":2688,"org":2689,"tags":2690,"stars":2659,"repoUrl":2660,"updatedAt":2698},"mcore-create-issue","investigate CI failures and create issues","Investigate a failing GitHub Actions run or job and create a GitHub issue for the failure.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2691,2694,2695],{"name":2692,"slug":2693,"type":15},"Debugging","debugging",{"name":2682,"slug":2683,"type":15},{"name":2696,"slug":2697,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":2700,"name":2700,"fn":2701,"description":2702,"org":2703,"tags":2704,"stars":2659,"repoUrl":2660,"updatedAt":2711},"mcore-linting-and-formatting","lint and format Megatron-LM code","Linting and formatting for Megatron-LM. Covers running autoformat.sh, tools (ruff, black, isort, pylint, mypy), and code style rules.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2705,2708],{"name":2706,"slug":2707,"type":15},"Best Practices","best-practices",{"name":2709,"slug":2710,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":2713,"name":2713,"fn":2714,"description":2715,"org":2716,"tags":2717,"stars":2659,"repoUrl":2660,"updatedAt":2725},"mcore-migrate-gpt-to-hybrid","migrate Megatron-LM models to HybridModel","Migration guide for moving Megatron Core GPTModel checkpoints, model providers, training commands, and layer mappings to HybridModel.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2718,2721,2724],{"name":2719,"slug":2720,"type":15},"Machine Learning","machine-learning",{"name":2722,"slug":2723,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":2727,"name":2727,"fn":2728,"description":2729,"org":2730,"tags":2731,"stars":2659,"repoUrl":2660,"updatedAt":2736},"mcore-onboard-gb200-1node-tests","onboard functional tests for GB200","Onboard 1-node GitHub MR functional tests for GB200 from existing mr-scoped 2-node tests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2732,2735],{"name":2733,"slug":2734,"type":15},"QA","qa",{"name":2577,"slug":2578,"type":15},"2026-07-14T05:25:53.673039",{"slug":2738,"name":2738,"fn":2739,"description":2740,"org":2741,"tags":2742,"stars":2659,"repoUrl":2660,"updatedAt":2745},"mcore-run-on-slurm","launch distributed training jobs on SLURM","How to launch distributed Megatron-LM training jobs on a SLURM cluster. Covers a minimal sbatch skeleton, environment-variable setup for torch.distributed.run, CUDA_DEVICE_MAX_CONNECTIONS rules across hardware and parallelism modes, container conventions, monitoring, and per-rank failure diagnosis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2743,2744],{"name":20,"slug":21,"type":15},{"name":2550,"slug":2551,"type":15},"2026-07-14T05:25:49.362534",{"slug":2747,"name":2747,"fn":2748,"description":2749,"org":2750,"tags":2751,"stars":2659,"repoUrl":2660,"updatedAt":2759},"mcore-split-pr","split pull requests to reduce review load","Split a PR into multiple PRs to reduce the number of required CODEOWNERS reviewer groups.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2752,2755,2756],{"name":2753,"slug":2754,"type":15},"Code Review","code-review",{"name":2682,"slug":2683,"type":15},{"name":2757,"slug":2758,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":2761,"name":2761,"fn":2762,"description":2763,"org":2764,"tags":2765,"stars":2659,"repoUrl":2660,"updatedAt":2768},"mcore-testing","run and manage Megatron-LM tests","Test system for Megatron-LM. Covers test layout, recipe YAML structure, adding and running unit and functional tests, golden values, marker filters, and CI parity.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2766,2767],{"name":2733,"slug":2734,"type":15},{"name":2577,"slug":2578,"type":15},"2026-07-14T05:25:54.928983",{"slug":2770,"name":2770,"fn":2771,"description":2772,"org":2773,"tags":2774,"stars":2659,"repoUrl":2660,"updatedAt":2777},"nightly-sync","manage nightly main-to-dev sync workflows","Domain knowledge for the nightly main-to-dev sync workflow. Covers merge strategy, CI architecture, failure investigation, and known issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2775,2776],{"name":2587,"slug":2588,"type":15},{"name":2669,"slug":2670,"type":15},"2026-07-30T05:29:03.275638",496]