The goal of the ScoringEngine is to keep track of service up time in a blue teams/red team competition.

How does it work?

The general idea of the ScoringEngine is broken up into 3 separate processes, Engine, Worker, and Web.


The engine is responsible for tasking Checks that are used to verify network services each round, and determining/saving their results to the database. This process runs for the entire competition, and will sleep for a certain amount of time before starting on to the next round.


The worker connects to Redis and waits for Checks to get tasked in order to run them against . Once it receives a Check, it executes the command and sends the output back to the Engine.


The web application provides a graphical view of the Competition. This includes things like a bar graph of all team’s scores as well as a table of the current round’s results. This can also be used to configure the properties of each service per team.

External Resources

We currently use MySQL as the database, and Redis as the data store for tasks while they are getting scheduled.

Putting it all together

  • The Engine starts
  • The first Round starts
  • The Engine tasks Checks out to the Workers
  • The Workers execute the Checks and return the output to the Engine
  • The Engine waits for all Checks to finish
  • The Engine determines the results of each Check, and saves the results to the DB
  • The Engine ends the Round
  • The Engine sleeps for some time
  • The second Round starts






Team Services


Specific Service


Round Status


Admin Team View