Skip to content
Keeps the webserver that broadway grades with
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
broadway_api fix re-registration (#65) Apr 11, 2019
scripts Module Refactor (#48) Feb 11, 2019
tests Change worker register endpoints (#62) Mar 29, 2019
.travis.yml Simplify .travis.yml (#53) Feb 12, 2019 move testing guidelines to contributing guidelines May 26, 2019 Module Refactor (#48) Feb 11, 2019 Document additional config options in README (#66) Jul 11, 2019 Change worker register endpoints (#62) Mar 29, 2019 Replace capabilities with privileged mode (#52) Feb 12, 2019
requirements.txt app restructured Nov 19, 2018
requirements_test.txt Module Refactor (#48) Feb 11, 2019
setup.cfg Module Refactor (#48) Feb 11, 2019

Broadway API

Build Status Coverage Status License Python Versions

The Broadway API is a service that receives, distributes, and keeps track of grading jobs and runs.

The aim of this project is to provide a generic interface to a distributed autograding system that can be used by multiple courses. Broadway aims to provide the following benefits:

  • More stable and reliable grading runs. No one student can break the entire AG run.
  • Faster grading runs. Multiple machines can grade the same assignment.
  • Easier tracking and debugging of student failures during grading.
  • A more consistent environment to grade student code.
  • Easier to scale out the infrastructure.

Please read the Wiki for documentation. It explains how Broadway works and how to interact with it. Please be sure to read all the pages if you are planning on using Broadway.

See our contribution guidelines if you want to contribute.


MongoDB must be installed and the mongod daemon must be running locally before starting the API. Default options are usually sufficient (but for security purposes, be sure to disallow external access to the store).

Python 3.5 is the minimum supported interpreter version. Versions 3.5 and 3.6 are officially supported, but 3.7 should work just as well.


Most configuration options are available and documented in-line in at the root of the project directory. This is the file that will be imported by the API and used for configuration.

Environment Variables

Some behavioral configuration options are available through environment variables for ease-of-use. These are documented below.

Name Description Default
BROADWAY_TOKEN The token to use for cluster authentication A randomly generated token (logged at startup)

Running the API

Python dependencies can be installed by executing (from the project root):

pip3 install -r requirements.txt

Then the API can be started by running executing:


Starting a Grading Run

We provide a sample script to start a grading run. Make sure HOST and PORT are set correctly. Usage:

python <path to grading config json> <path to run time env json> <token>

It is recommended to build a CLI which can generate the required config files and start the grading run (so that AG run scheduling can be automated).

You can’t perform that action at this time.