Skip to main content
Each Destrier box lives in a single top-level directory containing its manifest, challenge files, documentation, and reference solver. Start from the Destrier box template rather than building the structure from scratch.

Template structure

The template repository provides starter layouts, working examples, and the schema used to validate box.yaml.
boxes-template
schemas
box.schema.json
templates
container-box
vm-box
network-box
examples
container-example-box
vm-example-box
network-example-box
Use 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 one box.yaml. The manifest defines the box identity, classification, objectives, network layout, hosts, and build configuration.
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

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.
Last modified on August 8, 2026