# Compute

Source: https://docs.quake.ai/docs/compute
Markdown: https://docs.quake.ai/docs/compute.md
> Create and manage virtual machine instances on Quake AI: choose an image and flavor, connect to project networks, and snapshot, resize, or destroy.

---

# Compute

Compute gives you virtual machines you control. You pick an image and a flavor, attach the instance to your project networks, and then start, stop, resize, snapshot, or delete it whenever you need to.

[OpenStack Nova](https://docs.openstack.org/nova/latest/) backs Compute. For how Quake AI implements OpenStack, see [How Quake AI uses OpenStack](/docs/platform/migration/openstack).

## Start here

Follow [Create a virtual machine instance](/docs/compute/how-to/create-instance) for the shortest path to a running VM. You choose an image and a flavor, attach the instance to a network, and connect to it over SSH.

## Choose a pattern

| Pattern | Use it when |
| --- | --- |
| [Create a virtual machine instance](/docs/compute/how-to/create-instance) | You want a VM on a default public network to log in and try the platform. |
| [Create a VM on a private network](/docs/compute/how-to/create-vm-private-network) | The instance should sit on an isolated project network behind a router and floating IP. |
| [Launch your first server](/docs/quickstart) | You are new to Quake AI and want a numbered walkthrough that ends by deleting what you built. |

## How it works

<Figure caption="What you assemble to create a compute instance: an image, flavor, network attachment, key pair, and security group combine into a running VM.">

```d2
direction: right

inputs: Inputs {
  image: Image
  flavor: Flavor
  network: Network
  keypair: Key Pair
  sg: Security Group
  userdata: User Data {style.stroke-dash: 5}
}

instance: Running Instance

inputs.image -> instance
inputs.flavor -> instance
inputs.network -> instance
inputs.keypair -> instance
inputs.sg -> instance
inputs.userdata -> instance {style.stroke-dash: 5}
```

</Figure>

Creating an instance ties together an **image** (the OS and pre-installed software), a **flavor** (CPU, memory, and ephemeral disk allocation), and **network attachments** (which project networks the instance joins). Optionally add **security groups** for traffic filtering, **key pairs** for SSH authentication, and **user data** scripts for first-boot automation.

The platform places your instance on a compute node with sufficient capacity, respecting any placement policies you set through **server groups** (affinity or anti-affinity rules). After boot, you manage the instance through the console, CLI, or API: stopping it to save resources, resizing to a larger flavor as load grows, snapshotting for point-in-time recovery, or deleting it when the workload completes.

Instances use **ephemeral disk** by default (tied to the instance lifecycle). For data that must survive instance deletion, attach a persistent **block storage volume** from [Block storage](/docs/block).

## Concepts

<DocsSectionLinks section="compute/concepts" grouping="concepts" />

## How-to

<DocsSectionLinks section="compute/how-to" />

## Related builds

<RelatedBuilds service="compute" />

## Reference and operations

<ReferenceServiceLinks service="compute" />

<ReferenceConsoleLinks service="compute" />

[Operations runbooks](/docs/operations/runbooks) cover instance connectivity and lifecycle failures.

Every instance needs a [Network](/docs/network) connection. For persistent disk, attach [block storage](/docs/block) volumes. To deploy instances from templates, use [Automation](/docs/automation).
