Worked examples are the fastest way to learn a new description language. This
page lists the tutorials that are built on cosmos-run, so you can read a
real description that runs rather than a fragment.
It is also honest about the rest: most COSMOS tutorials do not use the
framework yet. Twelve of sixty-two do. The others predate it or were written
against the older OMF workflow, and migrating them is ongoing work. If you are
looking for a pattern to copy, take it from this page rather than from a
tutorial chosen at random.
Roughly in order of how much description language they exercise.
| Tutorial | Why read it |
|---|---|
| Your First Experiment | The minimum that runs — fifteen lines, one node, no radio |
| Your First Ansible Experiment | The same ground from the tutorials side |
| Tutorial | What its description shows |
|---|---|
| Two-node BER | parameters with defaults, a role step doing the whole measurement, collect |
| OFDM BER across five modulations (FR3) | The same role driven across modulations and impairment axes, with drive-window probing |
| Noise files | Supplying your own recorded impairment rather than a generated one |
| Tutorial | What its description shows |
|---|---|
| WiFi AP + client, three ways | Several roles composed — AP, station, verification — instead of one large one |
| WiFi cell | The same pattern at cell scale |
| Tutorial | What its description shows |
|---|---|
| ADS-B reception | A receive-only experiment, and a guard that can require an actual position fix |
| FM broadcast | Staging a transmitter behind an explicit opt-in, through an attenuator |
| Network performance | Measuring the link rather than the radio |
| Tutorial | What its description shows |
|---|---|
| Duranta 5G SA | A whole stack — core, gNB, UE — as one description |
| OCUDU cross-vendor | An O-RAN 7.2 split across vendors |
Fifty of the sixty-two tutorials are not framework-based. That is not a
judgement about them — several are the best documentation on this wiki for
their hardware. It means only that their instructions are commands you type
rather than a description you run, so they are not examples to copy for the
framework.
Migration is in progress and deliberately unhurried. A tutorial is worth
converting when the framework genuinely helps:
and is not worth converting when the value is in the explanation rather
than the execution — a hardware description, a concept page, a one-off
bring-up of equipment nobody schedules.
Some will be retired instead. A tutorial written against hardware that no
longer exists is not a migration candidate; it is an archive entry, and
tutorials-retired is where those go.
If you are about to convert one, read
Writing an experiment first,
and check the role library before
writing anyrun:steps. The most common avoidable mistake is
re-implementing a role that already exists.
The framework is younger than the tutorial corpus. Converting a tutorial is
only worth doing properly: the description has to be run on real hardware
before the page claims it works, because a getting-started page that does not
work is worse than none — the reader cannot tell whether the failure is theirs.
That verification, not the YAML, is the cost. It is why the count moves slowly
and why each entry above is one somebody actually ran.
Author(s): COSMOS team · Last verified: 2026-09-11 — the twelve framework-based tutorials identified by scanning every published tutorial page for cosmos-run / cosmos-tutorial; counts are 12 of 62 · Tags: orchestration, tutorials, getting-started