Need help with ok?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

246 Stars 71 Forks Apache License 2.0 4.5K Commits 153 Opened issues

Description supports programming projects by running tests, tracking progress, and assisting in debugging.

Services available


Need anything else?

Contributors list


The server collects submissions and displays analysis of student progress based on logging sent from client scripts.

Courses can sign up for our free hosted service on

The software was developed for CS 61A at UC Berkeley.

Build Status Coverage Status Docker Repository on Quay

View Documentation at OK Documentation


To install: * Clone this repo * Install

. You can do
brew install virtualenv
on a mac or
pip install virtualenv
apt-get install python-virtualenv
- If brew cannot find
, use
brew install pyenv-virtualenv
. * Create a virtualenv with
virtualenv -p python3 env
* Activate the virtualenv with
source env/bin/activate
* (Optional, but recommended) Install
. You can do
brew install redis
on a mac or
apt-get install redis-server

Local Server

To run the server locally:

$ source env/bin/activate # for virtualenv
$ pip install -r requirements.txt  # to install libraries
$ ./ createdb
$ ./ seed
$ ./ server

The server will listen on http://localhost:5000.

If you are running into issues - see

or file an issue

Running Workers

To run workers locally:

$ ./ worker

To be able to run the workers you should have a

server installed and running.


is not installed you can install it using your distribution's package manager or follow Redis Quick Start.

Command Line Manager

  • To view available commands run
    once the virtualenv is activated.

Customizing seed content

initializes the local server with sample content (Users, Assignments, a Course etc). You can customize it by changing the file and running
./ resetdb

Server Development

The server is developed in Python 3.5+ using Flask.

Core Features

Backup Maintenance - Best-effort maintenance of student backups that occur when ok is run.

Composition Grading - Allow staff to comment on student composition of projects and assign grades.

Autograding - Automatic grading of student submissions

Projects using

  • CS61A uses for all assignments.
  • Many other UC Berkeley CS courses use

Developer Guidelines



Recent activity:

Throughput Graph


Docker + Kubernetes on Google Container Engine. See

for more info.

The ok-server also supports deployments to Heroku or servers on any major hosting service.

There also exists a one-click setup for ok-server on Azure.

Python Style Guide

Refer to The Elements of Python Style

Some useful things for developers to know:

  1. Testing with ok-client
    • To test with ok-client, please follow the instructions for the ok-client repo here.
    • Once you are inside the virtual environment for ok-client, you can make a new binary by using the command
    • Start the local ok server.
    • When running the ok binary, add the flags
      --insecure --server localhost:
      to point it to the running ok-server
    • To find demo assignments that you can use the binary with, look in ok-client/demo

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.