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

# Create a new workspace

To **create** a **workspace**, you need to select few options including workspace name, cluster, resource, image and few advanced settings.

<div style={{ marginBottom: '10px', position: 'relative', paddingTop: '400px' }}>
  <iframe
    src="https://demo.arcade.software/T2ZexVTq6VFYqgpGehMy?embed&embed_mobile=tab&embed_desktop=inline&show_copy_link=true"
    frameBorder="0"
    loading="lazy"
    webkitAllowFullScreen=""
    mozAllowFullScreen=""
    title="Dashboards"
    style={{
  position: 'absolute',
  top: '0px',
  left: '0px',
  width: '100%',
  height: '400px',
  colorScheme: 'light',
}}
  />
</div>

<CardGroup cols={1}>
  <Card icon="layer-group" title="Create a new Workspace on VESSL" href="https://app.vessl.ai" horizontal>
    Enjoy your interactive works
  </Card>
</CardGroup>

## Workspace name

Once you start to create a new workspace, the default workspace name will be randomly generated. Specify a good name to remember.

## Cluster

You can choose between **VESSL Cloud**, which is a cluster managed by VESSL AI, or a custom cluster that you register yourself. (See [configure organization cluster](/guides/clusters/aws#private-clouds) for more details.) **VESSL Cloud** is always hosted on a cloud vendor's server, while the custom cluster can be hosted either on a cloud server or on an on-premises server.

<div style={{ marginBottom: '10px', position: 'relative', paddingTop: '400px' }}>
  <iframe
    src="https://demo.arcade.software/likct3niS3k00tkciXn3?embed"
    frameBorder="0"
    loading="lazy"
    webkitAllowFullScreen=""
    mozAllowFullScreen=""
    title="Dashboards"
    style={{
  position: 'absolute',
  top: '0px',
  left: '0px',
  width: '100%',
  height: '400px',
  colorScheme: 'light',
}}
  />
</div>

We support the following integrations:

* **AWS EKS**
* **GCP GKE**

## Resource

Choose the type of resource that the container will use. Select the resource among the dropdown option or specify the requirements manually.

<div style={{ marginBottom: '10px', position: 'relative', paddingTop: '400px' }}>
  <iframe
    src="https://demo.arcade.software/HquimbjrOwwroTA7jr3o?embed"
    frameBorder="0"
    loading="lazy"
    webkitAllowFullScreen=""
    mozAllowFullScreen=""
    title="Dashboards"
    style={{
  position: 'absolute',
  top: '0px',
  left: '0px',
  width: '100%',
  height: '400px',
  colorScheme: 'light',
}}
  />
</div>

## Max runtime

Specify the max runtime for this workspace. After max runtime, workspace will be automatically stopped.

<Note>
  For the **Enterprise plan**, Organization admin can limit the max runtime that
  users can input.
</Note>

<div style={{ marginBottom: '10px', position: 'relative', paddingTop: '400px' }}>
  <iframe
    src="https://demo.arcade.software/ml3odvwjKH0MXlg9SwUF?embed"
    frameBorder="0"
    loading="lazy"
    webkitAllowFullScreen=""
    mozAllowFullScreen=""
    title="Dashboards"
    style={{
  position: 'absolute',
  top: '0px',
  left: '0px',
  width: '100%',
  height: '400px',
  colorScheme: 'light',
}}
  />
</div>

## Image

You can choose the Docker image that the workspace container will use. There are two types of images: the **Managed Image** and the **Custom Image**. Select the Docker image type that you want to run on the workspace container.

<Tabs>
  <Tab title="Managed Image">
    For the **Managed Image**, you can simply select such an option, then the
    image managed by VESSL AI will be used in default. You can run Jupyter
    services on the managed image.

    <div
      style={{
    marginBottom: '80px',
    position: 'relative',
    paddingTop: '400px',
  }}
    >
      <iframe
        src="https://demo.arcade.software/kxuQfsDAsV2dSSh4EQ64?embed"
        frameBorder="0"
        loading="lazy"
        webkitAllowFullScreen=""
        mozAllowFullScreen=""
        title="Dashboards"
        style={{
      position: 'absolute',
      top: '0px',
      left: '0px',
      width: '100%',
      height: '450px',
      colorScheme: 'light',
    }}
      />
    </div>
  </Tab>

  <Tab title="Custom Image">
    <div
      style={{
    marginBottom: '80px',
    position: 'relative',
    paddingTop: '400px',
  }}
    >
      <iframe
        src="https://demo.arcade.software/CrIdLPMVMJsIAVPCvAny?embed"
        frameBorder="0"
        loading="lazy"
        webkitAllowFullScreen=""
        mozAllowFullScreen=""
        title="Dashboards"
        style={{
      position: 'absolute',
      top: '0px',
      left: '0px',
      width: '100%',
      height: '450px',
      colorScheme: 'light',
    }}
      />
    </div>

    You can use any docker images from **Docker Hub** or
    [AWS ECR](https://aws.amazon.com/ecr/). To run a workspace with custom
    images, your custom images have to satisfy below requirements.

    * Jupyterlab
    * VESSL runs Jupyterlab and expose port `8888`. Jupyter should be
      pre-installed in the container image.
    * sshd
    * VESSL runs sshd and expose port `22` as NodePort. sshd package should be
      pre-installed in the container image.
    * Persistent Volume Claim (PVC) mountable at `/root`
    * VESSL mounts a PVC at `/root` to keep state across Pod restarts.

    ### Public image

    To pull images from the public Docker registry, you can simply pass the image
    URL as the below example.

    ### Private image

    To pull images from the private Docker registry or the private AWS ECR, you
    should [integrate your credentials in organization settings
    first](/guides/organization/integrations.mdx). Then check the private image
    checkbox and select the credentials you have just integrated. Below is an
    example of a private image from the AWS ECR.
  </Tab>
</Tabs>

<Note>Debian based images are compatible.</Note>

## Volumes

Volumes enable you to bring data into your workspace and provide persistent storage solutions for your development environment. They are essential for accessing datasets, code repositories, and other files needed for your interactive work.

### Import Volumes

Import volumes download data from external sources into your workspace container at startup. This is useful for:

* **Code**: Pull code from version control systems such as GitHub, GitLab, or BitBucket.
* **Dataset and Model**: Retrieve datasets or models defined in VESSL Dataset or VESSL Model Registry.
* **Hugging Face**: Fetch datasets or models from Hugging Face repositories.
* **Files**: Incorporate files from VESSL Storage volumes.
* **Object Storage**: Download data directly from cloud services like AWS S3 or Google Cloud Storage.

### Mount Volumes

Mount volumes provide persistent storage solutions, directly attaching to your workspace container for ongoing data access. They are particularly valuable for:

* **Dataset**: Attach datasets predefined in VESSL Dataset for direct use in the container.
* **VESSL Storage**: Mount volumes from VESSL Storage for persistent file access across workspace sessions.
* **External Storage**: Connect to external storage solutions like AWS S3 or Google Cloud Storage.
* **On-premises Storage**: Connect to on-site data storage solutions using Network File System (NFS) or host path configurations (custom clusters only).
* **GCS Fuse**: Integrate Google Cloud Storage using GCS Fuse for seamless data accessibility.

<Note>
  Unlike runs, workspaces don't typically use export volumes since the `/root` directory provides built-in persistence for your work.
</Note>

<Card title="Learn more about VESSL Storage" icon="database" href="/guides/storages/overview">
  Explore VESSL's storage system for managing your data and volumes.
</Card>

## Advanced setting

<div
  style={{
marginBottom: '120px',
position: 'relative',
paddingTop: '400px',
}}
>
  <iframe
    src="https://demo.arcade.software/pABHJHyqwZiIaabD3xfr?embed"
    frameBorder="0"
    loading="lazy"
    webkitAllowFullScreen=""
    mozAllowFullScreen=""
    title="Dashboards"
    style={{
  position: 'absolute',
  top: '0px',
  left: '0px',
  width: '100%',
  height: '500px',
  colorScheme: 'light',
}}
  />
</div>

### Disk

You can specify the **disk** **size** to use in your container. This will be the request storage size of your PVC. **The disk size cannot be changed once the workspace is created.**

<Warning>
  Disk size can be ignored in a custom cluster due to limitation of kubernetes.
  ([official
  docs](https://kubernetes.io/docs/concepts/storage/volumes/#resources))
</Warning>

### Port

You can customize **port** settings. By default, 8888 (jupyter) and 22 (ssh) are exposed.

### Initialization (init) script

**Init script** is a shell script that runs every time the workspace starts. Because `/root` is the only persistent directory, packages you installed outside the home directory may reset on stop and start. In this case, you can fill **init script** with install commands such as `apt-get update && apt-get install ripgrep -y`.
