# origin compute commands

Every origin compute command with its flags: instances, instance types, images, image families, key pairs and volume attachments.

This page lists every `origin compute` command. For the options every `origin` command accepts, see [Global options](/docs/platform/reference/cli#global-options).

## launch-instance [#launch-instance]

Launch a new instance.

```sh
origin compute launch-instance [OPTIONS] --project-urn <PROJECT_URN> --image-urn <IMAGE_URN> --key-pair-urn <KEY_PAIR_URN> --instance-type <INSTANCE_TYPE>
```

| Option | Required | Description |
| --- | --- | --- |
| `--project-urn <PROJECT_URN>` | yes | URN of the project. |
| `--image-urn <IMAGE_URN>` | yes | Image to use. |
| `--subnet-urn <SUBNET_URN>` | no | Subnet the Instance will belong to. Omit to use the project’s default subnet - lazily created, on first use, in a VPC with an Internet Gateway already attached and a public IP auto-assigned to the instance’s interface. |
| `--key-pair-urn <KEY_PAIR_URN>` | yes | SSH key pair to inject into the guest’s default user. |
| `--instance-type <INSTANCE_TYPE>` | yes | Instance type to launch, e.g. “`gp1.core.2`” - see [`list-instance-types`](#list-instance-types) for the full live catalog. |
| `--volume-backend <VOLUME_BACKEND>` | no | Storage backend for the instance’s volumes. Only `pvs`, the default, is accepted; omit this option. |
| `--boot-volume-size-gib <BOOT_VOLUME_SIZE_GIB>` | no | Size of the instance’s root disk, in GiB. Omitted takes the image’s own size, which is also the smallest value accepted - a smaller one is refused rather than raised. |
| `--boot-volume-storage-class <BOOT_VOLUME_STORAGE_CLASS>` | no | Performance tier for the instance’s root disk, e.g. “`gp1`” - see [`origin storage list-storage-classes`](/docs/storage/reference/cli#list-storage-classes) for the tiers currently on offer. Omitted takes the default. |
| `--security-group-urn <SECURITY_GROUP_URN>` | no | Security groups to attach to the primary network interface. Repeatable. Omitted defaults to the VPC’s default security group. |
| `--login-user <LOGIN_USER>` | no | The account to create on the guest and inject the key pair into, overriding the image’s default user for this instance. A POSIX username other than `root`. Omitted takes the image’s default; either way the instance reports the result as `loginUser` |

## list-instance-types [#list-instance-types]

List the live catalog of launchable instance types.

```sh
origin compute list-instance-types
```

This command takes no options.

## list-image-families [#list-image-families]

List every image family on offer. A family is a stable name that resolves to the image currently designated for it. `supportEndsAt`, when set, is when upstream support for that release ends; it is advisory and nothing is refused on it. The CLI launches by image URN only; to launch by family, use the `imageFamily` field of the `launchInstance` GraphQL mutation.

```sh
origin compute list-image-families
```

This command takes no options.

## import-key-pair [#import-key-pair]

Import the public half of an SSH key pair you already have, for use when launching instances.

```sh
origin compute import-key-pair --project-urn <PROJECT_URN> --name <NAME> --public-key <PUBLIC_KEY>
```

| Option | Required | Description |
| --- | --- | --- |
| `--project-urn <PROJECT_URN>` | yes | URN of the project. |
| `--name <NAME>` | yes | Name for the key pair. |
| `--public-key <PUBLIC_KEY>` | yes | Full OpenSSH public key line, e.g. `ssh-ed25519 AAAA... comment` |

## generate-key-pair [#generate-key-pair]

Generate an SSH key pair on the platform. The private key is in the response and is never retrievable again - save it immediately.

```sh
origin compute generate-key-pair --project-urn <PROJECT_URN> --name <NAME>
```

| Option | Required | Description |
| --- | --- | --- |
| `--project-urn <PROJECT_URN>` | yes | URN of the project. |
| `--name <NAME>` | yes | Name for the key pair. |

## list-key-pairs [#list-key-pairs]

List the key pairs of a project.

```sh
origin compute list-key-pairs --project-urn <PROJECT_URN>
```

| Option | Required | Description |
| --- | --- | --- |
| `--project-urn <PROJECT_URN>` | yes | URN of the project. |

## get-key-pair [#get-key-pair]

Get a single key pair.

```sh
origin compute get-key-pair --key-pair-urn <KEY_PAIR_URN>
```

| Option | Required | Description |
| --- | --- | --- |
| `--key-pair-urn <KEY_PAIR_URN>` | yes | URN of the key pair. |

## delete-key-pair [#delete-key-pair]

Delete a key pair.

```sh
origin compute delete-key-pair --key-pair-urn <KEY_PAIR_URN>
```

| Option | Required | Description |
| --- | --- | --- |
| `--key-pair-urn <KEY_PAIR_URN>` | yes | URN of the key pair. |

## list-instances [#list-instances]

List the instances of a project.

```sh
origin compute list-instances --project-urn <PROJECT_URN>
```

| Option | Required | Description |
| --- | --- | --- |
| `--project-urn <PROJECT_URN>` | yes | URN of the project. |

## get-instance [#get-instance]

Get one instance, including its volume attachments.

```sh
origin compute get-instance --instance-urn <INSTANCE_URN>
```

| Option | Required | Description |
| --- | --- | --- |
| `--instance-urn <INSTANCE_URN>` | yes | URN of the Instance. |

## list-volume-attachments [#list-volume-attachments]

List the attachments that reference a Volume, each naming its Instance. Use it to find which Instance holds a volume that is `INUSE`: the entry whose `id` equals the volume’s `claimRef` (see [`origin storage get-volume`](/docs/storage/reference/cli#get-volume)) is the one holding it, and its `instanceUrn` is the Instance. Normally there is exactly one entry, with status `ATTACHED`; detached attachments are not listed. A volume from another project returns an empty list.

```sh
origin compute list-volume-attachments --project-urn <PROJECT_URN> --volume-urn <VOLUME_URN>
```

| Option | Required | Description |
| --- | --- | --- |
| `--project-urn <PROJECT_URN>` | yes | URN of the project the volume belongs to. |
| `--volume-urn <VOLUME_URN>` | yes | URN of the Volume. |

## start-instance [#start-instance]

Start a stopped Instance.

```sh
origin compute start-instance --instance-urn <INSTANCE_URN>
```

| Option | Required | Description |
| --- | --- | --- |
| `--instance-urn <INSTANCE_URN>` | yes | URN of the Instance. |

## stop-instance [#stop-instance]

Stop a running instance. Its network interface and volumes stay with it.

```sh
origin compute stop-instance --instance-urn <INSTANCE_URN>
```

| Option | Required | Description |
| --- | --- | --- |
| `--instance-urn <INSTANCE_URN>` | yes | URN of the Instance. |

## change-instance-type [#change-instance-type]

Change a stopped Instance’s type, so it starts again at a different size. The Instance must be stopped. It keeps its identity, its address and its volumes; only the size changes. Growing is checked against the same vCPU quota a launch is. [`list-instance-types`](#list-instance-types) shows what you can change to.

```sh
origin compute change-instance-type --instance-urn <INSTANCE_URN> --instance-type <INSTANCE_TYPE>
```

| Option | Required | Description |
| --- | --- | --- |
| `--instance-urn <INSTANCE_URN>` | yes | URN of the Instance. |
| `--instance-type <INSTANCE_TYPE>` | yes | The type to change to, e.g. “`gp1.core.4`”. |

## terminate-instance [#terminate-instance]

Terminate an instance. Its network interface and the volumes its launch created are deleted; volumes you attached yourself are detached and kept.

```sh
origin compute terminate-instance --instance-urn <INSTANCE_URN>
```

| Option | Required | Description |
| --- | --- | --- |
| `--instance-urn <INSTANCE_URN>` | yes | URN of the Instance. |

## attach-volume [#attach-volume]

Attach an available volume to an instance, running or stopped. On a running instance the disk is hot-plugged: the attachment reports `ATTACHING` and settles to `ATTACHED` once the guest sees the device. On a stopped instance it appears at the next start.

```sh
origin compute attach-volume [OPTIONS] --instance-urn <INSTANCE_URN> --volume-urn <VOLUME_URN>
```

| Option | Required | Description |
| --- | --- | --- |
| `--instance-urn <INSTANCE_URN>` | yes | URN of the Instance. |
| `--volume-urn <VOLUME_URN>` | yes | URN of the Volume. |
| `--device-name <DEVICE_NAME>` | no | Guest device name (`vda`..`vdz`). Assigned by the platform when omitted. |

## detach-volume [#detach-volume]

Detach a volume from an instance, running or stopped, making it available again. On a running instance the attachment reports `DETACHING` until the guest releases the device; the volume becomes available only after that.

```sh
origin compute detach-volume --instance-urn <INSTANCE_URN> --volume-urn <VOLUME_URN>
```

| Option | Required | Description |
| --- | --- | --- |
| `--instance-urn <INSTANCE_URN>` | yes | URN of the Instance. |
| `--volume-urn <VOLUME_URN>` | yes | URN of the Volume. |

## create-image [#create-image]

Create an image from a protected snapshot.

```sh
origin compute create-image [OPTIONS] --project-urn <PROJECT_URN> --root-device-snapshot-urn <ROOT_DEVICE_SNAPSHOT_URN> --description <DESCRIPTION>
```

| Option | Required | Description |
| --- | --- | --- |
| `--project-urn <PROJECT_URN>` | yes | URN of the project. |
| `--root-device-name <ROOT_DEVICE_NAME>` | no | Root device name: a bare virtio target, `vda`.. `vdz` (`vdc` is reserved) - not a `/dev/` path [default: `vda`]. |
| `--root-device-size <ROOT_DEVICE_SIZE>` | no | Root device size in GiB [default: 8]. |
| `--root-device-snapshot-urn <ROOT_DEVICE_SNAPSHOT_URN>` | yes | Root device backing Snapshot. |
| `--default-user <DEFAULT_USER>` | no | The account instances launched from this image log in as - the non-root user created at first boot, holding the launch’s SSH key. A POSIX username other than `root`; defaults to `cloud` |
| `--description <DESCRIPTION>` | yes | Description of the Image. |

## list-images [#list-images]

List the images available to a project, your own and platform-provided.

```sh
origin compute list-images --project-urn <PROJECT_URN>
```

| Option | Required | Description |
| --- | --- | --- |
| `--project-urn <PROJECT_URN>` | yes | URN of the project. |

## get-image [#get-image]

Get one image.

```sh
origin compute get-image --image-urn <IMAGE_URN>
```

| Option | Required | Description |
| --- | --- | --- |
| `--image-urn <IMAGE_URN>` | yes | URN of the Image. |

## update-image [#update-image]

Update a customer-owned Image’s description - the only mutable field.

```sh
origin compute update-image --image-urn <IMAGE_URN> --description <DESCRIPTION>
```

| Option | Required | Description |
| --- | --- | --- |
| `--image-urn <IMAGE_URN>` | yes | URN of the Image. |
| `--description <DESCRIPTION>` | yes | New description. |

## delete-image [#delete-image]

Delete a customer-owned Image.

```sh
origin compute delete-image --image-urn <IMAGE_URN>
```

| Option | Required | Description |
| --- | --- | --- |
| `--image-urn <IMAGE_URN>` | yes | URN of the Image. |

