Your homelab VM manager,
simplified.

virtuOSo is a KVM-based homelab appliance. Launch and manage Linux virtual machines from your browser, automate infrastructure through a REST API and Terraform provider, and connect AI assistants like Claude Code or Codex via a built-in MCP server.

Launch VM
Launch VM workflow in virtuOSo

Everything you need to run VMs

A complete VM management platform that runs on a single server. No cloud account required.

Browser-Based Access

SSH shell, serial console, and VNC desktop — all from your browser. No client software needed.

Multi-VM Stacks

Define multi-VM deployments as YAML templates. Deploy and tear down entire environments together.

Built-In AI Assistant

Use Claude Code or OpenAI Codex from the built-in chat UI. virtuOSo exposes typed VM tools over MCP.

Terraform Provider

Infrastructure-as-code for your homelab. Manage VMs, SSH keys, and access grants with Terraform.

Multi-User Access Control

Create user accounts with per-VM permissions. Admins control who can see and manage each VM.

Encrypted Secrets

Inject passwords, API keys, and tokens into VMs at deploy time. Values encrypted at rest with AES-256-GCM.

Cloud-Init Scripts

Run custom shell scripts on first boot. Install packages, configure services, and set up your environment automatically.

NAT & Bridged Networking

Use NAT for isolated VMs or bridged mode to put VMs directly on your LAN with real IP addresses.

Quick Launch

Spin up a VM in one click with pre-configured defaults. The fastest way to get a test environment running.

See it in action

A clean, intuitive interface for managing your entire VM fleet from the browser.

Launch any major Linux distribution

Cloud images download automatically. Just pick an OS and go.

Ubuntu

25.10 24.04 LTS 22.04 LTS

Desktop available · User: ubuntu

Fedora

43

Desktop available · User: fedora

Amazon Linux

2023

User: ec2-user

Custom ISOs

Any OS

Upload ISOs · Boot via VNC

Instance Sizes

SizevCPUsMemoryDefault Disk
micro11 GB50 GB
small12 GB50 GB
medium24 GB50 GB
large28 GB100 GB
xlarge416 GB100 GB

Deploy entire environments with Stacks

Define multi-VM deployments as YAML templates. Reference VM IPs across the stack with template variables. Deploy and tear down as a unit.

  • Dependency ordering VMs launch in the right order. IP addresses are resolved before dependent VMs start.
  • Template variables Use ${vm.name.ip} and ${secret.KEY} to wire VMs together at deploy time.
  • Reusable templates Save stack templates to a library and reuse them across deployments.
  • Encrypted secrets Inject sensitive values without hardcoding them in your YAML. AES-256-GCM encryption at rest.
stack.yaml
vms:
  - name: database
    os: ubuntu-24.04
    size: large
    disk: 200
    user-script: |
      apt-get update
      apt-get install -y postgresql
      sudo -u postgres psql -c \
        "ALTER USER postgres PASSWORD
         '${secret.DB_PASSWORD}';"

  - name: web
    os: ubuntu-24.04
    size: medium
    depends_on: [database]
    user-script: |
      apt-get update
      apt-get install -y nginx
      # IP resolved at deploy time
      echo "DB=${vm.database.ip}" \
        >> /etc/environment

Automate everything

Choose the control surface that fits the job: direct API calls, Terraform plans, or AI assistants connected through the built-in MCP server.

REST API

Complete VM lifecycle management via JSON endpoints. Create API keys from the web UI and use them with any HTTP client.

python
import requests

API = "https://your-server/api/v1"
KEY = "vmk_..."
s = requests.Session()
s.headers["Authorization"] = f"Bearer {KEY}"

# Launch a VM
resp = s.post(f"{API}/vms", json={
    "name": "web-01",
    "os": "ubuntu-24.04",
    "size": "medium",
})
print(resp.json())
GETPOSTPUTDEL 20+ endpoints

Terraform Provider

Declare your infrastructure in HCL. The provider manages VMs, SSH keys, and access grants with full lifecycle support.

main.tf
resource "virtuoso_vm" "web" {
  name      = "web-server"
  size      = "medium"
  os        = "ubuntu-24.04"
  disk_gb   = 40
  ssh_key   = virtuoso_ssh_key.deploy.public_key
  started   = true
  autostart = true

  user_script = <<-EOT
    apt-get update
    apt-get install -y nginx
  EOT
}
virtuoso_vm virtuoso_ssh_key virtuoso_vm_access

AI Assistant + MCP

The built-in AI Assistant supports Claude Code and OpenAI Codex.

codex / claude
Hello! I'm your virtuOSo AI assistant.

I can help you manage VMs, generate Terraform configs, create Stack definitions, and more.

What would you like to do?
Claude Code OpenAI Codex 15 MCP tools

WireGuard VPN

Built-in WireGuard server for secure remote access to your VMs from anywhere. Manage peer configs directly from the web UI.

AI-Safe Guardrails

Credentials stay out of AI responses, delete protection is respected, and ambiguous destructive prompts are treated as conversation instead of bulk VM operations.

Delete Protection

Guard important VMs against accidental deletion. Protection must be explicitly disabled before a VM can be removed.

ISO Boot

Upload custom ISOs and boot VMs from them for manual OS installations. VNC is auto-enabled for installer interaction.

Get started

virtuOSo is distributed as a bootable ISO. Install it on dedicated hardware and you're managing VMs from your browser in minutes.

System Requirements: x86_64 CPU · UEFI boot · 16 GB+ RAM · SSD recommended

1

Download & Install

Download the virtuOSo ISO and install it on dedicated hardware.

2

Open the UI

Navigate to your server's IP in a browser. Log in with the admin credentials created during install.

3

Launch a VM

Click Launch, pick an OS and size, and your VM will be running in seconds. Use Quick Launch for one-click creation.