Skip to main content
A runtime class is the execution tier that a workload’s Instances run in. Compute offers two classes, and each one trades image compatibility against startup speed and overhead. You choose the class when you create a workload, and you can’t change it later.
Compute is in preview, and the v1alpha API can change.

Compare runtime classes

The following table compares the two classes:

When to use each class

Choose general-purpose in the following cases:
  • You want to run an existing container image without repackaging it.
  • Your app needs envFrom, extra Linux capabilities, setuid binaries, or a large filesystem.
Choose unikernel in the following cases:
  • Startup time and per-Instance overhead matter, such as for bursty or short-lived services.
  • Your app is a self-contained binary, such as a Go or Rust program, or a small interpreted app whose runtime and libraries fit in memory.

Select a runtime class

If you don’t set a runtime class, Datum uses unikernel. To run a standard container image, set the class to general-purpose explicitly. To select a class with datumctl, pass the --runtime-class flag when you create the workload:
Replace the following:
  • WORKLOAD_NAME: a name for your workload.
  • IMAGE: the full image reference, including the registry host, such as ghcr.io/example/app:1.0.
  • LOCATION: the location to run in, such as us-central-1.
  • RUNTIME_CLASS: general-purpose or unikernel.
To select a class in a manifest, set spec.template.spec.runtime.class:
When you apply a workload, Datum checks the spec against the class. If the workload uses a feature that the class doesn’t offer, Datum rejects the request, and the error names the class and the feature. For example, adding a disk volume to a general-purpose workload returns an error that says disk-backed volumes aren’t supported by the general-purpose runtime class.

View the runtime class catalog

The classes are read-only resources in your project. To list them, run the following command:
The output includes each class’s display name, isolation boundary, whether it’s the default, and whether it’s available.

Change a workload’s runtime class

A workload keeps its runtime class for its whole life. If you try to change the class, datumctl compute deploy and the API reject the change. To move a workload to another class, follow these steps:
  1. Deploy a new workload with a different name and the class that you want.
  2. To confirm that the new workload is available, run datumctl compute workloads and check that its HEALTH is Available.
  3. Delete the old workload with datumctl compute destroy OLD_WORKLOAD_NAME. Replace OLD_WORKLOAD_NAME with the name of the workload that you’re replacing.

Where each class runs

Today, us-central-1, us-east-1, and us-west-1 serve both classes. If you place a workload in a location that doesn’t serve its class, Datum creates no Instances there and the workload reports the reason RuntimeClassNotServed. To fix it, choose another location or deploy a new workload with a class that the location serves. For the classes that each location serves, see Locations.

What’s next

Last modified on September 23, 2026