hubctl is a terminal-first client for ClassHub teacher/admin actions.
classes listclass lock <id>/class unlock <id>class rotate-code <id>class set-enrollment <id> <open|invite_only|closed>class roster <id>class submissions <id> --limit N --offset Nauth login|check|logout
From repo root:
PYTHONPATH=tools/hubctl python -m hubctl --base-url http://localhost auth login --username adminIf your deployment enforces teacher 2FA, include OTP code:
PYTHONPATH=tools/hubctl python -m hubctl --base-url https://lms.example.org \
auth login --username admin --otp-token 123456List classes:
PYTHONPATH=tools/hubctl python -m hubctl classes listMachine-readable output:
PYTHONPATH=tools/hubctl python -m hubctl --json class submissions 12 --limit 25- Uses the same Django session flow as
/teach/login(no bypass token flow). - If OTP is required,
auth loginmust complete/teach/2fa/setupverification. - Session cookies are stored in
~/.classhub/hubctl.cookiesby default. - Override with
--session-fileorHUBCTL_SESSION_FILE.
0: success2: bad CLI input3: auth/session issue (unauthorized, OTP required)4: permission denied5: resource not found6: rate limited7: network/server failure