CLI reference
Complete grain command reference for interactive use.
Global flags:
| Flag / env |
Meaning |
--config path |
Config file (default ~/.grain/config.yaml) |
--api URL |
Remote daemon HTTP base (overrides GRAIN_API and config api_url) |
GRAIN_API |
Same as --api |
GRAIN_TOKEN |
Bearer token (or config api_token) |
Local default: unix socket. Remote example:
export GRAIN_API=http://127.0.0.1:7474 # after ssh -L …
export GRAIN_TOKEN=…
grain ls
grain --api http://sandbox:7474 ls
See Remote sandbox host for firewall and systemd.
Daemon
| Command |
Description |
grain up [--fg] |
Start daemon (background by default; reports already up if healthy) |
grain down |
Stop daemon via pidfile (cleans stale pid/socket) |
grain uninstall [--purge] [-y] |
Remove CLI binary; --purge also deletes the data directory |
grain doctor |
Dependency checks |
grain version |
Print version |
Images
| Command |
Description |
grain image ls |
Catalog + local readiness |
grain image pull [id] |
Download base image (ubuntu-cloud, grain-ubuntu, alpine-cloud) |
grain image import <path> [--id grain-ubuntu] |
Register a local qcow2 |
VMs
| Command |
Description |
grain new |
Create sandbox (see flags below) |
grain ls |
List VMs |
grain rm [name] |
Delete |
grain stop [name] |
Graceful stop (ephemeral deleted) |
grain start [name] |
Start stopped persistent VM |
grain pause / resume |
Freeze / unfreeze vCPUs |
grain suspend / restore |
Free RAM / bring back persistent VM |
grain sh [name] |
Shell (agent PTY preferred) |
grain x [name] -- cmd… |
Exec (streaming agent preferred) |
grain cp src dst |
Copy (NAME:path or host path) |
grain fs ls\|stat\|mkdir\|rm |
Guest filesystem helpers |
grain logs [name] [-f] [--qemu] |
Serial or QEMU logs |
grain stats [name] |
Guest resource stats |
grain fwd ls\|add\|rm |
Port forwards |
grain agent health [name] |
Agent readiness |
grain new flags
| Flag |
Meaning |
-p / --persist |
Keep disk after stop |
-n / --name |
Name |
-c / --cpus |
vCPUs |
-m / --mem |
Memory MiB |
-d / --disk |
Disk GiB |
-i / --image |
Image id |
--wait |
auto (default), ssh, agent, userdata |
-P / --publish |
HOST:GUEST or GUEST (repeatable) |
-v / --volume |
HOST:GUEST share (repeatable) |
--publish-socket |
Host↔guest unix socket forward |
--profile |
Named profile |
--preset |
docker, k3s, or act |
--userdata-file |
Extra cloud-init / shell |
--proxy |
Inject HTTPS_PROXY for egress proxy |
Name is optional for sh / rm / x / fs / etc. when exactly one VM exists.
sh / x / cp path selection
| Flag |
Behavior |
| (default) |
Prefer guest agent when healthy |
--agent |
Agent only; error if unavailable |
--ssh |
Force SSH/scp |
GitHub Actions (grain act)
Runs nektos/act inside an ephemeral sandbox (Docker + act preset). Put act flags after --.
grain act -- -l
grain act -- -j test
grain act --keep -- -W .github/workflows/ci.yml
| Flag |
Default |
Meaning |
--dir |
. |
Host project mounted at /work |
--name |
act-<dirname> |
Sandbox name |
--cpus |
2 |
vCPUs |
--mem |
4096 |
Memory MiB |
--image |
auto |
Base image id |
--timeout |
15m |
Create + ready + act |
--keep |
false |
Keep VM after act exits |
Full guide: Recipe: GitHub Actions (act).
Secrets & proxy
| Command |
Description |
grain secret ls\|set\|rm\|inject |
Host secrets store |
grain proxy up\|down\|allow\|deny\|ls\|client |
Egress proxy process |
Profiles
grain profile ls
grain new --profile agent