Computer
Declare a named Linux guest and run one bash command on a fresh copy of it.
A computer is a named hand: a Linux guest with a promised set of commands, optional pinned packages, a scratch directory, and optional disk mounts. Workflow nodes use a computer. They are not one. A computer has no model.
In v1 the only node that binds a computer is type: shell. It runs one bash command on a fresh guest, then throws the guest away.
disk kb {}
computer pr_bot {
label: "PR bot"
software: { gh: "2.63.2", git: "2.47.0" }
disks: [kb]
resources: { cpus: 2, memoryMiB: 1024 }
}
node lint_pr {
type: shell
computer: pr_bot
command: "gh repo clone \"$REPO\" /srv/workspace/repo"
}What every computer promises
With or without software: pins, these commands are on PATH: bash, ls, cat, mkdir, cp, mv, rm, grep, sed, awk, find, tar, gzip, and the rest of the usual file and text tools. command: always runs under bash.
curl, git, gh, jq, node, bun, and python are not included. Declare them as quoted pins. There is no apt.
Fields
| Field | Required | Notes |
|---|---|---|
label, description | no | Display strings. label defaults to the block name |
software | no | { package: "pin" }. Pins are quoted. A bad pin fails the deploy |
disks | no | Names of disk blocks. Mounted at /mnt/disks/<name> when a guest starts |
resources | no | cpus, memoryMiB, diskGiB. Defaults are 2 CPUs and 1024 MiB. Disk size may be omitted |
Scratch files live at /srv/workspace and disappear with the guest. Persist through disks.
Secrets stay out of the snapshot. Allowlist them on the shell node (secrets: { block: [VAR] }) and refer to them as "$VAR" in the command.
Deploy
The first deploy of a recipe waits until the guest image is ready. A later deploy with the same recipe does not rebuild. A failed bake fails that deploy and leaves the previous deployment live.
Cloud lists computers read-only under Build: name, pins, disks, resources, snapshot state, and the shell nodes that bind each one.