Skip to main content
A scenario is a directory containing a scenario.json file and optional Ansible playbooks. All scenarios live under a shared root (auto-detected, or set with -p).

Directory Layout

The directory names are conventions for organization: they have no special meaning to the runner. The runner walks the scenarios root recursively and indexes each scenario by the key field inside its scenario.json (the directory path is not used as the key).

scenario.json

The only required file. At minimum, five fields are needed:

Required Fields

Optional Fields


Writing Good Tickets

The ticket_body is the exact instruction the agent receives. A few guidelines:
  • Describe symptoms, not solutions. “The nginx service is not running after a configuration change” is better than “Fix the nginx config file.”
  • Be concrete. Reference the host name, service name, or observable behavior when you know it.
  • Keep it realistic. Write it as you would a real support ticket or runbook task.

Scenario Keys and Tags

The key is a free-form unique identifier defined inside scenario.json. The runner indexes every discovered scenario by this value, and you select a scenario by passing its key to -s. The key does not have to match the directory path; by convention it is the leaf directory name:
Tags are free-form strings for grouping. A scenario can have multiple tags:
Run all scenarios with a given tag:
When a -s token does not match a key exactly, it is treated as a tag. Tags and explicit keys can be mixed: