Template structure
The template repository provides starter layouts, working examples, and the schema used to validatebox.yaml.
boxes-template
schemas
box.schema.json
templates
container-box
vm-box
network-box
examples
container-example-box
vm-example-box
network-example-box
templates/ to start a new challenge, and refer to examples/ for complete working boxes that show how the structure fits together.
Box structure
Each contribution should follow this basic structure:your-box-id
README.md
box.yaml
target
solver
Configure box.yaml
Every box contains exactly onebox.yaml. The manifest defines the box identity, classification, objectives, network layout, hosts, and build configuration.
- Identity
- Classification
- Objectives
- Networking
- Hosts
Identifies the box, its competition namespace, version, and contributors.
string
required
Permanent identifier for the box. Use lowercase letters, numbers, and hyphens.
string
required
Competition identifier used to route the box into the correct storage namespace. Use lowercase letters, numbers, and hyphens.
semver
required
Semantic version such as
1.0.0. Increment it whenever the box changes.string
required
Human-readable name of the box.
string[]
required
One or more contributor names or handles.
Host build rules
How a host is declared depends on how Destrier creates it.
All hosts are built from source except domain controllers.
build.image is reserved for domain-controller hosts.
Manifest examples
- Container
- Virtual machine
- Network
- Domain controller
README structure
The README should give reviewers enough context to understand, reproduce, and verify the challenge.Health checks
Health checks tell Destrier when a host is ready before the evaluation begins.
A health check may be omitted when the host has no service that can be checked.