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

# CLI 치트 시트

> 모든 vesslctl 명령어를 한눈에 확인하고 바로 복사해서 사용할 수 있는 예제를 알아봐요.

## 인증

| 명령어                    | 설명                            |
| ---------------------- | ----------------------------- |
| `vesslctl auth login`  | 브라우저 OAuth로 로그인(이메일/비밀번호로 폴백) |
| `vesslctl auth logout` | 로그아웃하고 저장된 자격 증명 삭제           |
| `vesslctl auth status` | 현재 인증된 사용자 표시                 |

## 조직 & 팀

| 명령어                                  | 설명              |
| ------------------------------------ | --------------- |
| `vesslctl org list`                  | 소속된 조직 목록 조회    |
| `vesslctl org show`                  | 현재 조직의 상세 정보 표시 |
| `vesslctl org switch <name>`         | 기본 조직 전환        |
| `vesslctl org create --name <name>`  | 새 조직 생성         |
| `vesslctl team list`                 | 현재 조직의 팀 목록 조회  |
| `vesslctl team show`                 | 현재 팀의 상세 정보 표시  |
| `vesslctl team switch <name>`        | 기본 팀 전환         |
| `vesslctl team create --name <name>` | 새 팀 생성          |

## 설정

| 명령어                                       | 설명                                  |
| ----------------------------------------- | ----------------------------------- |
| `vesslctl config show`                    | 현재 CLI 설정 표시                        |
| `vesslctl config set default_org <name>`  | 기본 조직 설정                            |
| `vesslctl config set default_team <name>` | 기본 팀 설정                             |
| `vesslctl config set output_format <fmt>` | 기본 출력 형식 설정(`table`, `json`, `csv`) |

## Workspace

별칭: `vesslctl ws`

| 명령어                                   | 설명                        |
| ------------------------------------- | ------------------------- |
| `vesslctl workspace list`             | 현재 팀의 Workspace 목록 조회     |
| `vesslctl workspace show <slug>`      | Workspace 상세 정보 및 상태 표시   |
| `vesslctl workspace create`           | 새 Workspace 생성(아래 플래그 참조) |
| `vesslctl workspace ssh <slug>`       | 실행 중인 Workspace에 SSH 접속   |
| `vesslctl workspace logs <slug>`      | Workspace 로그 확인           |
| `vesslctl workspace pause <slug>`     | Workspace 일시정지(환경 보존)     |
| `vesslctl workspace start <slug>`     | 일시정지된 Workspace 재시작       |
| `vesslctl workspace terminate <slug>` | Workspace 종료 및 삭제         |

**주요 create 플래그:**

```bash theme={null}
vesslctl workspace create \
  --name <name> \
  --cluster <cluster> \
  --resource-spec <spec> \
  --image <image> \
  --ssh-key <ssh-key-slug> \
  --port jupyter:8888:http
```

<Tip>
  실행 중인 Workspace 안에서는 워크로드 토큰(`VESSLCTL_ACCESS_TOKEN`, `VESSLCTL_ORG`, `VESSLCTL_TEAM`)이 미리 세팅돼 있어요. JupyterLab 터미널에서 `vesslctl workspace list`나 `vesslctl job create` 같은 명령을 별도 인증 없이 그대로 사용할 수 있어요.
</Tip>

## SSH 키

| 명령어                                                           | 설명                                 |
| ------------------------------------------------------------- | ---------------------------------- |
| `vesslctl ssh-key list`                                       | 계정에 등록된 SSH 키 조회                   |
| `vesslctl ssh-key add --name <name> --public-key-file <path>` | 파일에서 공개 키 등록                       |
| `vesslctl ssh-key add --name <name> --generate`               | 서버에서 키페어 생성(개인 키는 한 번만 출력)         |
| `vesslctl ssh-key delete <ssh-key-slug>`                      | slug로 SSH 키 삭제(`-y`로 확인 프롬프트 건너뛰기) |

## Job

| 명령어                                    | 설명                   |
| -------------------------------------- | -------------------- |
| `vesslctl job list`                    | 현재 팀의 Job 목록 조회      |
| `vesslctl job show <slug>`             | Job 상세 정보 및 상태 표시    |
| `vesslctl job create`                  | 새 배치 잡 제출(아래 플래그 참조) |
| `vesslctl job logs <slug>`             | Job 출력 로그 확인         |
| `vesslctl job export <slug>`           | Job 설정을 JSON으로 내보내기  |
| `vesslctl job terminate <slug>`        | 실행 중인 Job 취소         |
| `vesslctl job tag attach <slug> <tag>` | Job에 태그 달기           |
| `vesslctl job tag detach <slug> <tag>` | Job에서 태그 해제          |

**주요 create 플래그:**

```bash theme={null}
vesslctl job create \
  --name <name> \
  --resource-spec <spec> \
  --image <image> \
  --cmd "<command>"
```

## 클러스터 & 리소스

| 명령어                                            | 설명                    |
| ---------------------------------------------- | --------------------- |
| `vesslctl cluster list`                        | 사용 가능한 클러스터 조회        |
| `vesslctl resource-spec list`                  | 리소스 스펙 조회(GPU/CPU 설정) |
| `vesslctl resource-spec list --cluster <slug>` | 특정 클러스터의 스펙 조회        |

## Storage & Volume

별칭: `vesslctl vol`

| 명령어                                                                 | 설명                                                              |
| ------------------------------------------------------------------- | --------------------------------------------------------------- |
| `vesslctl storage list`                                             | 저장소 조회                                                          |
| `vesslctl storage show <slug>`                                      | 저장소 상세 정보 표시                                                    |
| `vesslctl storage create`                                           | Cluster storage 생성(`--name`, `--cluster`, `--capacity` 필수)      |
| `vesslctl storage delete <slug>`                                    | 저장소 삭제                                                          |
| `vesslctl volume list`                                              | Volume 조회                                                       |
| `vesslctl volume show <slug>`                                       | Volume 상세 정보 표시                                                 |
| `vesslctl volume create --name <n> --storage <slug> --teams <team>` | 새 Volume 생성(`--name`, `--storage`, `--teams` 필수)                |
| `vesslctl volume ls <slug> --prefix /`                              | Volume 내 파일 목록 조회(루트는 `/`)                                      |
| `vesslctl volume token <slug>`                                      | Volume의 임시 S3 자격 증명 받기                                          |
| `vesslctl volume upload <slug> <local_path>`                        | 로컬 파일을 Volume에 업로드                                              |
| `vesslctl volume download <slug> <local_path>`                      | Volume의 파일을 로컬에 다운로드                                            |
| `vesslctl volume update <slug>`                                     | Volume 메타데이터 업데이트(`--name`, `--description`, `--teams` 중 하나 이상) |
| `vesslctl volume delete <slug>`                                     | Volume 삭제                                                       |

## 태그

| 명령어                           | 설명                             |
| ----------------------------- | ------------------------------ |
| `vesslctl tag list`           | 현재 조직의 태그 조회                   |
| `vesslctl tag create <value>` | 태그 생성(선택: `--color "#ff0000"`) |
| `vesslctl tag delete <value>` | 값으로 태그 삭제(또는 `-s <slug>`)      |

## AI 스킬

| 명령어                      | 설명                |
| ------------------------ | ----------------- |
| `vesslctl skill install` | AI 코딩 에이전트용 스킬 설치 |
| `vesslctl skill show`    | 번들된 스킬 내용 표시      |

## 유틸리티

| 명령어                                               | 설명                                         |
| ------------------------------------------------- | ------------------------------------------ |
| `vesslctl update`                                 | vesslctl을 최신 버전으로 업데이트(`-y`로 확인 프롬프트 건너뛰기) |
| `vesslctl version`                                | vesslctl 버전 출력                             |
| `vesslctl install`                                | vesslctl을 PATH 디렉터리에 설치                    |
| `vesslctl completion install`                     | 셸 자동 감지 후 자동완성 스크립트 설치                     |
| `vesslctl completion bash\|zsh\|fish\|powershell` | 셸 자동완성 스크립트 수동 생성                          |

***

## 주요 워크플로우

### 처음 설정

```bash theme={null}
# 설치
curl -fsSL https://api.cloud.vessl.ai/cli/install.sh | bash

# 인증
vesslctl auth login

# 기본값 설정
vesslctl config set default_org <your-org>
vesslctl config set default_team <your-team>

# 확인
vesslctl auth status
vesslctl config show
```

### Workspace 실행 및 접속

```bash theme={null}
vesslctl workspace create \
  --name dev-box \
  --cluster <cluster-name> \
  --resource-spec <spec-name> \
  --image pytorch/pytorch:2.3.0-cuda12.1-cudnn8-devel

# `vesslctl workspace list`에서 Workspace slug(예: dev-box-abc123)를 복사해요.
vesslctl workspace show <workspace-slug>    # "running" 상태가 될 때까지 대기
vesslctl workspace ssh <workspace-slug>     # 접속
vesslctl workspace pause <workspace-slug>   # 오늘은 여기까지
```

### 배치 잡 제출

```bash theme={null}
vesslctl job create \
  --name train-v2 \
  --resource-spec <spec-name> \
  --image pytorch/pytorch:2.3.0-cuda12.1-cudnn8-devel \
  --cmd "python train.py --epochs 50"

vesslctl job logs train-v2 --follow
```

### Object storage에 데이터 업로드

```bash theme={null}
# Volume 생성(--name, --storage, --teams 필수)
vesslctl volume create --name my-dataset --storage <storage-name> --teams <team>

# `vesslctl volume list`에서 Volume slug(예: my-dataset-abc123)를 복사해요.
vesslctl volume upload <volume-slug> ./data/

# 확인
vesslctl volume ls <volume-slug> --prefix /
```

S3 호환 도구(DVC, `aws s3 cp`, 커스텀 파이프라인 등)와 연동하려면 `vesslctl volume token <volume-slug>`으로 임시 S3 자격 증명과 엔드포인트 URL을 받아서 쓰면 돼요.
