node package manager
Loosely couple your services. Use Orgs to version and reuse your code. Create a free org »


gitbook2edx-external-grader NPM version

external grader engine for edx

Install globally with npm:

npm i -g gitbook2edx-external-grader

General help

    gitbook2edx-external-grader serve [ -p PORT ] 
    gitbook2edx-external-grader run [ -e ENGINE ] [ -d | --dry ] CODE 
    gitbook2edx-external-grader -h | --help 
    -p, --port PORT       port to expose as a push endpoint for edx (def. 1666)
    -e, --engine ENGINE   engine to be used to run scripts ([octave, node])
    -d, --dry             dry run
    CODE                  the code to be executed; default: javascript


The makefile has two targets (start and stop) to make you run the grader in server mode and expose it to the internet. These targets use pm2 to start and stop both the grader and an ngrok server. The ngrok server should be configured with an .ngrok file; this is my ~/.ngrok file:

auth_token: your auth token
        subdomain: "grader.cms.zaccaria"
            http: 1666

After ngrok started, the server is reachable in this case at: This is the address to use for the Edx push xqueue.


Tests are categorized in three parts:

  1. Tests for the server part (via supertest); these dont really require app-armor. They just check that data the overall client-server protocol complies with xqueue specs (invoked with make test).
  2. Fake tests for the code-jail environment; these test the sequencing of actions that should be done when launching an application through app-armor, even if you dont have app-armor (e.g., I am developing on a Mac). These are invoked by ./test/
  3. App-armor execution; these run some sample scripts under app-armor, by assuming you are under linux 14.04. These are invoked by ./test-local/


Vittorio Zaccaria


Copyright (c) 2015 Vittorio Zaccaria
Released under the BSD license

This file was generated by verb on February 10, 2015.