Configuration & Defaults¶
VM launch form¶
Every field in the launch form, with its default:
| Field | Default | Description |
|---|---|---|
| Project ID | auto-detected from gcloud config get-value project |
GCP project to deploy into |
| VM name | — | Lowercase letters, numbers, hyphens; also names the local state directory |
| Username | your gcloud account name (falls back to OS username) | Account created on the VM |
| User domain | your gcloud account's email domain | Combined with the username to grant IAP access (user:<username>@<domain>) |
| Password | auto-generated (30-char random hex) | For services like RStudio; change it on the VM with sudo passwd |
| Image | first available image | Your configured image project (see Settings) is listed first (starred, alphabetical), then the standard public GCP images; an image available in both is shown only once |
| Region | us-central1 |
Chosen from regions fetched live from the Compute API |
| Zone | us-central1-a |
Chosen from the selected region's zones |
| Machine type | e2-highmem-2 |
Fetched per-zone and filtered to the image's CPU architecture (ARM64/x86_64); live hourly cost estimate shown while choosing |
| Boot disk size | 20 GB |
|
| Port mapping | 8787:8787 |
Comma-separated local:remote pairs, one tunnel each |
Regions, zones, and machine types are read live from the Compute API rather than being hard-coded, so the lists reflect what's actually available to your project. Selecting a region updates the zone list, and selecting an image restricts the machine-type list to that image's CPU architecture.
Completing the form shows a review screen summarizing the VM; the instance is only created after you confirm (press Y / Yes). Choosing No or pressing Esc returns to the form with your entries intact, so an accidental Enter can't launch a VM.
Values are written to terraform.tfvars in the VM's state directory, so E (edit)
reopens the form with exactly what you launched with.
Disk creation form¶
| Field | Default | Description |
|---|---|---|
| Disk name | — | Also names the local state directory |
| Project ID | auto-detected | |
| Zone | us-central1-a |
Must match the VMs it will attach to |
| Disk type | pd-balanced |
pd-standard | pd-balanced | pd-ssd |
| Size | 50 GB |
Can grow later, never shrink |
Local state layout¶
~/.vmup/
├── bin/
│ └── terraform # pinned Terraform, auto-installed on first run
├── projects/
│ └── <vm-name>/
│ ├── main.tf # embedded Terraform config, written at launch
│ ├── terraform.tfvars # your form values
│ ├── terraform.tfstate # state for this VM's infrastructure
│ └── .terraform/ # providers
├── disks/
│ └── <disk-name>/ # same structure per disk
└── settings.json
Each VM and each disk is a fully isolated Terraform project — operations on one can
never affect another. The Terraform configuration itself is embedded in the vmup binary
(go:embed) and written out at launch time, so there is nothing to keep in sync.
Settings¶
Persistent settings live in ~/.vmup/settings.json and are editable from the
Settings screen.
| Setting | Description |
|---|---|
| Data directory | Where projects/ and disks/ are stored (default ~/.vmup). Changing it can migrate existing projects/disks. |
| Image project | Optional GCP project whose images are listed first (above the standard public images) when creating a VM. Leave blank to show only the standard public GCP images. |
Image project access
When you create a VM, vmup lists images from your configured image project followed
by the standard public GCP images. The setting ships preset to vds-infrastructure
(Vindhya Data Science's image project). If your account can't access it, vmup shows a
one-time "no access to image project vds-infrastructure" notice on the first run,
falls back to the standard images, and clears the setting so it won't try again. See
Settings → Shipped default
for the full behavior. Set your own image project in Settings to surface your
custom images.
Cost estimates¶
When you pick a machine type, vmup shows an estimated hourly price. The estimate is:
- Fetched live from the Cloud Billing Catalog API (per-vCPU and per-GB RAM rates
for your region, on-demand pricing), keyed by machine family (
e2,n1,n2,c2, …) - If the API is unavailable or you lack permission, vmup falls back to built-in rates (us-central1 on-demand)
Estimates cover the machine only — disks, network egress, and sustained-use discounts are not included. They are a guide, not a bill.
Terraform version¶
vmup installs Terraform 1.12.1 to ~/.vmup/bin/ on first run via HashiCorp's
hc-install. It never uses or modifies a
system-wide Terraform installation.