Docs / Introduction

Why Hoster

What the platform actually does differently: sub-second deploys, ZFS as a first-class citizen, microVMs, and a shared-nothing design where every host survives on its own.

Most virtualisation platforms ask you to assemble them. You pick a hypervisor, bolt on storage, wire up networking, add a scheduler for backups, add monitoring, add a DNS story, and then keep all of it in step as the estate grows. Hoster ships that whole path as one system, with defaults that are meant to be left alone — and it does it without putting a control plane in the data path.

Deployment speed is the feature

A new VM is a ZFS clone of a template dataset, not a copy. Nothing is streamed, nothing is unpacked, and the time to deploy does not grow with disk size:

hoster vm deploy --os-template ubuntu2404 --name grafanaStaging

That returns in sub-second time, and starting the machine afterwards is a matter of milliseconds. This is the difference that changes how you work. When a VM costs a second, you stop treating machines as pets you keep alive and start treating them as something you re-create on demand — for a test, for a branch, for a customer.

Templates are ordinary ZFS datasets named template-<name> holding a raw disk0.img, so making your own is a zfs create and a file copy. Anything after template- becomes the name you pass to --os-template — see Building your own template.

Screenshot

Take a screenshot of a `hoster vm deploy` running in a terminal with `--debug-timings`, so the per-step timings and the sub-second total are visible.

ZFS is a first-class citizen, not a storage option

Every guest lives on its own ZFS dataset. That is not an implementation detail — it is what the rest of the platform is built out of:

  • Snapshots are instant and cost only the blocks that changed, so scheduled snapshots every hour are unremarkable rather than an operational event.
  • Cloning is what makes deployment sub-second.
  • Replication uses incremental zfs send, so sending a machine to another host moves the delta rather than the disk.
  • Integrity is checksummed end to end, which is the reason a snapshot you took three months ago is worth having.

The installer treats it as a first-class citizen too: you choose the pool topology and the ARC limit before the system is written, rather than retrofitting a pool onto a running box. See HosterOS installation.

Screenshot

Take a screenshot of the Control Center snapshots page for one VM, showing the snapshot list with sizes, ages and the retention column.

MicroVMs for container workloads

Containers share a kernel. That is fine until it is not — and “not” usually means a tenant boundary, an untrusted image, or a compliance question you would rather answer with a hard edge than with a namespace.

Hoster runs Docker and Podman workloads inside microVMs on Cloud Hypervisor: a real virtual machine with its own kernel, booting in a fraction of the time a full QEMU guest takes. You get container ergonomics — a compose.yaml, a /data share — with virtual-machine isolation underneath.

Classic QEMU guests and microVMs are managed the same way, through the same CLI and the same UI. Choosing between them is a workload decision, not a second platform to learn.

Screenshot

Take a screenshot of `hoster microvm list` alongside `hoster vm list`, to show microVMs and classic VMs managed side by side.

Shared-nothing: every host runs its own stack

This is the architectural decision everything else follows from.

Each server runs an agent (hoster_agent) that owns the machines on that server: it manages guests, takes snapshots, runs replication, and exposes a local API and a CLI. It does not ask permission from anything. There is no central scheduler handing out work, and no shared database that has to be reachable for your VMs to keep running.

The practical consequences:

  • The control plane is not in the data path. If Control Center is switched off, unreachable, or being upgraded, every host carries on exactly as before.
  • A failed host is a failed host, not a degraded cluster. Its neighbours do not slow down or lose quorum over it.
  • You can start with one machine and add the rest later, because a single host was never a special case — it is the normal case with a cluster of one.

When you do form a cluster, the hosts coordinate through rqlite for shared state, and each host dials out to Control Center over mutual TLS rather than being dialled into. Commands travel back down the connection the host already opened, so nothing has to reach into a host’s network to manage it.

Screenshot

Take a screenshot of the Control Center cluster page showing member hosts, roles and quorum state.

An interface built for operators

Control Center is a web UI over the same agents the CLI talks to. It is optional, and it is not a wrapper that hides what is underneath — it shows fleet state, per-host detail, guest lifecycle, snapshot history with retention, the scheduler, cluster membership, monitoring and an audit log, at the level of detail an operator actually needs to answer a question.

Everything it does is available from hoster on the host. Neither one is the second-class path.

It runs as a microVM on a node you already have — see Deploying Control Center, and The interface for what each page shows.

Screenshot

Take a screenshot of the Control Center VM info page — the one with hardware, storage pools, network addresses and the guest list. This is the page that best shows the density of the UI.

The scheduler does the boring part

Snapshots that only run when someone remembers are not backups. Every agent embeds a scheduler that runs on ordinary cron syntax and exposes each job’s next run and last result:

  • snapshot jobs, with retention
  • replication to another host, incremental
  • disaster-recovery sync
  • template distribution — in a cluster, image templates fan out to every node hourly, so a node is never missing the template you are about to deploy from

A new node ships with none of these configured, deliberately: see Snapshots, replication and the scheduler for the schedule to give it.

Screenshot

Take a screenshot of the Control Center scheduler page listing snapshot and replication jobs with their cron schedules, next run and last result.

All-in-one, and still modular

The things you would otherwise integrate yourself are included, and they are aware of each other:

Included What it removes
Automatic IP provisioning Tracking addresses by hand; each network has its own range and DNS
WireGuard mesh SDN Manual key exchange and per-host routing between isolated subnets
Cluster-wide DNS Writing a DNS record every time a VM is created or moved
Monitoring with autodiscovery Editing Prometheus scrape configs as the estate changes
Power tracking Guessing what the estate costs to run — measured per host with Scaphandre, and totalled across the fleet
Trusted image repository Trusting an image you cannot inspect the build of
Distributed storage Working out how a scale-out filesystem fits a hypervisor; nodes are provisioned for LeilFS and its health is reported alongside everything else

Modular in the sense that matters: each piece is a component you can run, replace or leave switched off. Clustering is optional. Control Center is optional. The mesh only exists if you have more than one host. Nothing is load-bearing for a single server except the agent itself.

What fits where

Single server Multi-server Cluster
VM and microVM management Yes Yes Yes
Automatic IP provisioning Yes Yes Yes
ZFS snapshots Yes Yes Yes
Power tracking (per host) Yes Yes Yes
Monitoring with autodiscovery Yes Yes Yes
CLI Yes Yes Yes
Control Center web UI Optional Optional Optional
Scheduled replication Yes, to an explicit target Yes, targets chosen from cluster state
WireGuard mesh across hosts Yes
Cluster-wide DNS Yes
Distributed storage Yes

A single host is not a trial mode. It is the same software, doing the same things, without the parts that only mean something once there is a second machine.

Next

Quick start walks the whole path — hardware to first VM — at a bird’s-eye level, and explains where Control Center and clustering earn their place.

Something unclear on this page?

Ask about this specific page and we will come back to you. Your question arrives with a link to it, so you do not have to describe where you were.