Ok
ok.py supports programming projects by running tests, tracking progress, and assisting in debugging.
Install / Use
/learn @okpy/OkREADME
The ok.py 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 okpy.org
The ok.py software was developed for CS 61A at UC Berkeley.
View Documentation at OK Documentation
Installation
To install:
- Clone this repo
- Install
virtualenv. You can dobrew install virtualenvon a mac orpip install virtualenvorapt-get install python-virtualenv- If brew cannot find
virtualenv, usebrew install pyenv-virtualenv.
- If brew cannot find
- Create a virtualenv with
virtualenv -p python3 env - Activate the virtualenv with
source env/bin/activate - (Optional, but recommended) Install
redis-server. You can dobrew install redison a mac orapt-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
$ ./manage.py createdb
$ ./manage.py seed
$ ./manage.py server
The server will listen on http://localhost:5000.
If you are running into issues - see documentation/SETUP.md or file an issue
Running Workers
To run workers locally:
$ ./manage.py worker
To be able to run the workers you should have a redis server installed and running.
If redis 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
./manage.pyonce the virtualenv is activated.
Customizing seed content
server/generate.py initializes the local server with sample content (Users, Assignments, a Course etc). You can customize it by changing the file and running ./manage.py 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 ok.py
- CS61A uses ok.py for all assignments.
- Many other UC Berkeley CS courses use ok.py
Developer Guidelines
See documentation/CONTRIBUTING.md
Recent activity:
Deploying
Docker + Kubernetes on Google Container Engine. See kubernetes/kubernetes.md 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:
- 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
ok-publish. - Start the local ok server.
- When running the ok binary, add the flags
--insecure --server localhost:<port>to point it to the running ok-server - To find demo assignments that you can use the binary with, look in ok-client/demo
Related Skills
node-connect
351.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
claude-opus-4-5-migration
110.7kMigrate prompts and code from Claude Sonnet 4.0, Sonnet 4.5, or Opus 4.1 to Opus 4.5
frontend-design
110.7kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
model-usage
351.4kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.

