Kvindo™ Cloud Docs
A Virtual Machine (VM) is a cloud compute resource that provides isolated processing capacity with dedicated vCPUs and RAM. VMs run your workloads on shared physical hardware while remaining fully isolated from other tenants.
• Offer — the compute flavour (offerId) that fixes the vCPUs, RAM, and CPU share. Changing a VM's offer or CPU generation automatically stops and restarts the VM
• Boot disk — the VM boots from an attached Volume seeded with an OS image (osImageId)
• Subnet — the VPC subnet the VM's primary NIC lands in; the VM gets a private IP from its range
• Floating IP — optional public IPv4 address attached to the VM
• Security Group — firewall rules controlling inbound and outbound traffic
• SSH Key — public key injected into a Linux VM's authorized_keys at creation
• OS type — linux (SSH-key login) or windows (auto-generated Administrator password). Note: the public offer catalog currently has no Windows image at all, so windows cannot actually be provisioned yet
| UI Name | API / kc name | Terraform name | Optional | Format | Default | Is read only | Description |
|---|---|---|---|---|---|---|---|
| VPC Subnet | spec.vpcSubnetId |
spec.vpc_subnet_id |
Yes | ULID (nullable) — references a VPC Subnet | — | No | Subnet the VM's primary NIC lands in (immutable after creation) |
| Floating IP | spec.floatingIpId |
spec.floating_ip_id |
Yes | ULID (nullable) — references a Floating IP | — | No | Public IPv4 to associate with the VM |
| Boot volume attachment | spec.boot_volume_attachment |
Yes | object (nullable) — { volume_id: ULID } |
— | No | Terraform-only convenience field: attaches an existing Volume as the boot disk directly inside the VM resource. No JSON/API/kc equivalent — the REST API, kc, and the Python SDK attach the boot Volume via a separate VolumeAttachment resource instead | |
| Offer | spec.offerId |
spec.offer_id |
Yes | string (≤32 chars) | — | No | Compute flavour — there is no server-side default, so pass one explicitly (e.g. g3-1c1-100 = 1 core / 1 GB / 100% CPU); see Console → Compute for options. The CPU generation encoded in the offer (the g3/c3 prefix) is immutable after creation; the offer can otherwise be changed on modify |
| Image | spec.imageId |
spec.image_id |
Yes | ULID (nullable) — references an Image | — | No | Restore the VM from a captured backup Image (immutable after creation). Omit for a fresh VM — the OS comes from the boot Volume's osImageId |
| Image boot volume index | spec.imageBootVolumeDeviceIndex |
spec.image_boot_volume_device_index |
Yes | integer (nullable) | — | No | When restoring from an Image, which of its volumes becomes the boot disk. Required when imageId is set |
| SSH Keys | spec.sshKeyIds |
spec.ssh_key_ids |
Yes | list of ULID — references SSH Keys | [] |
No | Public keys injected into the (Linux) VM |
| Security Groups | spec.securityGroupIds |
spec.security_group_ids |
Yes | list of ULID — references Security Groups | [] |
No | Firewall rules applied to the VM |
| Image Schedules | spec.imageScheduleIds |
spec.image_schedule_ids |
Yes | list of ULID — references Image Schedules | [] |
No | Automatic backup-image schedules attached to the VM |
| On/Off Schedules | spec.onOffScheduleIds |
spec.on_off_schedule_ids |
Yes | list of ULID — references VM On/Off Schedules | [] |
No | Schedules that power the VM on or off automatically |
| Command Schedules | spec.commandScheduleIds |
spec.command_schedule_ids |
Yes | list of ULID — references VM Command Schedules | [] |
No | Commands run inside the VM on a recurring schedule |
| OS Type | spec.osType |
spec.os_type |
Yes | string (nullable) | linux |
No | linux (SSH keys) or windows (auto-generated Administrator password). Note: the public offer catalog currently has no Windows image at all, so windows cannot actually be provisioned yet |
| VM State | spec.vmState |
spec.vm_state |
Yes | string (nullable) — running / stopped |
running |
No | Desired power state of the VM: running or stopped. Set it to stopped to power the VM off and back to running to start it again |
| Bootstrap command | spec.bootstrapCommand |
spec.bootstrap_command |
Yes | object (nullable) | — | No | Command run at first boot. The VM reports execution results back; see status.bootstrapCommand below |
| Command | spec.bootstrapCommand.command |
spec.bootstrap_command.command |
Yes | string | — | No | Command run at first boot |
| Private IPv4 | status.privateIpv4 |
status.private_ipv4 |
— | string (nullable) | — | Yes | Private IPv4 assigned from the subnet range |
| Public IPv4 | status.publicIpv4 |
status.public_ipv4 |
— | string (nullable) | — | Yes | Public IPv4 (when a Floating IP is attached) |
| Private IPv6 | status.privateIpv6 |
status.private_ipv6 |
— | string (nullable) | — | Yes | Private IPv6 of the VM. IPv6 is not yet implemented — reserved for future use |
| Public IPv6 | status.publicIpv6 |
status.public_ipv6 |
— | string (nullable) | — | Yes | Public IPv6 of the VM. IPv6 is not yet implemented — reserved for future use |
| Windows password | status.windowsAdministratorPassword |
status.windows_administrator_password |
— | string (nullable, sensitive) | — | Yes | Auto-generated Administrator password for Windows VMs |
| Bootstrap command result | status.bootstrapCommand |
status.bootstrap_command |
— | object (nullable) | — | Yes | Result of executing the bootstrap command; null if no bootstrap command is set on the VM |
| Return code | status.bootstrapCommand.returnCode |
status.bootstrap_command.return_code |
— | integer (nullable) | — | Yes | Exit code of the bootstrap command, reported back by the VM after it runs |
| Output | status.bootstrapCommand.output |
status.bootstrap_command.output |
— | string (nullable, ≤10000 chars) | — | Yes | Combined stdout+stderr of the bootstrap command; truncated in the middle if longer than 10000 characters |
| Duration | status.bootstrapCommand.durationMs |
status.bootstrap_command.duration_ms |
— | integer (nullable) | — | Yes | How long the bootstrap command took to run, in milliseconds |
Every VM is attached to a VPC subnet and receives a private IP from the subnet CIDR. To expose the VM to the internet, attach a Floating IP. To control traffic at the VM level attach a Security Group (a stateful firewall whose rules apply to all traffic in and out of the VM).
A VM boots from an attached Volume seeded with an OS image. Additional block storage can be attached as further Volumes via Volume Attachments. Volumes are independent of the VM lifetime and can be re-attached after the VM is deleted.
Capture a VM's disks into an Image for backup or cloning — on demand, or automatically with an Image Schedule. To restore, create a VM with its imageId set to a captured Image. (The base OS of a fresh VM comes from its boot Volume's osImageId, not from imageId.)
VMs are billed based on the selected offer (vCPU + RAM). The monthly price is shown on the VM overview card. Billing starts when the VM reaches the stable state and stops when it is deleted; it's billed hourly, and the hour it's deleted in is charged in full. VM counts, vCPUs, and RAM are governed by organization Quotas. Per-generation VM counts are tracked as a separate quota — the C3Count quota parameter defaults to 0, meaning c3-generation VM creation is blocked until an admin raises it. c3 offers currently exist only in the g-ru-msk-1 region — no other region has c3 hardware.
If a VM is stuck in reconciling, check status.lastChangeRequest.errorMessage. Common causes: image not found on the target provider, provider-level quota exceeded, or a network provisioning timeout.
• SSH unreachable — check that the Security Group allows inbound TCP 22 from your IP, and that the Floating IP is attached
• UnableToReconcile — the last change request failed; the error is shown in the Last Change Request panel
A VM with a public floating IP, an SSH key, and a boot volume seeded with an OS image. (Create the network first — see the Networking example.)
Terraform
Python SDK
kc CLI
Examples
More in this section