Skip to main content

gcr

Command-line utility for running a class on GitHub, a lightweight GitHub classroom replacement.

At the moment, this is early alpha software, use at your own risk.

Feedback welcome!

Installation

The recommended method for installation is uv tool install gcr-cli, you can then run gcr.

uvx: uvx --from gcr-cli gcr

pipx: pipx install gcr-cli, then run gcr

Setup

  1. Set env variable GITHUB_TOKEN to a classic token with org & repo admin permissions.
  2. Manually create a GitHub organization for your classroom.
  3. Create a class.toml with your roster & settings. gcr will look for class.toml in the current directory, or you can pass the -c/--config option to specify the path.
org = "name-of-github-org"

students = [
  "list",
  "of",
  "student",
  "accounts",
]

staff = [
  "list",
  "of",
  "staff",
  "accounts",
]

staff_team = "staff"
student_team = "students"
student_permission = "push"
staff_permission = "maintain"
requests_per_minute = 60
retry_attempts = 3
retry_wait_seconds = 5

Usage

All commands take two options:

  • -c/--config: path to class.toml (default: current dir)
  • --dry-run: avoid making actual changes on GitHub

gcr setup

Initialize GitHub organization and invite staff & students.

The organization must already exist and your API key must have access.

gcr assign {template-repo-name}

Creates one private repo per student, granting access to their account & staff.

gcr clone {assignment} [optional-student]

Clone student repos to a local directory.

Changelog

0.3.0 - 5 August 2026

  • Addition of clone
  • Prompt to automatically make assignment repository a template.

0.2.0 - 4 August 2026

  • First 'public' release.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gcr_cli-0.3.0.tar.gz (18.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gcr_cli-0.3.0-py3-none-any.whl (18.7 kB view details)

Uploaded Python 3

File details

Details for the file gcr_cli-0.3.0.tar.gz.

File metadata

  • Download URL: gcr_cli-0.3.0.tar.gz
  • Upload date:
  • Size: 18.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"NixOS","version":"25.11","id":"xantusia","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for gcr_cli-0.3.0.tar.gz
Algorithm Hash digest
SHA256 2e1252714d798c283aaeae9449a02d31483d55849a6191f27097eec7b0430d26
MD5 79c42c52d2c3e14ae6e7ed7bb521df8e
BLAKE2b-256 362da35760b6e335f89347166b3b3ab096ea82c63f0e7a7c075dd4623eee3bc4

See more details on using hashes here.

File details

Details for the file gcr_cli-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: gcr_cli-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 18.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"NixOS","version":"25.11","id":"xantusia","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for gcr_cli-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 596a07a059b7431ce823642fe3f2e14f3800870612c37373451bbddb09430d46
MD5 702ea8f033132c58dfafe72ee717f499
BLAKE2b-256 2b3fe60537de8cd4e8fa30e0dd082084171f224019ba9279dffdd82633f314d5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page