Skip to content

desk machine create

See machine command availability before using this command.

Provision a native Linux host on Vultr.

Install OpenSSH locally and have an SSH public key available. The matching private key must be available through your SSH agent or SSH configuration. Desk sends only the public key to Vultr.

Set VULTR_API_KEY, supply --vultr-api-key-file, or store the token at ${DESK_HOME:-$HOME/.desk}/credentials/vultr-api-key with private permissions. Keep the file outside project directories you pack. Tokens are not saved in machine records.

Choose region, plan and OS IDs from Vultr. Use a Linux image supporting cloud-init; Ubuntu 24.04 is the initial target image for validation. Creating a machine incurs Vultr charges.

Terminal window
desk machine create devbox \
--driver=vultr \
--vultr-region=REGION_ID \
--vultr-plan=PLAN_ID \
--vultr-os=OS_ID \
--pubkey="$HOME/.ssh/id_ed25519.pub" \
--user=desk

Desk creates a non-root login user with passwordless sudo, installs tar, curl, certificates and tmux, then waits for SSH readiness. The default timeout is ten minutes; change it with --timeout=15m.

Vultr receives base64-encoded cloud-init user data, following its documented provisioning mechanism.

Terminal window
desk machine create devbox --resume

The saved provider ID is reused. Region, plan, OS, public key and login user cannot be changed during resume. Repeat the API-key-file flag if you used one.

If the original create response was lost, Desk cannot know whether Vultr created the VM. Inspect the Vultr console before retrying. Recover the matching instance explicitly:

Terminal window
desk machine create devbox --resume --vultr-instance-id=INSTANCE_ID

Desk checks the instance label and region against the saved creation. It never automatically repeats a create request. Instances remain billable during failed preparation; use the Vultr console to delete an unwanted instance and verify its removal. This version does not implement cloud deletion.