omf is the COSMOS experiment controller — the tool that images nodes,
powers them, and reports what state they are in. It runs on a sandbox
console, never on your laptop, and it acts only on nodes your group has
reserved.
ssh <your-uid>@console.grid.cosmos-lab.org
omf stat -t all --summary
There are four commands. Each has its own page with every option and worked
examples:
| Command | Does | Page |
|---|---|---|
omf stat |
Report power and enrolment state | stat |
omf tell |
Power control — on, off, reset | tell |
omf load |
Write a disk image to nodes | load |
omf save |
Capture a disk image from one node | save |
omf actually is/usr/local/bin/omf is a symlink to /opt/omf-expctl/bin/omf — the
omf-expctl package, installed on every console. It does not talk to nodes
directly: it reaches the testbed's services (chassis managers, PXE, frisbee,
inventory, scheduler) through an aggregate manager proxy.
Which proxy depends on the site, and it is the one piece of configuration that
bites:
| Site | AM proxy |
|---|---|
| NJ (grid, sb1–sb9, …) | am-rt1.cosmos-lab.org:5054 |
| NYC (bed, osc, weeks, minicity, sb2, …) | am-crf.cosmos-lab.org:5054 |
NYC consoles carry a local override for this. If a console suddenly reports
"0 of N online" right after an omf-expctl package upgrade, suspect that the
upgrade replaced the override with the NJ default.
omf acts only on nodes your group holds for the currentomf acts on-d.-t argumentEvery command takes -t, and it accepts far more than a node list. This is the
single most useful thing to learn about omf:
| Form | Means |
|---|---|
all |
every type=node resource in the domain |
node1-1,node1-2 |
explicit list, full names |
1-1,1-2 |
short names, auto-qualified with the domain |
[1,1],[2,3] |
coordinate form |
1..3,1..4 |
range — all x,y combinations |
system:topo:all |
same as all |
system:topo:allres |
all resources, any type |
system:topo:registered |
nodes registered with the chassis controller |
system:topo:imaged |
nodes from the most recent successful load |
system:topo:failed |
nodes that failed imaging in the most recent load |
system:topo:timedout |
nodes that timed out |
system:topo:checkinfailed |
nodes that never checked in |
system:topo:<name> |
a named topology from the inventory service |
The system:topo:failed family is what makes a partial image recoverable:
omf load -t all -i baseline-sdr.ndz # 3 of 20 fail
omf load -t system:topo:failed -i baseline-sdr.ndz # retry only those 3
| Option | Meaning |
|---|---|
-t, --topology |
the node set |
-d, --domain |
override the auto-detected sandbox |
-c, --config |
old-style alias for -d |
-v, --verbose |
verbose output |
--debug |
debug output |
-h, --help |
the authoritative option list |
omf <command> --help on a console is the truth. This page is written
against it, but a package upgrade can change options without changing the wiki.
omf stat -t all --summary # what am I holding?
omf load -t node1-1,node1-2 -i baseline-sdr.ndz -r 0
omf tell on -t node1-1,node1-2 # load leaves nodes OFF
ssh root@node1-1 'cat /.omf-image-name' # verify what actually booted
# ... experiment ...
omf tell offs -t node1-1,node1-2 # graceful power off
Two habits in there are worth keeping, and both have cost people time:
omf load leaves nodes powered off. A load that finishes "successfully/.omf-image-name rather than trusting the load's exit status. Aomf sits relative to the orchestration frameworkThe orchestration framework wraps
these commands; it does not replace them. A description that names an
image: causes the framework to run omf load on your behalf, decide whether
imaging is needed at all, and power the node afterwards.
Use omf directly when you are setting up by hand, debugging, or capturing an
image. Use the framework when you want an experiment to be repeatable. Both are
supported and they act on the same testbed.
.ndz files areAuthor(s): COSMOS team · Last verified: 2026-09-11 — every option table taken from omf <command> --help on a live console (grid), omf-expctl at /opt/omf-expctl · Tags: omf, user-guide, reference