Open source · MIT License

Run CSE autotest
from your laptop.

One command replaces SSH + copy + cd + run. Works with any UNSW CSE course.

cselab demo: running autotest from local terminal
$ pip install cselab

The 6-step loop you do 50 times a day

Every edit-test cycle takes 30–60 seconds of overhead.

The SSH Loop
1. Open terminal
2. $ ssh z5555555@login.cse.unsw.edu.au
3. Enter password (again...)
4. $ cd ~/COMP1521/lab01
5. $ scp files from local machine
6. $ 1521 autotest
... fix code, repeat from step 5. Every. Single. Time.

Over a 10-week term, you waste hours on SSH logistics instead of learning.

With cselab: one command.

Save. Run. Done.

cselab
$ cselab run "1521 autotest"
[1/3] Connecting... OK (0.0s)
[2/3] Syncing... OK (0.2s)
[3/3] Running: 1521 autotest
✓ All tests passed!
VS Code, Cursor, Vim — any editor
Watch mode: auto-test on save
Zero dependencies

How cselab compares

Feature VLAB SSH FS Remote-SSH cserun cselab
Use local editor No Partial Yes Yes Yes
Run autotest / give Yes Separate SSH Yes Yes Yes
Server load High Low Very High Low Near Zero
Reliability OK Good Gets killed 45% 100%
Watch mode No No No No Yes
Install method Browser VS Code plugin VS Code plugin Rust toolchain pip install
AI editor support No No No No Yes
Offline editing No No No No Yes

Built for CSE students

Everything you need, nothing you don't.

Any Editor

VS Code, Cursor, Windsurf, Vim, Emacs — write code in whatever you want. cselab handles the rest.

Sub-Second Feedback

rsync delta sync: 0.2s. SSH execute: 0.15s warm. Your edit-test cycle drops from 60s to under 1s.

Watch Mode

Save your file, autotest runs automatically. No switching windows, no typing commands.

Works Offline

Edit code on the train, at a cafe, anywhere. Sync and test when you're back online.

For Course Coordinators & System Admins

VS Code Remote-SSH spawns persistent Node.js processes on login servers. CSE already deploys reaper scripts to handle the load. Students keep using it because there's no better alternative.

Server Load Comparison
Remote-SSH
~200–500 MB RAM/student
SSH FS
~50 MB/student
cselab
~0 MB idle, pulse connections

If 100 students switch from Remote-SSH to cselab, your login servers free up 20–50 GB of RAM.

Zero server-side components — standard SSH + rsync only
No persistent connections — ControlMaster socket, disconnect after command
Reduces SSH connection churn — ControlMaster reuses one connection
Open source (MIT) — fully auditable, no security concerns
Compatible with all courses using autotest / give / classrun

Get started in 3 steps

Requires Python 3.10+ (pre-installed on macOS and most Linux).

1

Install

$ pip install cselab
2

Configure

$ cselab init
# Enter your zID and password
3

Run

$ cd ~/COMP1521/lab01
$ cselab run "1521 autotest"

See it in action

Full demo — from install to first test run.

Demo Video

Video coming soon