> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nebius.com/llms.txt
> Use this file to discover all available pages before exploring further.

# nebius ai devlab create

<div>
  <h2>Name</h2>

  <p style={{ paddingLeft: "4ch" }}>
    <code>nebius ai devlab create</code>
  </p>

  <p style={{ paddingLeft: "7ch" }}>
    Creates a Devlab, an interactive development environment.<br />

    <br />

    Provide either --template (the template declares the container, primary route, and<br />
    default workspace path) or --image together with --primary-route-port.
  </p>
</div>

<div>
  <h2>Synopsis</h2>

  <p style={{ paddingLeft: "4ch" }}>
    ```
    nebius ai devlab create
      --args
      --async
      --auth-token-secret
      --container-command
      --container-port
      --disk-size
      --dry-run
      --env
      --env-secret
      --image
      --inject-file
      --input
      --name
      --parent-id
      --platform
      --preset
      --primary-route-port
      --public
      --registry-secret
      --shm-size
      --ssh-key
      --subnet-id
      --template
      --volume
      --working-dir
      --workspace-path
    ```
  </p>
</div>

<div>
  <h2>Options</h2>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--args` (string)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Override container arguments. Not allowed with --template.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--async` (bool)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Return immediately after starting the create operation.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--auth-token-secret` (string)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      MysteryBox secret selector with an AUTH\_TOKEN payload key for the bearer token. Selector can be a secret name, secret ID, version ID, or SECRET\_ID\@VERSION\_ID.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--container-command` (string)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Override container entrypoint command. Not allowed with --template.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--container-port` (string array)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Container port to expose (repeatable).
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--disk-size` (string)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Devlab disk size shared by the container and persistent workspace (e.g., 250Gi, 1Ti), default is 250Gi.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--dry-run` (bool)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Validate the request without creating a Devlab.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--env` (string array)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Environment variable in KEY=VALUE format (repeatable).
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--env-secret` (string array)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Environment variable from MysteryBox in KEY=SECRET\_SELECTOR format (repeatable). SECRET\_SELECTOR can be a secret name, secret ID, version ID, or SECRET\_ID\@VERSION\_ID.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--image` (string)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Container image reference in registry/path:tag or registry/path\@digest format. Mutually exclusive with --template.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--inject-file` (string array)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Inject a local config file into the container at LOCAL\_PATH:CONTAINER\_PATH (repeatable). CONTAINER\_PATH must be an absolute path; the file is read-only inside the container and limited to 64 KiB.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--input` (string array)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Template input field value in KEY=VALUE format (repeatable). Requires --template.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--name` (string)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Devlab name.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--parent-id` (string)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Parent ID (if not specified, it will be taken from the CLI profile).
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--platform` (string)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Platform of compute resources (e.g. gpu-h100-sxm), default is gpu-h100-sxm in eu-north1 and gpu-h200-sxm elsewhere.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--preset` (string)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Preset for selected platform, default is the minimum available preset for the platform.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--primary-route-port` (int)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Container port that serves the primary web UI behind the managed HTTPS route. Required without --template.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--public` (bool)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Whether to assign a public IP to the Devlab runtime VM (required for the default public SSH path), default is false.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--registry-secret` (string)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      MysteryBox secret selector with REGISTRY\_USERNAME and REGISTRY\_PASSWORD payload keys. Selector can be a secret name, secret ID, version ID, or SECRET\_ID\@VERSION\_ID.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--shm-size` (string)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Size of /dev/shm (e.g., 64Mi, 1Gi), default - 16Gi for GPU platforms, 0 for CPU.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--ssh-key` (string array)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Public key authorized for SSH access to the Devlab (repeatable).
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--subnet-id` (string)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Network subnet ID.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--template` (string)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Devlab template name (e.g. jupyter) or ID (vmapptemplate-...). Mutually exclusive with --image.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--volume` (string array)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Extra volume mount in SOURCE:CONTAINER\_PATH\[:MODE] or s3://BUCKET:/container\_path\[:MODE:PROFILE\@SECRET\_SELECTOR] format (repeatable). MODE: rw, ro (default: rw). S3 volumes require a MysteryBox secret selector. Must not overlap the workspace path.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--working-dir` (string)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Working directory (absolute path). Not allowed with --template.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--workspace-path` (string)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Absolute path of the persistent workspace inside the container. Defaults to /workspace without a template, or the template default when --template is set.
    </p>
  </div>
</div>

<div>
  <h2>Global Options</h2>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `-h, --help` (bool)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Show this message.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `-p, --profile` (string)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Set a profile for interacting with the cloud.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--format` (string)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Output format. Supported values: yaml|json|jsonpath|table|text.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `-f, --file` (string)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Input file. For 'update' commands automatically set --full=true.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `-c, --config` (string)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Provide path to config file.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--debug` (bool)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Enable debug logs.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `-I, --impersonate-service-account-id` (string)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Impersonate into the service account and use its token for a command.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--color` (bool)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Enable colored output.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--no-browser` (bool)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Do not open browser automatically on auth.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--insecure` (bool)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Disable transport security.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--auth-timeout` (duration: 2h30m10s)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Set the timeout for the request including authentication process, default is 15m0s.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--per-retry-timeout` (duration: 2h30m10s)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Set the timeout for each retry attempt, default is 20s.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--retries` (uint)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Set the number of retry attempts, 1 is disable retries, default is 3.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--timeout` (duration: 2h30m10s)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Set the timeout for the main request, default is 1m0s.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--no-check-update` (bool)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Suppress check for updates.
    </p>
  </div>

  <div style={{ paddingLeft: "4ch" }}>
    <p>
      `--no-progress` (bool)
    </p>

    <p style={{ paddingLeft: "4ch" }}>
      Suppress progress indicators and spinners.
    </p>
  </div>
</div>

*Auto generated on 14-Sep-2026*
