Virtual Machines
Infrastructure

Virtual Machines

Provision and manage virtual machines directly from JuhJuh. Configure specs, monitor status, and give AI agents isolated execution environments.

VMs are cloud-provisioned virtual machines where your services run. JuhJuh provisions each one through a guided wizard and manages the full lifecycle from a single dashboard.

  1. Open your organization
  2. Click PaaS in the sidebar

The PaaS dashboard shows all active VMs with their status, specs, IP address, and latest deployment version.

Create a VM

JuhJuh uses a five-step wizard to provision a new VM.

Step 1: Environment type and name

  1. Click Create VM on the PaaS dashboard
  2. Select an environment type:
Type Purpose
Production Live, user-facing
Staging Pre-production testing
UAT User acceptance testing
Development Active development
Preview Branch previews
Sandbox Experimentation
  1. Enter an environment name. Lowercase letters, numbers, and hyphens only; 2 to 63 characters

Step 2: Select repository

  1. Choose a code repository from your connected resources
  2. JuhJuh uses this to determine the container configuration and image to deploy

Step 3: Vault configuration

  1. Configure environment variables for this VM
  2. Add key-value pairs manually, or let JuhJuh auto-detect variables from your Compose file
  3. Mark sensitive values as Secret. They are encrypted at rest
  4. Mark required variables to enforce completeness before deployment

Step 4: Compute configuration

  1. Select a region from 30+ locations across Europe, North America, Asia Pacific, Middle East, and South America
  2. Choose CPU: 1, 2, 4, or 8 cores
  3. Choose RAM: 1 to 32 GB
  4. Choose Storage: 10 to 500 GB
  5. Estimated monthly cost updates live as you configure

Step 5: Review and create

  1. Review all choices: environment, repository, vault entries, compute specs, and estimated cost
  2. Click Create to provision

JuhJuh reserves a static IP, sets up secure access, and provisions the VM. The dashboard updates in real time as the VM moves through Provisioning, then Staging, then Running.

VM lifecycle

Action What it does How
Start Boot a stopped VM Click Start on the instance card
Stop Gracefully shut down a running VM Click Stop on the instance card
Destroy Permanently delete the VM and release its IP Click Destroy, then confirm

All lifecycle actions run in the background. The dashboard updates live via real-time push.

Status reference

Status Meaning
Provisioning VM is being created
Staging VM is booting and running setup scripts
Running VM is online and accepting connections
Stopping Shutdown in progress
Stopped VM is offline but preserved
Destroying Teardown in progress
Terminated VM has been permanently deleted
Failed Provisioning or lifecycle action failed

VM lifecycle: Provisioning to Staging to Running, with branches to Stopping/Stopped and Destroying/Terminated

Config-as-code VMs

You can also define VMs in your JuhJuh File instead of using the dashboard wizard:

yaml vms: production-app: name: my-app-prod env_type: production cpu: 4 memory_gb: 16 disk_gb: 200 region: europe-west

Run juhjuh apply to provision VMs from the file. They appear on the PaaS dashboard alongside wizard-created VMs and follow the same lifecycle. See the JuhJuh File VMs section for the full reference.

Private networking

All VMs in your organization are connected through a private network. Your services can reach each other using internal IP addresses without any extra configuration. If your API server needs to talk to your database VM, it can connect directly over the private network. See Networking for firewall rules, exposed ports, and deployment references.

Cost management

VMs are billed hourly while running. Stopped VMs still incur charges for reserved IPs and disk storage. To control costs:

  • Configure auto-stop to shut down idle VMs after a set number of days
  • Choose a reserved commitment (1-year or 3-year) for predictable pricing on long-running VMs
  • Monitor spending with cost alerts in the billing dashboard

What each VM includes

Every VM is ready to run your services out of the box:

  • A dedicated static IP address
  • A private IP address for internal communication with other VMs in your organization
  • Secure access managed entirely by JuhJuh, with no key management on your end
  • Container runtime pre-installed and configured
  • Vault secrets automatically injected at deploy time. Your application picks them up as environment variables with no manual wiring
  • Optional custom deploy command for non-standard setups
  • Resources: connect the repositories and registries your VMs pull from
  • Vault: manage the environment variables and secrets injected into each VM
  • Networking: private networks, firewall rules, and service discovery between VMs
  • Deployments: ship container images to your running VMs
  • Infrastructure Overview: see how VMs fit into the full infrastructure stack
  • Billing: understand VM costs, metering, and reserved commitments
  • Observability: automatic infrastructure metrics and log collection for your VMs
  • CLI: create, start, stop, and destroy VMs from your terminal