Scenarios
Named groups of generator instances with coordinated lifecycle control, a diagram of the global state they exchange, and a live view of that state.
A scenario is a named group of generator instances that run as one unit. Projects define what a generator does; a scenario defines which instances belong together at runtime.
A corporate network simulation, for example, may consist of an authentication service tracking user sessions, a web proxy generating traffic for those users, a DNS resolver publishing the domains it refuses, and a firewall logging connections from the same population. Those generators exchange data through global state and are started and stopped together.
Configuration
Scenarios come from the scenarios field of each instance in startup.yml. An instance can belong to several of them:
- id: corp-auth-service
path: corp-auth-service/generator.yml
scenarios:
- corporate-network
- security-monitoring
- id: corp-web-proxy
path: corp-web-proxy/generator.yml
scenarios:
- corporate-network
- id: corp-dns-resolver
path: corp-dns-resolver/generator.yml
scenarios:
- corporate-network
- id: corp-edge-firewall
path: corp-edge-firewall/generator.yml
scenarios:
- corporate-network
- security-monitoringHere corporate-network groups all four instances and security-monitoring groups two of them. There is no separate scenario file: a scenario exists as soon as an instance names it.
Studio writes the same field. Scenarios can be created on the Scenarios page, and membership can be changed from a scenario or from an instance.
Scenario list
Each row holds the number of instances in a scenario and the states they are in, so one that is only half running is distinguishable from one that is fully up. Rows can be started, stopped or deleted one at a time or as a selection.
The Create new button takes a name and the instances that belong to it. Deleting a scenario removes the grouping and leaves the instances themselves registered.
Scenario page
The header carries the aggregate status of the group with the Start all and Stop all buttons. Where the Instances page acts on instances one at a time, this brings a whole simulation up or takes it down in one action.
Data flow
The diagram maps the global state the instances exchange: which generator writes a key, and which ones read it. It is present once any generator in the scenario calls globals.set() or globals.get().
Hovering an instance or a key dims everything it does not touch, which keeps a key written by one generator and read by three others legible.
Instances
Each instance is a card with the actions the Instances page offers for it, plus a Remove action, which takes it out of the group without deleting it.
A card for a generator that uses global state expands into its templates and, for each of them, the keys it writes and the keys it reads. Hovering an entry highlights the matching edge in the diagram above.
Opening a template name shows its source read-only, inside the card, at the place where globals.set() and globals.get() are called.
Global state
The panel on the right is the live globals dictionary the diagram describes, searchable over keys and values, with objects and arrays expandable rather than truncated. Keys can be added, edited as JSON and deleted, which puts a scenario into a state that would otherwise take a long run to reach.
Global state is application-wide. Editing it affects every running instance, not only the ones in this scenario. Check the data flow diagram for what depends on a key before changing it.
Instances
The instance list with live throughput and error counts, lifecycle controls, the per-instance metrics diagram, and the instance page with its settings and logs.
Settings and management
Application configuration, the encrypted secrets keyring, and the management console with instance identity, the application log and lifecycle controls.