freestyle/busybox is our tiniest base snapshot: 1 vCPU, 128 MiB of memory,
and a 1 GB disk. It is designed for specialized low resource and precision workloads.
If you know exactly what needs to be run you can fit specialized code execution, agent runtime or code mode tasks in these.
What’s in the snapshot
| Resource or tool | Included |
|---|---|
| Hardware | 1 vCPU, 128 MiB memory, 1 GB disk |
| Shell | sh and BusyBox command-line utilities |
| Remote access | Freestyle SDK execution and terminal SSH through Dropbear |
| Package manager | None; no apt or apk |
| Development environment | No preinstalled Node.js, Python, Bash, or systemd |
Users often configure swap explicitly or compile custom runtimes to fit this
footprint. Node.js is a common example: our Node.js guide’s BusyBox
setup uses a prebuilt
glibc-217 Node binary and a 256 MiB swap file, then saves the configured VM
as a reusable snapshot.
Choose BusyBox when you know the workload’s dependencies and memory needs.
128 MiB leaves little room for a language runtime, large downloads, or build
tools. /tmp is backed by memory; stage larger files on disk under /opt.
You can resize the VM when it needs more resources.
Create a BusyBox VM
Install the SDK and set FREESTYLE_API_KEY as shown in the
quickstart, then select the snapshot explicitly:
import { Freestyle } from "freestyle";
const freestyle = new Freestyle();
const { vm } = await freestyle.vms.create({
snapshotId: "freestyle/busybox",
firewall: { rules: [] },
});
const result = await vm.exec({
command: "uname -a; busybox --list",
linuxUser: "root",
});
console.log(result.stdout);
This example only inspects the local VM, so it needs no network access. Add firewall rules for any destinations your workload needs.