[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-tao-launch-workflow":3,"mdc-s4a319-key":34,"related-repo-nvidia-tao-launch-workflow":1741,"related-org-nvidia-tao-launch-workflow":1845},{"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-launch-workflow","launch NVIDIA TAO workflows","Shared launch intake for any TAO workflow or action. Use when the user wants to run TAO AutoML, train, evaluate, infer, export, generate TensorRT engines, or launch DEFT\u002Fworkflow jobs on an execution platform.",{"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,20],{"name":13,"slug":14,"type":15},"Deep Learning","deep-learning","tag",{"name":17,"slug":18,"type":15},"Automation","automation",{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},"Computer Vision","computer-vision",2473,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fskills","2026-07-14T05:29:34.489629","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-launch-workflow","---\nname: tao-launch-workflow\ndescription: >-\n  Shared launch intake for any TAO workflow or action. Use when the user wants\n  to run TAO AutoML, train, evaluate, infer, export, generate TensorRT engines,\n  or launch DEFT\u002Fworkflow jobs on an execution platform.\nlicense: Apache-2.0\ncompatibility: Requires the packaged TAO skill bank helper scripts.\nmetadata:\n  author: NVIDIA Corporation\n  version: \"0.1.0\"\nallowed-tools: Read Bash\ntags:\n- tao\n- workflow\n- launch\n---\n\n# TAO Workflow Launch Intake\n\nUse this skill before launching any TAO workflow or model action.\n\n## Quick Start\n\nRun the platform helper, ask for platform and monitoring preferences, then run\nthe selected platform detail helper before asking for credentials.\n\n## Non-Negotiable Launch Gate\n\nThis gate is model-agnostic. Apply it to every TAO model, data action, and\napplication workflow before launching side-effecting work.\n\nDo **not** create runner scripts, launch scripts, compatibility shims,\nworkspace folders, state files, logs, or dependency-install side effects until\nthe launch preflight passes.\n\nPreflight passes only after all of these are true:\n\n1. The execution platform is selected from the packaged platform helper.\n2. Platform credentials and required credential groups are satisfied.\n3. Model-specific credentials are satisfied.\n4. The default container image is resolved from packaged model\u002Faction metadata,\n   shown to the user, and either confirmed or replaced by an explicit\n   `image=\u003Coverride>`.\n5. The platform access check succeeds from the launch host.\n6. Dataset inputs are mapped to concrete spec keys and verified from the\n   selected platform's point of view.\n7. Required compute shape fields from the model\u002Fworkflow skill are known.\n8. Required local tools for the selected data\u002Fplatform path are present, or the\n   user approved installing the smallest missing dependency and preflight was\n   rerun.\n9. A launch review with image, platform, datasets, compute shape, expected\n   runtime, and any generated\u002Fdefault configuration changes has been shown and\n   confirmed by the user. For AutoML, the launch review must explicitly state\n   recommendation count\u002Fbudget, max concurrency, algorithm, metric, direction,\n   and searched parameters\u002Franges even when defaults are used.\n\nIf any item is missing, ask for the missing input and stop before generating\nartifacts. This applies to AutoML, normal train\u002Feval\u002Finfer\u002Fexport\u002FTRT, and\nDEFT\u002Fapplication workflows.\n\nWhen preflight work clears a blocker, keep track of the original user request.\nAfter the fix, rerun the relevant preflight and continue toward that request;\ndo not stop at \"blocker fixed\" unless the user explicitly asked only for the\nrepair.\n\n## Initial Questions\n\nAfter the user confirms what they want to do, ask for the execution platform\nusing the packaged helper. Do not scan platform docs, skill folders, or config\nfolders to build the choices.\n\n```bash\n${TAO_SKILL_BANK_PATH:-~\u002Ftao-skills-external}\u002Fscripts\u002Flist_tao_platforms.py \\\n  --skill-bank ${TAO_SKILL_BANK_PATH:-~\u002Ftao-skills-external} --format text\n```\n\nThen ask:\n\n- Which supported platform should run this workflow?\n- Should I monitor the run in this chat? Monitoring means I keep polling the\n  backend\u002Fjob logs after launch and report progress until the job finishes,\n  fails, or you ask me to stop, even if the job stays queued for hours or days.\n  If disabled, I launch the job, give you the job id\u002Flog path, and stop\n  polling. Default: monitor in chat.\n- How often should I post status? Default: every 5 minutes. Use 1-2 minutes for\n  smoke tests, 5 minutes for normal training, or 10-15 minutes for long runs.\n\nUse `long_running_enabled=true` and `status_interval_minutes=5` when the user\naccepts the defaults.\n\nWhen monitoring is enabled, do not send a final summary just because several\npolls have elapsed or the job is still `PENDING`. Keep the turn attached and\nemit status every `status_interval_minutes` until a terminal state or explicit\nuser stop\u002Fdetach request. If the runtime environment cannot keep the chat turn\nopen, say that clearly and leave a durable watcher\u002Flog path; do not imply that\nchat updates will continue after the turn ends.\n\nFinal-answer rule: a `final` response ends chat-side monitoring. While\n`long_running_enabled=true` and any launched job is non-terminal, status\nmessages must be sent as in-progress updates and the agent must continue\npolling. Only send a final response when the workflow reaches terminal state,\nthe user explicitly asks to detach\u002Fstop monitoring, or the runtime genuinely\ncannot keep the turn open; in that last case, say it is a runtime limitation\nand provide the exact durable status command\u002Flog path.\n\n## Missing-Input Prompt Shape\n\nWhen asking for launch inputs, include concrete examples and both dataset input\nmodes. Do not ask only for \"dataset root\".\n\nUse this structure and adapt spec keys to the selected model\u002Faction:\n\n```text\nI need these launch inputs before I can create specs or runner files:\n\n1. Execution platform: brev, slurm, local-docker, or kubernetes.\n\n2. Dataset inputs. You can provide either mode:\n   A) Root mode: give train\u002Feval roots and I map required files automatically.\n      Example Cosmos-RL:\n      train_root=\u002Flustre\u002Ffsw\u002F...\u002Fcosmos\u002Ftrain\n      -> custom.train_dataset.annotation_path=train_root\u002Fannotations.json\n      -> custom.train_dataset.media_path=train_root\n   B) Direct spec mode: give the exact config\u002Fspec parameters yourself.\n      Example:\n      custom.train_dataset.annotation_path=\u002Flustre\u002Ffsw\u002F...\u002Ftrain_annotations.json\n      custom.train_dataset.media_path=\u002Flustre\u002Ffsw\u002F...\u002Fvideos_train.tar.gz\n      custom.val_dataset.annotation_path=\u002Flustre\u002Ffsw\u002F...\u002Feval_annotations.json\n      custom.val_dataset.media_path=\u002Flustre\u002Ffsw\u002F...\u002Feval_videos\u002F\n\n   Platform examples:\n   - SLURM\u002FLustre: \u002Flustre\u002Ffsw\u002F...\u002Fdata\u002Ftrain or lustre:\u002F\u002F\u002Flustre\u002Ffsw\u002F...\u002Fdata\u002Ftrain\n   - Brev\u002FKubernetes: s3:\u002F\u002Fbucket\u002Fpath\u002Ftrain and s3:\u002F\u002Fbucket\u002Fpath\u002Feval\n   - local-docker: \u002Fdata\u002Ftao\u002F\u003Cmodel>\u002Ftrain or file:\u002F\u002F\u002Fdata\u002Ftao\u002F\u003Cmodel>\u002Feval\n\n3. Container image. I will resolve the default from packaged model metadata and\n   show it before launch, for example:\n   default image for \u003Cmodel>\u002F\u003Caction>: \u003Cresolved container image>\n   Use this image, or provide image=\u003Coverride> to pin a different TAO build.\n\n4. Compute shape required by the model, for example GPUs\u002Fnodes.\n\n5. Required credentials from platform\u002Fmodel docs, for example HF_TOKEN for\n   gated Hugging Face models.\n\n6. Monitoring preference. By default I monitor in this chat and post progress\n   every 5 minutes; choose 1-2 minutes for smoke tests or 10-15 minutes for\n   long training.\n```\n\n## Container Image Confirmation\n\nBefore creating specs, runner scripts, workspaces, logs, state files, or\nsubmitting a job, resolve the image for the selected model\u002Faction:\n\n```bash\n${TAO_SKILL_BANK_PATH:-~\u002Ftao-skills-external}\u002Fscripts\u002Fresolve_tao_image.py \\\n  --skill-bank ${TAO_SKILL_BANK_PATH:-~\u002Ftao-skills-external} \\\n  --model \u003Cnetwork> --action \u003Caction> --format text\n```\n\nIf the helper is unavailable, read `skills\u002Fmodels\u002F\u003Cnetwork>\u002Fconfig.json` through\n`SkillBank().get_model_config(network_arch)`. Resolve image fields in this\norder:\n\n1. `actions.\u003Caction>.container_image`\n2. `actions.\u003Caction>.image`\n3. top-level `container_image`\n4. top-level `image`\n\nShow the exact image and ask:\n\n```text\nContainer image for \u003Cnetwork>\u002F\u003Caction>:\ndefault=\u003Cresolved image>\n\nUse this image, or provide image=\u003Coverride>?\n```\n\nIf the user accepts, pass the resolved image as the job `image`. If the user\noverrides, require a non-empty image reference and pass that value instead.\nDo not silently launch on the default image. This confirmation applies to\ntraining, AutoML recommendations, evaluation, inference, export, TensorRT\nengine generation, and application workflows that submit TAO containers.\n\n## Credential Filtering\n\nAfter the user chooses a platform, get the credential list for only that\nplatform:\n\n```bash\n${TAO_SKILL_BANK_PATH:-~\u002Ftao-skills-external}\u002Fscripts\u002Flist_tao_platforms.py \\\n  --skill-bank ${TAO_SKILL_BANK_PATH:-~\u002Ftao-skills-external} \\\n  --platform \u003Cplatform> --format text\n```\n\nAsk only for credentials returned by that command, plus model-specific\ncredentials from the selected model skill. Do not ask for Brev credentials on\nSLURM, Kubernetes, or local Docker. Do not ask for SLURM credentials on Brev,\nKubernetes, or local Docker. Ask S3 credentials only when the selected\nplatform and the dataset\u002Fresult URIs require `s3:\u002F\u002F` access.\nCredentials may already be present in the process environment or in a\nuser-approved secret env file such as `~\u002F.tao\u002Fsecrets.env` or\n`~\u002F.config\u002Ftao\u002F.env`; source such files only when needed and never print,\ngrep, cat, paste, or log their contents. Verify only variable presence.\n\nFor initial launch intake, ask for required credentials and required credential\ngroups only. Treat the helper's optional credentials\u002Fsettings section as\nreference material; do not request those values unless their `only_when`\ncondition applies, the selected workflow cannot proceed without them, or the\nuser asks to customize that setting.\n\nWhen the helper output includes a \"Required credential groups\" section, satisfy\none credential from each group before proceeding. Explain each requested value\nusing the helper's description and \"How to get it\" text.\n\nFor SLURM, user-facing prompts should ask for `SSH_KEY_PATH` first. Mention\n`SSH_AUTH_SOCK` only if the user says they already use an SSH agent.\n\n## Dependency Remediation\n\nIf a required CLI\u002Flibrary is missing, say exactly what is missing and why it is\nneeded, then ask before installing. Examples:\n\n- S3 dataset or results path -> require an S3-capable client such as `aws`.\n- SDK-backed platform launch -> require the platform-specific\n  `nvidia-tao-sdk[...]` extra.\n- Local Docker SDK path -> require the Docker Python client and the configured\n  Docker network.\n\nAfter user approval and installation, rerun the same preflight. Do not create\nrunner files or launch jobs between the failed check and the rerun.\n\n## Dataset Intake\n\nAccept dataset inputs in either mode:\n\n- **Dataset root mode:** the user gives train\u002Feval\u002Fcalibration roots, and the\n  model skill maps required files by convention. Example for Cosmos-RL train:\n  `custom.train_dataset.annotation_path=\u003Croot>\u002Fannotations.json` and\n  `custom.train_dataset.media_path=\u003Croot>`.\n- **Direct spec mode:** the user gives exact spec-key paths when annotations,\n  media archives, videos, or image folders live in different places. Preserve\n  those keys directly, for example\n  `custom.train_dataset.annotation_path=\u002Flustre\u002F...\u002Ftrain_annotations.json`\n  and `custom.train_dataset.media_path=\u002Flustre\u002F...\u002Fvideos.tar.gz`.\n\nAsk for dataset examples that match the selected platform:\n\n- SLURM: shared cluster paths such as\n  `\u002Flustre\u002Ffsw\u002Fportfolios\u002F\u003Cteam>\u002F\u003Cyour-dir>\u002Fdata\u002F\u003Cmodel>\u002Ftrain` (where\n  `\u003Cyour-dir>` is your per-user directory on the cluster), or direct\n  spec paths under `\u002Flustre\u002F...`.\n- Brev, Kubernetes: usually `s3:\u002F\u002Fbucket\u002Fpath\u002Ftrain` and\n  `s3:\u002F\u002Fbucket\u002Fpath\u002Feval` unless the platform profile mounts shared storage.\n- Local Docker: local paths visible to the Docker host, such as\n  `\u002Fdata\u002Ftao\u002F\u003Cmodel>\u002Ftrain`, or direct spec paths visible inside the planned\n  container mount.\n- Remote Docker: absolute paths visible on the remote Docker host named by\n  `DOCKER_HOST`, not paths on the local agent machine.\n\nDo not assume \"dataset root\" is the only acceptable input. When direct spec\npaths are supplied, validate the exact spec paths rather than appending default\nfilenames.\n\n## Platform Preflight\n\nRun the selected platform's preflight checks before any launch artifact is\ncreated.\n\nPrefer the packaged preflight helper when the needed inputs are available:\n\n```bash\n${TAO_SKILL_BANK_PATH:-~\u002Ftao-skills-external}\u002Fscripts\u002Fcheck_tao_launch_preflight.py \\\n  --skill-bank ${TAO_SKILL_BANK_PATH:-~\u002Ftao-skills-external} \\\n  --platform \u003Cplatform> \\\n  --container-image \u003Cselected-image> \\\n  --path train_annotation=\u003Cpath> \\\n  --path train_media=\u003Cpath>\n```\n\nPass exact direct spec paths when the user supplied them. For root-mode inputs,\nexpand model-required files first, then pass those concrete annotation\u002Fmedia\npaths to the helper.\n\nIf the helper reports a missing client tool such as `aws` for `s3:\u002F\u002F` path\nverification, install the smallest needed package after user approval, then\nrerun the same command with `--install-missing-tools` and do not proceed until\nthe rerun verifies the paths.\n\nWhen the selected model skill warns that large S3 media should be staged, copy\nor extract the data once to platform-visible storage before creating launch\nartifacts, then validate those staged paths with the same preflight helper.\nRecord the source URI and staged path in the run workspace so AutoML summaries\ncan distinguish data staging time from training\u002Fevaluation time.\n\nFor `local-docker` and `remote-docker`, always pass the selected image with\n`--container-image` after resolving `container_image` from\n`skill_info.yaml`\u002F`versions.yaml`. The helper verifies Docker reachability,\nNVIDIA Container Toolkit registration, GPU memory, selected-image architecture\ncompatibility when known, and a GPU-visible smoke container before launch. For\n`remote-docker`, pass `--docker-host` or export `DOCKER_HOST`; the helper queries\nGPUs and validates bind-mounted paths through the remote daemon instead of using\nlocal host state. If the selected or smoke image is not present on the target\nDocker host, ask before pulling it or rerun with `--pull-smoke-image` after\napproval.\n\nWhen a model skill lists annotation-level required fields, pass them with\n`--json-required-field \u003Cpath-label>=\u003Cfield>[,\u003Cfield>...]` so schema\u002Fdata\ncontent issues fail during preflight rather than inside the first training\ncontainer. Do not add required annotation fields from old failure history; only\nenforce fields documented as required by the current model skill.\nFor local JSON\u002FJSONL annotation paths, the helper prints `records=\u003CN>`; use the\ntrain annotation count as `automl_settings[\"train_sample_count\"]` for\nsample-count-sensitive AutoML runs before recommendations are generated.\nIf the model skill documents a run-local patch strategy for a missing required\nfield, create the patched copy in the current run workspace, update the spec\npaths to that copy, and rerun the content check before launch. Do not ask the\nuser to mutate source datasets unless the model skill says patching is\nimpossible.\n\nDo not use `--skip-platform-access` for a real launch. That flag is only for\ndry environment checks or for cases where the user has already provided explicit\nmanual proof of platform and storage access. If the helper cannot verify remote\nAPI, CLI, cluster, or object-store access, treat preflight as failed and do not\ngenerate launch artifacts.\n\nFor SLURM:\n\n1. Require `SLURM_USER`, `SLURM_HOSTNAME`, a partition intent, and one of\n   `SSH_KEY_PATH` or `SSH_AUTH_SOCK`. If the user says to use the cluster\n   default partition, pass an empty partition\u002Fomit the partition directive; do\n   not substitute a site-specific value such as `batch`.\n   Use the selected platform helper's `Resource defaults` for runtime values.\n   For the packaged SLURM defaults, generate launchers with\n   `SLURM_TIME_HOURS=4` and `SLURM_TIMEOUT_HOURS=3.8`; never invent a\n   12-hour default for the 4-hour partition list.\n   Launching the orchestrator with `nohup` or in the background is allowed for\n   durability, but it does not satisfy chat monitoring by itself. After launch,\n   keep a foreground chat-side polling loop attached until terminal state or\n   explicit detach.\n2. Split comma-separated `SLURM_HOSTNAME`, resolve hosts where possible, and\n   require passwordless `ssh -o BatchMode=yes` to at least one host.\n3. If SSH fails, do not offer several equivalent choices. Ask for\n   `SSH_KEY_PATH=\u002Fpath\u002Fto\u002Fprivate_key` and show the passwordless setup steps:\n   create a key if needed with\n   `ssh-keygen -t ed25519 -N \"\" -f ~\u002F.ssh\u002Fid_ed25519`; install it with\n   `ssh-copy-id -i ~\u002F.ssh\u002Fid_ed25519.pub \u003CSLURM_USER>@\u003Clogin-host>`; trust the\n   host with `ssh-keyscan -H \u003Clogin-host> >> ~\u002F.ssh\u002Fknown_hosts`; set\n   `chmod 600 ~\u002F.ssh\u002Fid_ed25519`; verify with\n   `ssh -o BatchMode=yes -i ~\u002F.ssh\u002Fid_ed25519 \u003CSLURM_USER>@\u003Clogin-host> 'hostname'`;\n   then rerun with `SSH_KEY_PATH=~\u002F.ssh\u002Fid_ed25519`.\n4. After SSH passes, validate dataset annotation\u002Fmedia paths on the remote login\n   host with `test -e` or an equivalent read-only command.\n5. Only then create runner scripts, specs, workspaces, or submit jobs.\n6. For multi-GPU Slurm jobs, rely on the SDK Slurm backend to request\n   `--gpus-per-node=\u003CN>`. Do not generate manual `--gpus=\u003CN>` sbatch snippets;\n   that can spread GPUs across nodes and leave allocated GPUs idle.\n7. For full-matrix or multi-node launches, submit one smoke job first. Launch\n   the full matrix only after the smoke reaches training, emits the requested\n   metric\u002Fstatus record, and shows expected GPU utilization.\n\nFor AutoML status, prefer structured controller\u002Fbrain state and job metadata\n(`active_jobs.json`, `.automl\u002Fcontroller\u002F*.json`, result JSON, and\n`results_dir\u002Ftrain\u002Fstatus.json`) before scanning raw logs. Parse logs only as a\nfallback or when the user specifically asks for log-level investigation.\n\nFor local Docker, validate Docker\u002FGPU access and local dataset paths before\nwriting launch artifacts. For Brev and Kubernetes, validate API or\ncluster access plus object-storage credentials and `aws s3 ls` readability for\n`s3:\u002F\u002F` inputs before writing launch artifacts. For mounted shared-storage or\nPVC paths on those remote platforms, require manual proof that the path is\nmounted into the job environment; the helper fails closed rather than accepting\nunverified remote mount paths.\n\n## Runtime And Configuration Review\n\nBefore any side-effecting launch, show a concise review:\n\n- selected platform and exact container image\n- GPU ids\u002Fcount and nodes, including any GPUs avoided because they are already\n  occupied\n- dataset roots or direct spec paths, with sample counts when available\n- important model\u002Fworkflow overrides that differ from template defaults\n- estimated runtime and the assumptions behind it\n- monitoring interval and whether chat-side monitoring will stay attached\n\nFor AutoML, also show the algorithm, metric\u002Fdirection, recommendation budget,\nsearch parameters, ranges, and generated\u002Fdefault recommendation details as\ndescribed in `skills\u002Fapplications\u002Ftao-run-automl\u002FSKILL.md`. Ask for confirmation after\nthis review. If the user supplied a time limit, flag any plan that exceeds it\nand offer concrete reductions before launch.\n",{"data":35,"body":45},{"name":4,"description":6,"license":26,"compatibility":36,"metadata":37,"allowed-tools":40,"tags":41},"Requires the packaged TAO skill bank helper scripts.",{"author":38,"version":39},"NVIDIA Corporation","0.1.0","Read Bash",[42,43,44],"tao","workflow","launch",{"type":46,"children":47},"root",[48,57,63,70,75,81,86,99,104,163,168,173,179,184,293,298,317,338,359,379,385,390,395,405,411,416,559,580,622,627,636,648,654,659,774,803,816,821,842,848,853,886,891,897,902,955,960,1037,1042,1048,1053,1058,1265,1270,1297,1302,1382,1411,1424,1429,1630,1658,1678,1684,1689,1722,1735],{"type":49,"tag":50,"props":51,"children":53},"element","h1",{"id":52},"tao-workflow-launch-intake",[54],{"type":55,"value":56},"text","TAO Workflow Launch Intake",{"type":49,"tag":58,"props":59,"children":60},"p",{},[61],{"type":55,"value":62},"Use this skill before launching any TAO workflow or model action.",{"type":49,"tag":64,"props":65,"children":67},"h2",{"id":66},"quick-start",[68],{"type":55,"value":69},"Quick Start",{"type":49,"tag":58,"props":71,"children":72},{},[73],{"type":55,"value":74},"Run the platform helper, ask for platform and monitoring preferences, then run\nthe selected platform detail helper before asking for credentials.",{"type":49,"tag":64,"props":76,"children":78},{"id":77},"non-negotiable-launch-gate",[79],{"type":55,"value":80},"Non-Negotiable Launch Gate",{"type":49,"tag":58,"props":82,"children":83},{},[84],{"type":55,"value":85},"This gate is model-agnostic. Apply it to every TAO model, data action, and\napplication workflow before launching side-effecting work.",{"type":49,"tag":58,"props":87,"children":88},{},[89,91,97],{"type":55,"value":90},"Do ",{"type":49,"tag":92,"props":93,"children":94},"strong",{},[95],{"type":55,"value":96},"not",{"type":55,"value":98}," create runner scripts, launch scripts, compatibility shims,\nworkspace folders, state files, logs, or dependency-install side effects until\nthe launch preflight passes.",{"type":49,"tag":58,"props":100,"children":101},{},[102],{"type":55,"value":103},"Preflight passes only after all of these are true:",{"type":49,"tag":105,"props":106,"children":107},"ol",{},[108,114,119,124,138,143,148,153,158],{"type":49,"tag":109,"props":110,"children":111},"li",{},[112],{"type":55,"value":113},"The execution platform is selected from the packaged platform helper.",{"type":49,"tag":109,"props":115,"children":116},{},[117],{"type":55,"value":118},"Platform credentials and required credential groups are satisfied.",{"type":49,"tag":109,"props":120,"children":121},{},[122],{"type":55,"value":123},"Model-specific credentials are satisfied.",{"type":49,"tag":109,"props":125,"children":126},{},[127,129,136],{"type":55,"value":128},"The default container image is resolved from packaged model\u002Faction metadata,\nshown to the user, and either confirmed or replaced by an explicit\n",{"type":49,"tag":130,"props":131,"children":133},"code",{"className":132},[],[134],{"type":55,"value":135},"image=\u003Coverride>",{"type":55,"value":137},".",{"type":49,"tag":109,"props":139,"children":140},{},[141],{"type":55,"value":142},"The platform access check succeeds from the launch host.",{"type":49,"tag":109,"props":144,"children":145},{},[146],{"type":55,"value":147},"Dataset inputs are mapped to concrete spec keys and verified from the\nselected platform's point of view.",{"type":49,"tag":109,"props":149,"children":150},{},[151],{"type":55,"value":152},"Required compute shape fields from the model\u002Fworkflow skill are known.",{"type":49,"tag":109,"props":154,"children":155},{},[156],{"type":55,"value":157},"Required local tools for the selected data\u002Fplatform path are present, or the\nuser approved installing the smallest missing dependency and preflight was\nrerun.",{"type":49,"tag":109,"props":159,"children":160},{},[161],{"type":55,"value":162},"A launch review with image, platform, datasets, compute shape, expected\nruntime, and any generated\u002Fdefault configuration changes has been shown and\nconfirmed by the user. For AutoML, the launch review must explicitly state\nrecommendation count\u002Fbudget, max concurrency, algorithm, metric, direction,\nand searched parameters\u002Franges even when defaults are used.",{"type":49,"tag":58,"props":164,"children":165},{},[166],{"type":55,"value":167},"If any item is missing, ask for the missing input and stop before generating\nartifacts. This applies to AutoML, normal train\u002Feval\u002Finfer\u002Fexport\u002FTRT, and\nDEFT\u002Fapplication workflows.",{"type":49,"tag":58,"props":169,"children":170},{},[171],{"type":55,"value":172},"When preflight work clears a blocker, keep track of the original user request.\nAfter the fix, rerun the relevant preflight and continue toward that request;\ndo not stop at \"blocker fixed\" unless the user explicitly asked only for the\nrepair.",{"type":49,"tag":64,"props":174,"children":176},{"id":175},"initial-questions",[177],{"type":55,"value":178},"Initial Questions",{"type":49,"tag":58,"props":180,"children":181},{},[182],{"type":55,"value":183},"After the user confirms what they want to do, ask for the execution platform\nusing the packaged helper. Do not scan platform docs, skill folders, or config\nfolders to build the choices.",{"type":49,"tag":185,"props":186,"children":191},"pre",{"className":187,"code":188,"language":189,"meta":190,"style":190},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","${TAO_SKILL_BANK_PATH:-~\u002Ftao-skills-external}\u002Fscripts\u002Flist_tao_platforms.py \\\n  --skill-bank ${TAO_SKILL_BANK_PATH:-~\u002Ftao-skills-external} --format text\n","bash","",[192],{"type":49,"tag":130,"props":193,"children":194},{"__ignoreMap":190},[195,243],{"type":49,"tag":196,"props":197,"children":200},"span",{"class":198,"line":199},"line",1,[201,207,213,218,223,228,233,238],{"type":49,"tag":196,"props":202,"children":204},{"style":203},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[205],{"type":55,"value":206},"${",{"type":49,"tag":196,"props":208,"children":210},{"style":209},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[211],{"type":55,"value":212},"TAO_SKILL_BANK_PATH",{"type":49,"tag":196,"props":214,"children":215},{"style":203},[216],{"type":55,"value":217},":-",{"type":49,"tag":196,"props":219,"children":220},{"style":209},[221],{"type":55,"value":222},"~",{"type":49,"tag":196,"props":224,"children":225},{"style":203},[226],{"type":55,"value":227},"\u002F",{"type":49,"tag":196,"props":229,"children":230},{"style":209},[231],{"type":55,"value":232},"tao-skills-external",{"type":49,"tag":196,"props":234,"children":235},{"style":203},[236],{"type":55,"value":237},"}",{"type":49,"tag":196,"props":239,"children":240},{"style":209},[241],{"type":55,"value":242},"\u002Fscripts\u002Flist_tao_platforms.py \\\n",{"type":49,"tag":196,"props":244,"children":246},{"class":198,"line":245},2,[247,253,258,262,266,270,274,278,282,288],{"type":49,"tag":196,"props":248,"children":250},{"style":249},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[251],{"type":55,"value":252},"  --skill-bank",{"type":49,"tag":196,"props":254,"children":255},{"style":203},[256],{"type":55,"value":257}," ${",{"type":49,"tag":196,"props":259,"children":260},{"style":209},[261],{"type":55,"value":212},{"type":49,"tag":196,"props":263,"children":264},{"style":203},[265],{"type":55,"value":217},{"type":49,"tag":196,"props":267,"children":268},{"style":209},[269],{"type":55,"value":222},{"type":49,"tag":196,"props":271,"children":272},{"style":203},[273],{"type":55,"value":227},{"type":49,"tag":196,"props":275,"children":276},{"style":209},[277],{"type":55,"value":232},{"type":49,"tag":196,"props":279,"children":280},{"style":203},[281],{"type":55,"value":237},{"type":49,"tag":196,"props":283,"children":285},{"style":284},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[286],{"type":55,"value":287}," --format",{"type":49,"tag":196,"props":289,"children":290},{"style":284},[291],{"type":55,"value":292}," text\n",{"type":49,"tag":58,"props":294,"children":295},{},[296],{"type":55,"value":297},"Then ask:",{"type":49,"tag":299,"props":300,"children":301},"ul",{},[302,307,312],{"type":49,"tag":109,"props":303,"children":304},{},[305],{"type":55,"value":306},"Which supported platform should run this workflow?",{"type":49,"tag":109,"props":308,"children":309},{},[310],{"type":55,"value":311},"Should I monitor the run in this chat? Monitoring means I keep polling the\nbackend\u002Fjob logs after launch and report progress until the job finishes,\nfails, or you ask me to stop, even if the job stays queued for hours or days.\nIf disabled, I launch the job, give you the job id\u002Flog path, and stop\npolling. Default: monitor in chat.",{"type":49,"tag":109,"props":313,"children":314},{},[315],{"type":55,"value":316},"How often should I post status? Default: every 5 minutes. Use 1-2 minutes for\nsmoke tests, 5 minutes for normal training, or 10-15 minutes for long runs.",{"type":49,"tag":58,"props":318,"children":319},{},[320,322,328,330,336],{"type":55,"value":321},"Use ",{"type":49,"tag":130,"props":323,"children":325},{"className":324},[],[326],{"type":55,"value":327},"long_running_enabled=true",{"type":55,"value":329}," and ",{"type":49,"tag":130,"props":331,"children":333},{"className":332},[],[334],{"type":55,"value":335},"status_interval_minutes=5",{"type":55,"value":337}," when the user\naccepts the defaults.",{"type":49,"tag":58,"props":339,"children":340},{},[341,343,349,351,357],{"type":55,"value":342},"When monitoring is enabled, do not send a final summary just because several\npolls have elapsed or the job is still ",{"type":49,"tag":130,"props":344,"children":346},{"className":345},[],[347],{"type":55,"value":348},"PENDING",{"type":55,"value":350},". Keep the turn attached and\nemit status every ",{"type":49,"tag":130,"props":352,"children":354},{"className":353},[],[355],{"type":55,"value":356},"status_interval_minutes",{"type":55,"value":358}," until a terminal state or explicit\nuser stop\u002Fdetach request. If the runtime environment cannot keep the chat turn\nopen, say that clearly and leave a durable watcher\u002Flog path; do not imply that\nchat updates will continue after the turn ends.",{"type":49,"tag":58,"props":360,"children":361},{},[362,364,370,372,377],{"type":55,"value":363},"Final-answer rule: a ",{"type":49,"tag":130,"props":365,"children":367},{"className":366},[],[368],{"type":55,"value":369},"final",{"type":55,"value":371}," response ends chat-side monitoring. While\n",{"type":49,"tag":130,"props":373,"children":375},{"className":374},[],[376],{"type":55,"value":327},{"type":55,"value":378}," and any launched job is non-terminal, status\nmessages must be sent as in-progress updates and the agent must continue\npolling. Only send a final response when the workflow reaches terminal state,\nthe user explicitly asks to detach\u002Fstop monitoring, or the runtime genuinely\ncannot keep the turn open; in that last case, say it is a runtime limitation\nand provide the exact durable status command\u002Flog path.",{"type":49,"tag":64,"props":380,"children":382},{"id":381},"missing-input-prompt-shape",[383],{"type":55,"value":384},"Missing-Input Prompt Shape",{"type":49,"tag":58,"props":386,"children":387},{},[388],{"type":55,"value":389},"When asking for launch inputs, include concrete examples and both dataset input\nmodes. Do not ask only for \"dataset root\".",{"type":49,"tag":58,"props":391,"children":392},{},[393],{"type":55,"value":394},"Use this structure and adapt spec keys to the selected model\u002Faction:",{"type":49,"tag":185,"props":396,"children":400},{"className":397,"code":399,"language":55,"meta":190},[398],"language-text","I need these launch inputs before I can create specs or runner files:\n\n1. Execution platform: brev, slurm, local-docker, or kubernetes.\n\n2. Dataset inputs. You can provide either mode:\n   A) Root mode: give train\u002Feval roots and I map required files automatically.\n      Example Cosmos-RL:\n      train_root=\u002Flustre\u002Ffsw\u002F...\u002Fcosmos\u002Ftrain\n      -> custom.train_dataset.annotation_path=train_root\u002Fannotations.json\n      -> custom.train_dataset.media_path=train_root\n   B) Direct spec mode: give the exact config\u002Fspec parameters yourself.\n      Example:\n      custom.train_dataset.annotation_path=\u002Flustre\u002Ffsw\u002F...\u002Ftrain_annotations.json\n      custom.train_dataset.media_path=\u002Flustre\u002Ffsw\u002F...\u002Fvideos_train.tar.gz\n      custom.val_dataset.annotation_path=\u002Flustre\u002Ffsw\u002F...\u002Feval_annotations.json\n      custom.val_dataset.media_path=\u002Flustre\u002Ffsw\u002F...\u002Feval_videos\u002F\n\n   Platform examples:\n   - SLURM\u002FLustre: \u002Flustre\u002Ffsw\u002F...\u002Fdata\u002Ftrain or lustre:\u002F\u002F\u002Flustre\u002Ffsw\u002F...\u002Fdata\u002Ftrain\n   - Brev\u002FKubernetes: s3:\u002F\u002Fbucket\u002Fpath\u002Ftrain and s3:\u002F\u002Fbucket\u002Fpath\u002Feval\n   - local-docker: \u002Fdata\u002Ftao\u002F\u003Cmodel>\u002Ftrain or file:\u002F\u002F\u002Fdata\u002Ftao\u002F\u003Cmodel>\u002Feval\n\n3. Container image. I will resolve the default from packaged model metadata and\n   show it before launch, for example:\n   default image for \u003Cmodel>\u002F\u003Caction>: \u003Cresolved container image>\n   Use this image, or provide image=\u003Coverride> to pin a different TAO build.\n\n4. Compute shape required by the model, for example GPUs\u002Fnodes.\n\n5. Required credentials from platform\u002Fmodel docs, for example HF_TOKEN for\n   gated Hugging Face models.\n\n6. Monitoring preference. By default I monitor in this chat and post progress\n   every 5 minutes; choose 1-2 minutes for smoke tests or 10-15 minutes for\n   long training.\n",[401],{"type":49,"tag":130,"props":402,"children":403},{"__ignoreMap":190},[404],{"type":55,"value":399},{"type":49,"tag":64,"props":406,"children":408},{"id":407},"container-image-confirmation",[409],{"type":55,"value":410},"Container Image Confirmation",{"type":49,"tag":58,"props":412,"children":413},{},[414],{"type":55,"value":415},"Before creating specs, runner scripts, workspaces, logs, state files, or\nsubmitting a job, resolve the image for the selected model\u002Faction:",{"type":49,"tag":185,"props":417,"children":419},{"className":187,"code":418,"language":189,"meta":190,"style":190},"${TAO_SKILL_BANK_PATH:-~\u002Ftao-skills-external}\u002Fscripts\u002Fresolve_tao_image.py \\\n  --skill-bank ${TAO_SKILL_BANK_PATH:-~\u002Ftao-skills-external} \\\n  --model \u003Cnetwork> --action \u003Caction> --format text\n",[420],{"type":49,"tag":130,"props":421,"children":422},{"__ignoreMap":190},[423,459,499],{"type":49,"tag":196,"props":424,"children":425},{"class":198,"line":199},[426,430,434,438,442,446,450,454],{"type":49,"tag":196,"props":427,"children":428},{"style":203},[429],{"type":55,"value":206},{"type":49,"tag":196,"props":431,"children":432},{"style":209},[433],{"type":55,"value":212},{"type":49,"tag":196,"props":435,"children":436},{"style":203},[437],{"type":55,"value":217},{"type":49,"tag":196,"props":439,"children":440},{"style":209},[441],{"type":55,"value":222},{"type":49,"tag":196,"props":443,"children":444},{"style":203},[445],{"type":55,"value":227},{"type":49,"tag":196,"props":447,"children":448},{"style":209},[449],{"type":55,"value":232},{"type":49,"tag":196,"props":451,"children":452},{"style":203},[453],{"type":55,"value":237},{"type":49,"tag":196,"props":455,"children":456},{"style":209},[457],{"type":55,"value":458},"\u002Fscripts\u002Fresolve_tao_image.py \\\n",{"type":49,"tag":196,"props":460,"children":461},{"class":198,"line":245},[462,466,470,474,478,482,486,490,494],{"type":49,"tag":196,"props":463,"children":464},{"style":249},[465],{"type":55,"value":252},{"type":49,"tag":196,"props":467,"children":468},{"style":203},[469],{"type":55,"value":257},{"type":49,"tag":196,"props":471,"children":472},{"style":209},[473],{"type":55,"value":212},{"type":49,"tag":196,"props":475,"children":476},{"style":203},[477],{"type":55,"value":217},{"type":49,"tag":196,"props":479,"children":480},{"style":209},[481],{"type":55,"value":222},{"type":49,"tag":196,"props":483,"children":484},{"style":203},[485],{"type":55,"value":227},{"type":49,"tag":196,"props":487,"children":488},{"style":209},[489],{"type":55,"value":232},{"type":49,"tag":196,"props":491,"children":492},{"style":203},[493],{"type":55,"value":237},{"type":49,"tag":196,"props":495,"children":496},{"style":209},[497],{"type":55,"value":498}," \\\n",{"type":49,"tag":196,"props":500,"children":502},{"class":198,"line":501},3,[503,508,513,518,523,528,533,537,542,547,551,555],{"type":49,"tag":196,"props":504,"children":505},{"style":284},[506],{"type":55,"value":507},"  --model",{"type":49,"tag":196,"props":509,"children":510},{"style":203},[511],{"type":55,"value":512}," \u003C",{"type":49,"tag":196,"props":514,"children":515},{"style":284},[516],{"type":55,"value":517},"networ",{"type":49,"tag":196,"props":519,"children":520},{"style":209},[521],{"type":55,"value":522},"k",{"type":49,"tag":196,"props":524,"children":525},{"style":203},[526],{"type":55,"value":527},">",{"type":49,"tag":196,"props":529,"children":530},{"style":284},[531],{"type":55,"value":532}," --action",{"type":49,"tag":196,"props":534,"children":535},{"style":203},[536],{"type":55,"value":512},{"type":49,"tag":196,"props":538,"children":539},{"style":284},[540],{"type":55,"value":541},"actio",{"type":49,"tag":196,"props":543,"children":544},{"style":209},[545],{"type":55,"value":546},"n",{"type":49,"tag":196,"props":548,"children":549},{"style":203},[550],{"type":55,"value":527},{"type":49,"tag":196,"props":552,"children":553},{"style":284},[554],{"type":55,"value":287},{"type":49,"tag":196,"props":556,"children":557},{"style":284},[558],{"type":55,"value":292},{"type":49,"tag":58,"props":560,"children":561},{},[562,564,570,572,578],{"type":55,"value":563},"If the helper is unavailable, read ",{"type":49,"tag":130,"props":565,"children":567},{"className":566},[],[568],{"type":55,"value":569},"skills\u002Fmodels\u002F\u003Cnetwork>\u002Fconfig.json",{"type":55,"value":571}," through\n",{"type":49,"tag":130,"props":573,"children":575},{"className":574},[],[576],{"type":55,"value":577},"SkillBank().get_model_config(network_arch)",{"type":55,"value":579},". Resolve image fields in this\norder:",{"type":49,"tag":105,"props":581,"children":582},{},[583,592,601,612],{"type":49,"tag":109,"props":584,"children":585},{},[586],{"type":49,"tag":130,"props":587,"children":589},{"className":588},[],[590],{"type":55,"value":591},"actions.\u003Caction>.container_image",{"type":49,"tag":109,"props":593,"children":594},{},[595],{"type":49,"tag":130,"props":596,"children":598},{"className":597},[],[599],{"type":55,"value":600},"actions.\u003Caction>.image",{"type":49,"tag":109,"props":602,"children":603},{},[604,606],{"type":55,"value":605},"top-level ",{"type":49,"tag":130,"props":607,"children":609},{"className":608},[],[610],{"type":55,"value":611},"container_image",{"type":49,"tag":109,"props":613,"children":614},{},[615,616],{"type":55,"value":605},{"type":49,"tag":130,"props":617,"children":619},{"className":618},[],[620],{"type":55,"value":621},"image",{"type":49,"tag":58,"props":623,"children":624},{},[625],{"type":55,"value":626},"Show the exact image and ask:",{"type":49,"tag":185,"props":628,"children":631},{"className":629,"code":630,"language":55,"meta":190},[398],"Container image for \u003Cnetwork>\u002F\u003Caction>:\ndefault=\u003Cresolved image>\n\nUse this image, or provide image=\u003Coverride>?\n",[632],{"type":49,"tag":130,"props":633,"children":634},{"__ignoreMap":190},[635],{"type":55,"value":630},{"type":49,"tag":58,"props":637,"children":638},{},[639,641,646],{"type":55,"value":640},"If the user accepts, pass the resolved image as the job ",{"type":49,"tag":130,"props":642,"children":644},{"className":643},[],[645],{"type":55,"value":621},{"type":55,"value":647},". If the user\noverrides, require a non-empty image reference and pass that value instead.\nDo not silently launch on the default image. This confirmation applies to\ntraining, AutoML recommendations, evaluation, inference, export, TensorRT\nengine generation, and application workflows that submit TAO containers.",{"type":49,"tag":64,"props":649,"children":651},{"id":650},"credential-filtering",[652],{"type":55,"value":653},"Credential Filtering",{"type":49,"tag":58,"props":655,"children":656},{},[657],{"type":55,"value":658},"After the user chooses a platform, get the credential list for only that\nplatform:",{"type":49,"tag":185,"props":660,"children":662},{"className":187,"code":661,"language":189,"meta":190,"style":190},"${TAO_SKILL_BANK_PATH:-~\u002Ftao-skills-external}\u002Fscripts\u002Flist_tao_platforms.py \\\n  --skill-bank ${TAO_SKILL_BANK_PATH:-~\u002Ftao-skills-external} \\\n  --platform \u003Cplatform> --format text\n",[663],{"type":49,"tag":130,"props":664,"children":665},{"__ignoreMap":190},[666,701,740],{"type":49,"tag":196,"props":667,"children":668},{"class":198,"line":199},[669,673,677,681,685,689,693,697],{"type":49,"tag":196,"props":670,"children":671},{"style":203},[672],{"type":55,"value":206},{"type":49,"tag":196,"props":674,"children":675},{"style":209},[676],{"type":55,"value":212},{"type":49,"tag":196,"props":678,"children":679},{"style":203},[680],{"type":55,"value":217},{"type":49,"tag":196,"props":682,"children":683},{"style":209},[684],{"type":55,"value":222},{"type":49,"tag":196,"props":686,"children":687},{"style":203},[688],{"type":55,"value":227},{"type":49,"tag":196,"props":690,"children":691},{"style":209},[692],{"type":55,"value":232},{"type":49,"tag":196,"props":694,"children":695},{"style":203},[696],{"type":55,"value":237},{"type":49,"tag":196,"props":698,"children":699},{"style":209},[700],{"type":55,"value":242},{"type":49,"tag":196,"props":702,"children":703},{"class":198,"line":245},[704,708,712,716,720,724,728,732,736],{"type":49,"tag":196,"props":705,"children":706},{"style":249},[707],{"type":55,"value":252},{"type":49,"tag":196,"props":709,"children":710},{"style":203},[711],{"type":55,"value":257},{"type":49,"tag":196,"props":713,"children":714},{"style":209},[715],{"type":55,"value":212},{"type":49,"tag":196,"props":717,"children":718},{"style":203},[719],{"type":55,"value":217},{"type":49,"tag":196,"props":721,"children":722},{"style":209},[723],{"type":55,"value":222},{"type":49,"tag":196,"props":725,"children":726},{"style":203},[727],{"type":55,"value":227},{"type":49,"tag":196,"props":729,"children":730},{"style":209},[731],{"type":55,"value":232},{"type":49,"tag":196,"props":733,"children":734},{"style":203},[735],{"type":55,"value":237},{"type":49,"tag":196,"props":737,"children":738},{"style":209},[739],{"type":55,"value":498},{"type":49,"tag":196,"props":741,"children":742},{"class":198,"line":501},[743,748,752,757,762,766,770],{"type":49,"tag":196,"props":744,"children":745},{"style":284},[746],{"type":55,"value":747},"  --platform",{"type":49,"tag":196,"props":749,"children":750},{"style":203},[751],{"type":55,"value":512},{"type":49,"tag":196,"props":753,"children":754},{"style":284},[755],{"type":55,"value":756},"platfor",{"type":49,"tag":196,"props":758,"children":759},{"style":209},[760],{"type":55,"value":761},"m",{"type":49,"tag":196,"props":763,"children":764},{"style":203},[765],{"type":55,"value":527},{"type":49,"tag":196,"props":767,"children":768},{"style":284},[769],{"type":55,"value":287},{"type":49,"tag":196,"props":771,"children":772},{"style":284},[773],{"type":55,"value":292},{"type":49,"tag":58,"props":775,"children":776},{},[777,779,785,787,793,795,801],{"type":55,"value":778},"Ask only for credentials returned by that command, plus model-specific\ncredentials from the selected model skill. Do not ask for Brev credentials on\nSLURM, Kubernetes, or local Docker. Do not ask for SLURM credentials on Brev,\nKubernetes, or local Docker. Ask S3 credentials only when the selected\nplatform and the dataset\u002Fresult URIs require ",{"type":49,"tag":130,"props":780,"children":782},{"className":781},[],[783],{"type":55,"value":784},"s3:\u002F\u002F",{"type":55,"value":786}," access.\nCredentials may already be present in the process environment or in a\nuser-approved secret env file such as ",{"type":49,"tag":130,"props":788,"children":790},{"className":789},[],[791],{"type":55,"value":792},"~\u002F.tao\u002Fsecrets.env",{"type":55,"value":794}," or\n",{"type":49,"tag":130,"props":796,"children":798},{"className":797},[],[799],{"type":55,"value":800},"~\u002F.config\u002Ftao\u002F.env",{"type":55,"value":802},"; source such files only when needed and never print,\ngrep, cat, paste, or log their contents. Verify only variable presence.",{"type":49,"tag":58,"props":804,"children":805},{},[806,808,814],{"type":55,"value":807},"For initial launch intake, ask for required credentials and required credential\ngroups only. Treat the helper's optional credentials\u002Fsettings section as\nreference material; do not request those values unless their ",{"type":49,"tag":130,"props":809,"children":811},{"className":810},[],[812],{"type":55,"value":813},"only_when",{"type":55,"value":815},"\ncondition applies, the selected workflow cannot proceed without them, or the\nuser asks to customize that setting.",{"type":49,"tag":58,"props":817,"children":818},{},[819],{"type":55,"value":820},"When the helper output includes a \"Required credential groups\" section, satisfy\none credential from each group before proceeding. Explain each requested value\nusing the helper's description and \"How to get it\" text.",{"type":49,"tag":58,"props":822,"children":823},{},[824,826,832,834,840],{"type":55,"value":825},"For SLURM, user-facing prompts should ask for ",{"type":49,"tag":130,"props":827,"children":829},{"className":828},[],[830],{"type":55,"value":831},"SSH_KEY_PATH",{"type":55,"value":833}," first. Mention\n",{"type":49,"tag":130,"props":835,"children":837},{"className":836},[],[838],{"type":55,"value":839},"SSH_AUTH_SOCK",{"type":55,"value":841}," only if the user says they already use an SSH agent.",{"type":49,"tag":64,"props":843,"children":845},{"id":844},"dependency-remediation",[846],{"type":55,"value":847},"Dependency Remediation",{"type":49,"tag":58,"props":849,"children":850},{},[851],{"type":55,"value":852},"If a required CLI\u002Flibrary is missing, say exactly what is missing and why it is\nneeded, then ask before installing. Examples:",{"type":49,"tag":299,"props":854,"children":855},{},[856,868,881],{"type":49,"tag":109,"props":857,"children":858},{},[859,861,867],{"type":55,"value":860},"S3 dataset or results path -> require an S3-capable client such as ",{"type":49,"tag":130,"props":862,"children":864},{"className":863},[],[865],{"type":55,"value":866},"aws",{"type":55,"value":137},{"type":49,"tag":109,"props":869,"children":870},{},[871,873,879],{"type":55,"value":872},"SDK-backed platform launch -> require the platform-specific\n",{"type":49,"tag":130,"props":874,"children":876},{"className":875},[],[877],{"type":55,"value":878},"nvidia-tao-sdk[...]",{"type":55,"value":880}," extra.",{"type":49,"tag":109,"props":882,"children":883},{},[884],{"type":55,"value":885},"Local Docker SDK path -> require the Docker Python client and the configured\nDocker network.",{"type":49,"tag":58,"props":887,"children":888},{},[889],{"type":55,"value":890},"After user approval and installation, rerun the same preflight. Do not create\nrunner files or launch jobs between the failed check and the rerun.",{"type":49,"tag":64,"props":892,"children":894},{"id":893},"dataset-intake",[895],{"type":55,"value":896},"Dataset Intake",{"type":49,"tag":58,"props":898,"children":899},{},[900],{"type":55,"value":901},"Accept dataset inputs in either mode:",{"type":49,"tag":299,"props":903,"children":904},{},[905,930],{"type":49,"tag":109,"props":906,"children":907},{},[908,913,915,921,923,929],{"type":49,"tag":92,"props":909,"children":910},{},[911],{"type":55,"value":912},"Dataset root mode:",{"type":55,"value":914}," the user gives train\u002Feval\u002Fcalibration roots, and the\nmodel skill maps required files by convention. Example for Cosmos-RL train:\n",{"type":49,"tag":130,"props":916,"children":918},{"className":917},[],[919],{"type":55,"value":920},"custom.train_dataset.annotation_path=\u003Croot>\u002Fannotations.json",{"type":55,"value":922}," and\n",{"type":49,"tag":130,"props":924,"children":926},{"className":925},[],[927],{"type":55,"value":928},"custom.train_dataset.media_path=\u003Croot>",{"type":55,"value":137},{"type":49,"tag":109,"props":931,"children":932},{},[933,938,940,946,948,954],{"type":49,"tag":92,"props":934,"children":935},{},[936],{"type":55,"value":937},"Direct spec mode:",{"type":55,"value":939}," the user gives exact spec-key paths when annotations,\nmedia archives, videos, or image folders live in different places. Preserve\nthose keys directly, for example\n",{"type":49,"tag":130,"props":941,"children":943},{"className":942},[],[944],{"type":55,"value":945},"custom.train_dataset.annotation_path=\u002Flustre\u002F...\u002Ftrain_annotations.json",{"type":55,"value":947},"\nand ",{"type":49,"tag":130,"props":949,"children":951},{"className":950},[],[952],{"type":55,"value":953},"custom.train_dataset.media_path=\u002Flustre\u002F...\u002Fvideos.tar.gz",{"type":55,"value":137},{"type":49,"tag":58,"props":956,"children":957},{},[958],{"type":55,"value":959},"Ask for dataset examples that match the selected platform:",{"type":49,"tag":299,"props":961,"children":962},{},[963,991,1011,1024],{"type":49,"tag":109,"props":964,"children":965},{},[966,968,974,976,982,984,990],{"type":55,"value":967},"SLURM: shared cluster paths such as\n",{"type":49,"tag":130,"props":969,"children":971},{"className":970},[],[972],{"type":55,"value":973},"\u002Flustre\u002Ffsw\u002Fportfolios\u002F\u003Cteam>\u002F\u003Cyour-dir>\u002Fdata\u002F\u003Cmodel>\u002Ftrain",{"type":55,"value":975}," (where\n",{"type":49,"tag":130,"props":977,"children":979},{"className":978},[],[980],{"type":55,"value":981},"\u003Cyour-dir>",{"type":55,"value":983}," is your per-user directory on the cluster), or direct\nspec paths under ",{"type":49,"tag":130,"props":985,"children":987},{"className":986},[],[988],{"type":55,"value":989},"\u002Flustre\u002F...",{"type":55,"value":137},{"type":49,"tag":109,"props":992,"children":993},{},[994,996,1002,1003,1009],{"type":55,"value":995},"Brev, Kubernetes: usually ",{"type":49,"tag":130,"props":997,"children":999},{"className":998},[],[1000],{"type":55,"value":1001},"s3:\u002F\u002Fbucket\u002Fpath\u002Ftrain",{"type":55,"value":922},{"type":49,"tag":130,"props":1004,"children":1006},{"className":1005},[],[1007],{"type":55,"value":1008},"s3:\u002F\u002Fbucket\u002Fpath\u002Feval",{"type":55,"value":1010}," unless the platform profile mounts shared storage.",{"type":49,"tag":109,"props":1012,"children":1013},{},[1014,1016,1022],{"type":55,"value":1015},"Local Docker: local paths visible to the Docker host, such as\n",{"type":49,"tag":130,"props":1017,"children":1019},{"className":1018},[],[1020],{"type":55,"value":1021},"\u002Fdata\u002Ftao\u002F\u003Cmodel>\u002Ftrain",{"type":55,"value":1023},", or direct spec paths visible inside the planned\ncontainer mount.",{"type":49,"tag":109,"props":1025,"children":1026},{},[1027,1029,1035],{"type":55,"value":1028},"Remote Docker: absolute paths visible on the remote Docker host named by\n",{"type":49,"tag":130,"props":1030,"children":1032},{"className":1031},[],[1033],{"type":55,"value":1034},"DOCKER_HOST",{"type":55,"value":1036},", not paths on the local agent machine.",{"type":49,"tag":58,"props":1038,"children":1039},{},[1040],{"type":55,"value":1041},"Do not assume \"dataset root\" is the only acceptable input. When direct spec\npaths are supplied, validate the exact spec paths rather than appending default\nfilenames.",{"type":49,"tag":64,"props":1043,"children":1045},{"id":1044},"platform-preflight",[1046],{"type":55,"value":1047},"Platform Preflight",{"type":49,"tag":58,"props":1049,"children":1050},{},[1051],{"type":55,"value":1052},"Run the selected platform's preflight checks before any launch artifact is\ncreated.",{"type":49,"tag":58,"props":1054,"children":1055},{},[1056],{"type":55,"value":1057},"Prefer the packaged preflight helper when the needed inputs are available:",{"type":49,"tag":185,"props":1059,"children":1061},{"className":187,"code":1060,"language":189,"meta":190,"style":190},"${TAO_SKILL_BANK_PATH:-~\u002Ftao-skills-external}\u002Fscripts\u002Fcheck_tao_launch_preflight.py \\\n  --skill-bank ${TAO_SKILL_BANK_PATH:-~\u002Ftao-skills-external} \\\n  --platform \u003Cplatform> \\\n  --container-image \u003Cselected-image> \\\n  --path train_annotation=\u003Cpath> \\\n  --path train_media=\u003Cpath>\n",[1062],{"type":49,"tag":130,"props":1063,"children":1064},{"__ignoreMap":190},[1065,1101,1140,1167,1198,1235],{"type":49,"tag":196,"props":1066,"children":1067},{"class":198,"line":199},[1068,1072,1076,1080,1084,1088,1092,1096],{"type":49,"tag":196,"props":1069,"children":1070},{"style":203},[1071],{"type":55,"value":206},{"type":49,"tag":196,"props":1073,"children":1074},{"style":209},[1075],{"type":55,"value":212},{"type":49,"tag":196,"props":1077,"children":1078},{"style":203},[1079],{"type":55,"value":217},{"type":49,"tag":196,"props":1081,"children":1082},{"style":209},[1083],{"type":55,"value":222},{"type":49,"tag":196,"props":1085,"children":1086},{"style":203},[1087],{"type":55,"value":227},{"type":49,"tag":196,"props":1089,"children":1090},{"style":209},[1091],{"type":55,"value":232},{"type":49,"tag":196,"props":1093,"children":1094},{"style":203},[1095],{"type":55,"value":237},{"type":49,"tag":196,"props":1097,"children":1098},{"style":209},[1099],{"type":55,"value":1100},"\u002Fscripts\u002Fcheck_tao_launch_preflight.py \\\n",{"type":49,"tag":196,"props":1102,"children":1103},{"class":198,"line":245},[1104,1108,1112,1116,1120,1124,1128,1132,1136],{"type":49,"tag":196,"props":1105,"children":1106},{"style":249},[1107],{"type":55,"value":252},{"type":49,"tag":196,"props":1109,"children":1110},{"style":203},[1111],{"type":55,"value":257},{"type":49,"tag":196,"props":1113,"children":1114},{"style":209},[1115],{"type":55,"value":212},{"type":49,"tag":196,"props":1117,"children":1118},{"style":203},[1119],{"type":55,"value":217},{"type":49,"tag":196,"props":1121,"children":1122},{"style":209},[1123],{"type":55,"value":222},{"type":49,"tag":196,"props":1125,"children":1126},{"style":203},[1127],{"type":55,"value":227},{"type":49,"tag":196,"props":1129,"children":1130},{"style":209},[1131],{"type":55,"value":232},{"type":49,"tag":196,"props":1133,"children":1134},{"style":203},[1135],{"type":55,"value":237},{"type":49,"tag":196,"props":1137,"children":1138},{"style":209},[1139],{"type":55,"value":498},{"type":49,"tag":196,"props":1141,"children":1142},{"class":198,"line":501},[1143,1147,1151,1155,1159,1163],{"type":49,"tag":196,"props":1144,"children":1145},{"style":284},[1146],{"type":55,"value":747},{"type":49,"tag":196,"props":1148,"children":1149},{"style":203},[1150],{"type":55,"value":512},{"type":49,"tag":196,"props":1152,"children":1153},{"style":284},[1154],{"type":55,"value":756},{"type":49,"tag":196,"props":1156,"children":1157},{"style":209},[1158],{"type":55,"value":761},{"type":49,"tag":196,"props":1160,"children":1161},{"style":203},[1162],{"type":55,"value":527},{"type":49,"tag":196,"props":1164,"children":1165},{"style":209},[1166],{"type":55,"value":498},{"type":49,"tag":196,"props":1168,"children":1170},{"class":198,"line":1169},4,[1171,1176,1180,1185,1190,1194],{"type":49,"tag":196,"props":1172,"children":1173},{"style":284},[1174],{"type":55,"value":1175},"  --container-image",{"type":49,"tag":196,"props":1177,"children":1178},{"style":203},[1179],{"type":55,"value":512},{"type":49,"tag":196,"props":1181,"children":1182},{"style":284},[1183],{"type":55,"value":1184},"selected-imag",{"type":49,"tag":196,"props":1186,"children":1187},{"style":209},[1188],{"type":55,"value":1189},"e",{"type":49,"tag":196,"props":1191,"children":1192},{"style":203},[1193],{"type":55,"value":527},{"type":49,"tag":196,"props":1195,"children":1196},{"style":209},[1197],{"type":55,"value":498},{"type":49,"tag":196,"props":1199,"children":1201},{"class":198,"line":1200},5,[1202,1207,1212,1217,1222,1227,1231],{"type":49,"tag":196,"props":1203,"children":1204},{"style":284},[1205],{"type":55,"value":1206},"  --path",{"type":49,"tag":196,"props":1208,"children":1209},{"style":284},[1210],{"type":55,"value":1211}," train_annotation=",{"type":49,"tag":196,"props":1213,"children":1214},{"style":203},[1215],{"type":55,"value":1216},"\u003C",{"type":49,"tag":196,"props":1218,"children":1219},{"style":284},[1220],{"type":55,"value":1221},"pat",{"type":49,"tag":196,"props":1223,"children":1224},{"style":209},[1225],{"type":55,"value":1226},"h",{"type":49,"tag":196,"props":1228,"children":1229},{"style":203},[1230],{"type":55,"value":527},{"type":49,"tag":196,"props":1232,"children":1233},{"style":209},[1234],{"type":55,"value":498},{"type":49,"tag":196,"props":1236,"children":1238},{"class":198,"line":1237},6,[1239,1243,1248,1252,1256,1260],{"type":49,"tag":196,"props":1240,"children":1241},{"style":284},[1242],{"type":55,"value":1206},{"type":49,"tag":196,"props":1244,"children":1245},{"style":284},[1246],{"type":55,"value":1247}," train_media=",{"type":49,"tag":196,"props":1249,"children":1250},{"style":203},[1251],{"type":55,"value":1216},{"type":49,"tag":196,"props":1253,"children":1254},{"style":284},[1255],{"type":55,"value":1221},{"type":49,"tag":196,"props":1257,"children":1258},{"style":209},[1259],{"type":55,"value":1226},{"type":49,"tag":196,"props":1261,"children":1262},{"style":203},[1263],{"type":55,"value":1264},">\n",{"type":49,"tag":58,"props":1266,"children":1267},{},[1268],{"type":55,"value":1269},"Pass exact direct spec paths when the user supplied them. For root-mode inputs,\nexpand model-required files first, then pass those concrete annotation\u002Fmedia\npaths to the helper.",{"type":49,"tag":58,"props":1271,"children":1272},{},[1273,1275,1280,1282,1287,1289,1295],{"type":55,"value":1274},"If the helper reports a missing client tool such as ",{"type":49,"tag":130,"props":1276,"children":1278},{"className":1277},[],[1279],{"type":55,"value":866},{"type":55,"value":1281}," for ",{"type":49,"tag":130,"props":1283,"children":1285},{"className":1284},[],[1286],{"type":55,"value":784},{"type":55,"value":1288}," path\nverification, install the smallest needed package after user approval, then\nrerun the same command with ",{"type":49,"tag":130,"props":1290,"children":1292},{"className":1291},[],[1293],{"type":55,"value":1294},"--install-missing-tools",{"type":55,"value":1296}," and do not proceed until\nthe rerun verifies the paths.",{"type":49,"tag":58,"props":1298,"children":1299},{},[1300],{"type":55,"value":1301},"When the selected model skill warns that large S3 media should be staged, copy\nor extract the data once to platform-visible storage before creating launch\nartifacts, then validate those staged paths with the same preflight helper.\nRecord the source URI and staged path in the run workspace so AutoML summaries\ncan distinguish data staging time from training\u002Fevaluation time.",{"type":49,"tag":58,"props":1303,"children":1304},{},[1305,1307,1313,1314,1320,1322,1328,1330,1335,1337,1343,1344,1350,1352,1357,1359,1365,1367,1372,1374,1380],{"type":55,"value":1306},"For ",{"type":49,"tag":130,"props":1308,"children":1310},{"className":1309},[],[1311],{"type":55,"value":1312},"local-docker",{"type":55,"value":329},{"type":49,"tag":130,"props":1315,"children":1317},{"className":1316},[],[1318],{"type":55,"value":1319},"remote-docker",{"type":55,"value":1321},", always pass the selected image with\n",{"type":49,"tag":130,"props":1323,"children":1325},{"className":1324},[],[1326],{"type":55,"value":1327},"--container-image",{"type":55,"value":1329}," after resolving ",{"type":49,"tag":130,"props":1331,"children":1333},{"className":1332},[],[1334],{"type":55,"value":611},{"type":55,"value":1336}," from\n",{"type":49,"tag":130,"props":1338,"children":1340},{"className":1339},[],[1341],{"type":55,"value":1342},"skill_info.yaml",{"type":55,"value":227},{"type":49,"tag":130,"props":1345,"children":1347},{"className":1346},[],[1348],{"type":55,"value":1349},"versions.yaml",{"type":55,"value":1351},". The helper verifies Docker reachability,\nNVIDIA Container Toolkit registration, GPU memory, selected-image architecture\ncompatibility when known, and a GPU-visible smoke container before launch. For\n",{"type":49,"tag":130,"props":1353,"children":1355},{"className":1354},[],[1356],{"type":55,"value":1319},{"type":55,"value":1358},", pass ",{"type":49,"tag":130,"props":1360,"children":1362},{"className":1361},[],[1363],{"type":55,"value":1364},"--docker-host",{"type":55,"value":1366}," or export ",{"type":49,"tag":130,"props":1368,"children":1370},{"className":1369},[],[1371],{"type":55,"value":1034},{"type":55,"value":1373},"; the helper queries\nGPUs and validates bind-mounted paths through the remote daemon instead of using\nlocal host state. If the selected or smoke image is not present on the target\nDocker host, ask before pulling it or rerun with ",{"type":49,"tag":130,"props":1375,"children":1377},{"className":1376},[],[1378],{"type":55,"value":1379},"--pull-smoke-image",{"type":55,"value":1381}," after\napproval.",{"type":49,"tag":58,"props":1383,"children":1384},{},[1385,1387,1393,1395,1401,1403,1409],{"type":55,"value":1386},"When a model skill lists annotation-level required fields, pass them with\n",{"type":49,"tag":130,"props":1388,"children":1390},{"className":1389},[],[1391],{"type":55,"value":1392},"--json-required-field \u003Cpath-label>=\u003Cfield>[,\u003Cfield>...]",{"type":55,"value":1394}," so schema\u002Fdata\ncontent issues fail during preflight rather than inside the first training\ncontainer. Do not add required annotation fields from old failure history; only\nenforce fields documented as required by the current model skill.\nFor local JSON\u002FJSONL annotation paths, the helper prints ",{"type":49,"tag":130,"props":1396,"children":1398},{"className":1397},[],[1399],{"type":55,"value":1400},"records=\u003CN>",{"type":55,"value":1402},"; use the\ntrain annotation count as ",{"type":49,"tag":130,"props":1404,"children":1406},{"className":1405},[],[1407],{"type":55,"value":1408},"automl_settings[\"train_sample_count\"]",{"type":55,"value":1410}," for\nsample-count-sensitive AutoML runs before recommendations are generated.\nIf the model skill documents a run-local patch strategy for a missing required\nfield, create the patched copy in the current run workspace, update the spec\npaths to that copy, and rerun the content check before launch. Do not ask the\nuser to mutate source datasets unless the model skill says patching is\nimpossible.",{"type":49,"tag":58,"props":1412,"children":1413},{},[1414,1416,1422],{"type":55,"value":1415},"Do not use ",{"type":49,"tag":130,"props":1417,"children":1419},{"className":1418},[],[1420],{"type":55,"value":1421},"--skip-platform-access",{"type":55,"value":1423}," for a real launch. That flag is only for\ndry environment checks or for cases where the user has already provided explicit\nmanual proof of platform and storage access. If the helper cannot verify remote\nAPI, CLI, cluster, or object-store access, treat preflight as failed and do not\ngenerate launch artifacts.",{"type":49,"tag":58,"props":1425,"children":1426},{},[1427],{"type":55,"value":1428},"For SLURM:",{"type":49,"tag":105,"props":1430,"children":1431},{},[1432,1506,1526,1586,1599,1604,1625],{"type":49,"tag":109,"props":1433,"children":1434},{},[1435,1437,1443,1445,1451,1453,1458,1460,1465,1467,1473,1475,1481,1483,1489,1490,1496,1498,1504],{"type":55,"value":1436},"Require ",{"type":49,"tag":130,"props":1438,"children":1440},{"className":1439},[],[1441],{"type":55,"value":1442},"SLURM_USER",{"type":55,"value":1444},", ",{"type":49,"tag":130,"props":1446,"children":1448},{"className":1447},[],[1449],{"type":55,"value":1450},"SLURM_HOSTNAME",{"type":55,"value":1452},", a partition intent, and one of\n",{"type":49,"tag":130,"props":1454,"children":1456},{"className":1455},[],[1457],{"type":55,"value":831},{"type":55,"value":1459}," or ",{"type":49,"tag":130,"props":1461,"children":1463},{"className":1462},[],[1464],{"type":55,"value":839},{"type":55,"value":1466},". If the user says to use the cluster\ndefault partition, pass an empty partition\u002Fomit the partition directive; do\nnot substitute a site-specific value such as ",{"type":49,"tag":130,"props":1468,"children":1470},{"className":1469},[],[1471],{"type":55,"value":1472},"batch",{"type":55,"value":1474},".\nUse the selected platform helper's ",{"type":49,"tag":130,"props":1476,"children":1478},{"className":1477},[],[1479],{"type":55,"value":1480},"Resource defaults",{"type":55,"value":1482}," for runtime values.\nFor the packaged SLURM defaults, generate launchers with\n",{"type":49,"tag":130,"props":1484,"children":1486},{"className":1485},[],[1487],{"type":55,"value":1488},"SLURM_TIME_HOURS=4",{"type":55,"value":329},{"type":49,"tag":130,"props":1491,"children":1493},{"className":1492},[],[1494],{"type":55,"value":1495},"SLURM_TIMEOUT_HOURS=3.8",{"type":55,"value":1497},"; never invent a\n12-hour default for the 4-hour partition list.\nLaunching the orchestrator with ",{"type":49,"tag":130,"props":1499,"children":1501},{"className":1500},[],[1502],{"type":55,"value":1503},"nohup",{"type":55,"value":1505}," or in the background is allowed for\ndurability, but it does not satisfy chat monitoring by itself. After launch,\nkeep a foreground chat-side polling loop attached until terminal state or\nexplicit detach.",{"type":49,"tag":109,"props":1507,"children":1508},{},[1509,1511,1516,1518,1524],{"type":55,"value":1510},"Split comma-separated ",{"type":49,"tag":130,"props":1512,"children":1514},{"className":1513},[],[1515],{"type":55,"value":1450},{"type":55,"value":1517},", resolve hosts where possible, and\nrequire passwordless ",{"type":49,"tag":130,"props":1519,"children":1521},{"className":1520},[],[1522],{"type":55,"value":1523},"ssh -o BatchMode=yes",{"type":55,"value":1525}," to at least one host.",{"type":49,"tag":109,"props":1527,"children":1528},{},[1529,1531,1537,1539,1545,1547,1553,1555,1561,1563,1569,1571,1577,1579,1585],{"type":55,"value":1530},"If SSH fails, do not offer several equivalent choices. Ask for\n",{"type":49,"tag":130,"props":1532,"children":1534},{"className":1533},[],[1535],{"type":55,"value":1536},"SSH_KEY_PATH=\u002Fpath\u002Fto\u002Fprivate_key",{"type":55,"value":1538}," and show the passwordless setup steps:\ncreate a key if needed with\n",{"type":49,"tag":130,"props":1540,"children":1542},{"className":1541},[],[1543],{"type":55,"value":1544},"ssh-keygen -t ed25519 -N \"\" -f ~\u002F.ssh\u002Fid_ed25519",{"type":55,"value":1546},"; install it with\n",{"type":49,"tag":130,"props":1548,"children":1550},{"className":1549},[],[1551],{"type":55,"value":1552},"ssh-copy-id -i ~\u002F.ssh\u002Fid_ed25519.pub \u003CSLURM_USER>@\u003Clogin-host>",{"type":55,"value":1554},"; trust the\nhost with ",{"type":49,"tag":130,"props":1556,"children":1558},{"className":1557},[],[1559],{"type":55,"value":1560},"ssh-keyscan -H \u003Clogin-host> >> ~\u002F.ssh\u002Fknown_hosts",{"type":55,"value":1562},"; set\n",{"type":49,"tag":130,"props":1564,"children":1566},{"className":1565},[],[1567],{"type":55,"value":1568},"chmod 600 ~\u002F.ssh\u002Fid_ed25519",{"type":55,"value":1570},"; verify with\n",{"type":49,"tag":130,"props":1572,"children":1574},{"className":1573},[],[1575],{"type":55,"value":1576},"ssh -o BatchMode=yes -i ~\u002F.ssh\u002Fid_ed25519 \u003CSLURM_USER>@\u003Clogin-host> 'hostname'",{"type":55,"value":1578},";\nthen rerun with ",{"type":49,"tag":130,"props":1580,"children":1582},{"className":1581},[],[1583],{"type":55,"value":1584},"SSH_KEY_PATH=~\u002F.ssh\u002Fid_ed25519",{"type":55,"value":137},{"type":49,"tag":109,"props":1587,"children":1588},{},[1589,1591,1597],{"type":55,"value":1590},"After SSH passes, validate dataset annotation\u002Fmedia paths on the remote login\nhost with ",{"type":49,"tag":130,"props":1592,"children":1594},{"className":1593},[],[1595],{"type":55,"value":1596},"test -e",{"type":55,"value":1598}," or an equivalent read-only command.",{"type":49,"tag":109,"props":1600,"children":1601},{},[1602],{"type":55,"value":1603},"Only then create runner scripts, specs, workspaces, or submit jobs.",{"type":49,"tag":109,"props":1605,"children":1606},{},[1607,1609,1615,1617,1623],{"type":55,"value":1608},"For multi-GPU Slurm jobs, rely on the SDK Slurm backend to request\n",{"type":49,"tag":130,"props":1610,"children":1612},{"className":1611},[],[1613],{"type":55,"value":1614},"--gpus-per-node=\u003CN>",{"type":55,"value":1616},". Do not generate manual ",{"type":49,"tag":130,"props":1618,"children":1620},{"className":1619},[],[1621],{"type":55,"value":1622},"--gpus=\u003CN>",{"type":55,"value":1624}," sbatch snippets;\nthat can spread GPUs across nodes and leave allocated GPUs idle.",{"type":49,"tag":109,"props":1626,"children":1627},{},[1628],{"type":55,"value":1629},"For full-matrix or multi-node launches, submit one smoke job first. Launch\nthe full matrix only after the smoke reaches training, emits the requested\nmetric\u002Fstatus record, and shows expected GPU utilization.",{"type":49,"tag":58,"props":1631,"children":1632},{},[1633,1635,1641,1642,1648,1650,1656],{"type":55,"value":1634},"For AutoML status, prefer structured controller\u002Fbrain state and job metadata\n(",{"type":49,"tag":130,"props":1636,"children":1638},{"className":1637},[],[1639],{"type":55,"value":1640},"active_jobs.json",{"type":55,"value":1444},{"type":49,"tag":130,"props":1643,"children":1645},{"className":1644},[],[1646],{"type":55,"value":1647},".automl\u002Fcontroller\u002F*.json",{"type":55,"value":1649},", result JSON, and\n",{"type":49,"tag":130,"props":1651,"children":1653},{"className":1652},[],[1654],{"type":55,"value":1655},"results_dir\u002Ftrain\u002Fstatus.json",{"type":55,"value":1657},") before scanning raw logs. Parse logs only as a\nfallback or when the user specifically asks for log-level investigation.",{"type":49,"tag":58,"props":1659,"children":1660},{},[1661,1663,1669,1671,1676],{"type":55,"value":1662},"For local Docker, validate Docker\u002FGPU access and local dataset paths before\nwriting launch artifacts. For Brev and Kubernetes, validate API or\ncluster access plus object-storage credentials and ",{"type":49,"tag":130,"props":1664,"children":1666},{"className":1665},[],[1667],{"type":55,"value":1668},"aws s3 ls",{"type":55,"value":1670}," readability for\n",{"type":49,"tag":130,"props":1672,"children":1674},{"className":1673},[],[1675],{"type":55,"value":784},{"type":55,"value":1677}," inputs before writing launch artifacts. For mounted shared-storage or\nPVC paths on those remote platforms, require manual proof that the path is\nmounted into the job environment; the helper fails closed rather than accepting\nunverified remote mount paths.",{"type":49,"tag":64,"props":1679,"children":1681},{"id":1680},"runtime-and-configuration-review",[1682],{"type":55,"value":1683},"Runtime And Configuration Review",{"type":49,"tag":58,"props":1685,"children":1686},{},[1687],{"type":55,"value":1688},"Before any side-effecting launch, show a concise review:",{"type":49,"tag":299,"props":1690,"children":1691},{},[1692,1697,1702,1707,1712,1717],{"type":49,"tag":109,"props":1693,"children":1694},{},[1695],{"type":55,"value":1696},"selected platform and exact container image",{"type":49,"tag":109,"props":1698,"children":1699},{},[1700],{"type":55,"value":1701},"GPU ids\u002Fcount and nodes, including any GPUs avoided because they are already\noccupied",{"type":49,"tag":109,"props":1703,"children":1704},{},[1705],{"type":55,"value":1706},"dataset roots or direct spec paths, with sample counts when available",{"type":49,"tag":109,"props":1708,"children":1709},{},[1710],{"type":55,"value":1711},"important model\u002Fworkflow overrides that differ from template defaults",{"type":49,"tag":109,"props":1713,"children":1714},{},[1715],{"type":55,"value":1716},"estimated runtime and the assumptions behind it",{"type":49,"tag":109,"props":1718,"children":1719},{},[1720],{"type":55,"value":1721},"monitoring interval and whether chat-side monitoring will stay attached",{"type":49,"tag":58,"props":1723,"children":1724},{},[1725,1727,1733],{"type":55,"value":1726},"For AutoML, also show the algorithm, metric\u002Fdirection, recommendation budget,\nsearch parameters, ranges, and generated\u002Fdefault recommendation details as\ndescribed in ",{"type":49,"tag":130,"props":1728,"children":1730},{"className":1729},[],[1731],{"type":55,"value":1732},"skills\u002Fapplications\u002Ftao-run-automl\u002FSKILL.md",{"type":55,"value":1734},". Ask for confirmation after\nthis review. If the user supplied a time limit, flag any plan that exceeds it\nand offer concrete reductions before launch.",{"type":49,"tag":1736,"props":1737,"children":1738},"style",{},[1739],{"type":55,"value":1740},"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":1742,"total":1844},[1743,1760,1774,1788,1800,1815,1830],{"slug":1744,"name":1744,"fn":1745,"description":1746,"org":1747,"tags":1748,"stars":23,"repoUrl":24,"updatedAt":1759},"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},[1749,1752,1755,1756],{"name":1750,"slug":1751,"type":15},"Data Analysis","data-analysis",{"name":1753,"slug":1754,"type":15},"Data Engineering","data-engineering",{"name":9,"slug":8,"type":15},{"name":1757,"slug":1758,"type":15},"Performance","performance","2026-07-14T05:28:43.176466",{"slug":1761,"name":1761,"fn":1762,"description":1763,"org":1764,"tags":1765,"stars":23,"repoUrl":24,"updatedAt":1773},"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},[1766,1769,1772],{"name":1767,"slug":1768,"type":15},"Deployment","deployment",{"name":1770,"slug":1771,"type":15},"Infrastructure","infrastructure",{"name":9,"slug":8,"type":15},"2026-07-14T05:29:06.667109",{"slug":1775,"name":1775,"fn":1776,"description":1777,"org":1778,"tags":1779,"stars":23,"repoUrl":24,"updatedAt":1787},"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},[1780,1783,1784],{"name":1781,"slug":1782,"type":15},"Agents","agents",{"name":9,"slug":8,"type":15},{"name":1785,"slug":1786,"type":15},"Research","research","2026-07-14T05:28:06.816956",{"slug":1789,"name":1789,"fn":1790,"description":1791,"org":1792,"tags":1793,"stars":23,"repoUrl":24,"updatedAt":1799},"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},[1794,1795,1796],{"name":1750,"slug":1751,"type":15},{"name":9,"slug":8,"type":15},{"name":1797,"slug":1798,"type":15},"Testing","testing","2026-07-17T05:29:03.913266",{"slug":1801,"name":1801,"fn":1802,"description":1803,"org":1804,"tags":1805,"stars":23,"repoUrl":24,"updatedAt":1814},"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},[1806,1807,1810,1811],{"name":17,"slug":18,"type":15},{"name":1808,"slug":1809,"type":15},"Imaging","imaging",{"name":9,"slug":8,"type":15},{"name":1812,"slug":1813,"type":15},"Video","video","2026-07-17T05:28:53.905004",{"slug":1816,"name":1816,"fn":1817,"description":1818,"org":1819,"tags":1820,"stars":23,"repoUrl":24,"updatedAt":1829},"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},[1821,1822,1825,1826],{"name":1767,"slug":1768,"type":15},{"name":1823,"slug":1824,"type":15},"Docker","docker",{"name":9,"slug":8,"type":15},{"name":1827,"slug":1828,"type":15},"Operations","operations","2026-07-17T05:28:56.913999",{"slug":1831,"name":1831,"fn":1832,"description":1833,"org":1834,"tags":1835,"stars":23,"repoUrl":24,"updatedAt":1843},"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},[1836,1837,1840],{"name":9,"slug":8,"type":15},{"name":1838,"slug":1839,"type":15},"Quantum Computing","quantum-computing",{"name":1841,"slug":1842,"type":15},"Simulation","simulation","2026-07-14T05:26:58.898253",305,{"items":1846,"total":1997},[1847,1865,1881,1892,1904,1918,1931,1945,1956,1965,1979,1988],{"slug":1848,"name":1848,"fn":1849,"description":1850,"org":1851,"tags":1852,"stars":1862,"repoUrl":1863,"updatedAt":1864},"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},[1853,1856,1859],{"name":1854,"slug":1855,"type":15},"Documentation","documentation",{"name":1857,"slug":1858,"type":15},"MCP","mcp",{"name":1860,"slug":1861,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":1866,"name":1866,"fn":1867,"description":1868,"org":1869,"tags":1870,"stars":1878,"repoUrl":1879,"updatedAt":1880},"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},[1871,1874,1875],{"name":1872,"slug":1873,"type":15},"Containers","containers",{"name":1767,"slug":1768,"type":15},{"name":1876,"slug":1877,"type":15},"Python","python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":1882,"name":1882,"fn":1883,"description":1884,"org":1885,"tags":1886,"stars":1878,"repoUrl":1879,"updatedAt":1891},"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},[1887,1890],{"name":1888,"slug":1889,"type":15},"CI\u002FCD","ci-cd",{"name":1767,"slug":1768,"type":15},"2026-07-14T05:25:59.97109",{"slug":1893,"name":1893,"fn":1894,"description":1895,"org":1896,"tags":1897,"stars":1878,"repoUrl":1879,"updatedAt":1903},"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},[1898,1899,1900],{"name":1888,"slug":1889,"type":15},{"name":1767,"slug":1768,"type":15},{"name":1901,"slug":1902,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":1905,"name":1905,"fn":1906,"description":1907,"org":1908,"tags":1909,"stars":1878,"repoUrl":1879,"updatedAt":1917},"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},[1910,1913,1914],{"name":1911,"slug":1912,"type":15},"Debugging","debugging",{"name":1901,"slug":1902,"type":15},{"name":1915,"slug":1916,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":1919,"name":1919,"fn":1920,"description":1921,"org":1922,"tags":1923,"stars":1878,"repoUrl":1879,"updatedAt":1930},"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},[1924,1927],{"name":1925,"slug":1926,"type":15},"Best Practices","best-practices",{"name":1928,"slug":1929,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":1932,"name":1932,"fn":1933,"description":1934,"org":1935,"tags":1936,"stars":1878,"repoUrl":1879,"updatedAt":1944},"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},[1937,1940,1943],{"name":1938,"slug":1939,"type":15},"Machine Learning","machine-learning",{"name":1941,"slug":1942,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":1946,"name":1946,"fn":1947,"description":1948,"org":1949,"tags":1950,"stars":1878,"repoUrl":1879,"updatedAt":1955},"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},[1951,1954],{"name":1952,"slug":1953,"type":15},"QA","qa",{"name":1797,"slug":1798,"type":15},"2026-07-14T05:25:53.673039",{"slug":1957,"name":1957,"fn":1958,"description":1959,"org":1960,"tags":1961,"stars":1878,"repoUrl":1879,"updatedAt":1964},"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},[1962,1963],{"name":1767,"slug":1768,"type":15},{"name":1770,"slug":1771,"type":15},"2026-07-14T05:25:49.362534",{"slug":1966,"name":1966,"fn":1967,"description":1968,"org":1969,"tags":1970,"stars":1878,"repoUrl":1879,"updatedAt":1978},"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},[1971,1974,1975],{"name":1972,"slug":1973,"type":15},"Code Review","code-review",{"name":1901,"slug":1902,"type":15},{"name":1976,"slug":1977,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":1980,"name":1980,"fn":1981,"description":1982,"org":1983,"tags":1984,"stars":1878,"repoUrl":1879,"updatedAt":1987},"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},[1985,1986],{"name":1952,"slug":1953,"type":15},{"name":1797,"slug":1798,"type":15},"2026-07-14T05:25:54.928983",{"slug":1989,"name":1989,"fn":1990,"description":1991,"org":1992,"tags":1993,"stars":1878,"repoUrl":1879,"updatedAt":1996},"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},[1994,1995],{"name":17,"slug":18,"type":15},{"name":1888,"slug":1889,"type":15},"2026-07-30T05:29:03.275638",496]