Skip to content

Defining a CTF Event

The platform stores a CTF event in a Git repository. This repository should contain event metadata and all challenges.

To get started, create a event.yml in the root of your repository with metadata like this:

YAML
event_name: MyCTF
front_page_md: |
  # My CTF

  This is a CTF description in markdown.
rules_md: |
  # Rules

  - Write your rules in markdown here!
start_time: 2025-11-13T10:00:00Z
end_time: 2026-11-20T10:00:00Z
use_teams: true # Setting this to false makes this a solo competition

# Optional, if you want to limit registration time
#registration_start_time: 2025-11-13T10:00:00Z
#registration_end_time: 2026-11-20T10:00:00Z

points_fn: |
    setPointsFn((challengeMetadata, totalSolves, currentSolveIndex) => {
      // This closure receives the challenge metadata, amount of solves and at which solve this was (1st, 2nd, ...)
      // It should return an integer (Number, not a BigInt).
    })

categories: # This gives internal category IDs (used on the challenges) names and descriptions
  misc:
    name: Misc
    description: "A short **Markdown** description of the category"
    color: "#f00"
  rev:
    name: rev
    color: green


difficulties: # This gives internal difficulty IDs (used on the challenges) names
  easy:
    name: Easy
  medium:
    name: Medium
  hard:
    name: Hard

Your challenges should be placed in the challs subdirectory of the repository.

Imprint