Skip to content

cass

cass — Canvas grading CLI.

Usage:

$ cass [OPTIONS] COMMAND [ARGS]...

Options:

  • --config TEXT: Path to a cass.toml (default: search upward from the working directory) [env var: CASS_CONFIG]
  • -V, --version: Show version
  • --install-completion: Install completion for the current shell.
  • --show-completion: Show completion for the current shell, to copy it or customize the installation.
  • --help: Show this message and exit.

Commands:

  • status: Show project sync status and the local DB...
  • init: Initialize or repair the local cass setup.
  • pull: Fetch from Canvas and update the local...
  • push: Preview and push pending Canvas-managed...
  • revert: Revert local pending Canvas-managed...
  • query: Query curated datasets, or use raw SQL as...
  • delete: Delete the local database (cass.db).
  • backup: Save a timestamped copy of the database to...
  • restore: Replace the current database with a backup...
  • view: Open the database in a browser-based viewer.
  • canvas: Canvas LMS — browse and modify course...

cass status

Show project sync status and the local DB overview.

Usage:

$ cass status [OPTIONS]

Options:

  • --help: Show this message and exit.

cass init

Initialize or repair the local cass setup.

Usage:

$ cass init [OPTIONS]

Options:

  • --help: Show this message and exit.

cass pull

Fetch from Canvas and update the local database.

Usage:

$ cass pull [OPTIONS]

Options:

  • --students: Pull students only
  • --assignments: Pull assignments only
  • --submissions: Pull submissions only
  • --help: Show this message and exit.

cass push

Preview and push pending Canvas-managed changes.

Usage:

$ cass push [OPTIONS]

Options:

  • -y, --yes: Skip confirmation prompt
  • --help: Show this message and exit.

cass revert

Revert local pending Canvas-managed changes since the last sync.

Usage:

$ cass revert [OPTIONS]

Options:

  • -y, --yes: Skip confirmation prompt
  • --help: Show this message and exit.

cass query

Query curated datasets, or use raw SQL as an explicit escape hatch.

Usage:

$ cass query [OPTIONS] [DATASET]

Arguments:

  • [DATASET]: Dataset to query (students, assignments, submissions, gradebook)

Options:

  • --where TEXT: Filter expression
  • --order TEXT: Order expression
  • --limit INTEGER: Limit rows (0 = all) [default: 0]
  • --sql TEXT: Raw SQL (advanced usage)
  • --help: Show this message and exit.

cass delete

Delete the local database (cass.db).

Usage:

$ cass delete [OPTIONS]

Options:

  • -y, --yes: Skip confirmation prompt
  • --help: Show this message and exit.

cass backup

Save a timestamped copy of the database to backups/.

Usage:

$ cass backup [OPTIONS]

Options:

  • -t, --tag TEXT: Tag appended to filename
  • -l, --list: List existing backups
  • --help: Show this message and exit.

cass restore

Replace the current database with a backup file.

Usage:

$ cass restore [OPTIONS] FILE

Arguments:

  • FILE: Path to a .db backup file [required]

Options:

  • -y, --yes: Skip confirmation prompt
  • --help: Show this message and exit.

cass view

Open the database in a browser-based viewer.

Usage:

$ cass view [OPTIONS] [FILEPATH]

Arguments:

  • [FILEPATH]: Path to a .duckdb or .db file (optional)

Options:

  • --port INTEGER: Port number (0 = auto-select) [default: 0]
  • --help: Show this message and exit.

cass canvas

Canvas LMS — browse and modify course content.

Usage:

$ cass canvas [OPTIONS] COMMAND [ARGS]...

Options:

  • --help: Show this message and exit.

Commands:

  • login: Save a browser session and refresh it...
  • people: Show course roster with roles and emails.
  • files: Show course files as a tree.
  • upload: Upload a file to the course.
  • delete-file: Delete a file from the course.
  • announcements: List course announcements.
  • announce: Create an announcement.
  • update-announcement: Update an announcement.
  • delete-announcement: Delete an announcement.
  • tabs: List course navigation tabs.
  • show-tab: Make a navigation tab visible.
  • hide-tab: Hide a navigation tab.
  • sync: Sync cass.toml declarations to Canvas...
  • modules: Course modules — list, create, publish,...
  • assignments: Assignments — list, create, publish, delete.
  • quizzes: Quizzes — list, create, publish, delete.
  • calendar: Course calendar — list, create, update,...

cass canvas login

Save a browser session and refresh it automatically after a 401 rejection.

Usage:

$ cass canvas login [OPTIONS]

Options:

  • --from-brave: Import your Canvas session from Brave on macOS.
  • --from-chrome: Import your Canvas session from Google Chrome on macOS.
  • --profile TEXT: Browser profile directory, such as 'Profile 1'. [default: Default]
  • --help: Show this message and exit.

cass canvas people

Show course roster with roles and emails.

Usage:

$ cass canvas people [OPTIONS]

Options:

  • --csv TEXT: Export as CSV file
  • --save TEXT: Save output as markdown file
  • --help: Show this message and exit.

cass canvas files

Show course files as a tree.

Usage:

$ cass canvas files [OPTIONS]

Options:

  • --csv TEXT: Export as CSV file
  • --save TEXT: Save output as markdown file
  • --help: Show this message and exit.

cass canvas upload

Upload a file to the course.

Usage:

$ cass canvas upload [OPTIONS] PATH

Arguments:

  • PATH: Local file path to upload [required]

Options:

  • --folder TEXT: Destination folder in Canvas
  • --help: Show this message and exit.

cass canvas delete-file

Delete a file from the course.

Usage:

$ cass canvas delete-file [OPTIONS] FILE_ID

Arguments:

  • FILE_ID: Canvas file ID [required]

Options:

  • -y, --yes: Skip confirmation
  • --help: Show this message and exit.

cass canvas announcements

List course announcements.

Usage:

$ cass canvas announcements [OPTIONS]

Options:

  • --csv TEXT: Export as CSV file
  • --save TEXT: Save output as markdown file
  • --help: Show this message and exit.

cass canvas announce

Create an announcement.

Usage:

$ cass canvas announce [OPTIONS] TITLE

Arguments:

  • TITLE: Announcement title [required]

Options:

  • -m, --message TEXT: HTML message body [required]
  • --help: Show this message and exit.

cass canvas update-announcement

Update an announcement.

Usage:

$ cass canvas update-announcement [OPTIONS] TOPIC_ID

Arguments:

  • TOPIC_ID: Announcement (discussion topic) ID [required]

Options:

  • --title TEXT: New title
  • -m, --message TEXT: New message body
  • --help: Show this message and exit.

cass canvas delete-announcement

Delete an announcement.

Usage:

$ cass canvas delete-announcement [OPTIONS] TOPIC_ID

Arguments:

  • TOPIC_ID: Announcement (discussion topic) ID [required]

Options:

  • -y, --yes: Skip confirmation
  • --help: Show this message and exit.

cass canvas tabs

List course navigation tabs.

Usage:

$ cass canvas tabs [OPTIONS]

Options:

  • --csv TEXT: Export as CSV file
  • --save TEXT: Save output as markdown file
  • --help: Show this message and exit.

cass canvas show-tab

Make a navigation tab visible.

Usage:

$ cass canvas show-tab [OPTIONS] ID_OR_LABEL

Arguments:

  • ID_OR_LABEL: Tab ID or label [required]

Options:

  • --help: Show this message and exit.

cass canvas hide-tab

Hide a navigation tab.

Usage:

$ cass canvas hide-tab [OPTIONS] ID_OR_LABEL

Arguments:

  • ID_OR_LABEL: Tab ID or label [required]

Options:

  • --help: Show this message and exit.

cass canvas sync

Sync cass.toml declarations to Canvas (modules, assignments, quizzes).

Compares [], [], and the quiz files named by [] against the live Canvas course. Shows a diff of create/update/skip actions. Use --apply to execute changes.

Quizzes match by title. Questions on an existing quiz are never compared or modified; only settings are updated.

Usage:

$ cass canvas sync [OPTIONS]

Options:

  • --dry-run / --apply: Show what would change (default) or apply changes [default: dry-run]
  • --create-groups: Create assignment groups that are missing on Canvas
  • --help: Show this message and exit.

cass canvas modules

Course modules — list, create, publish, delete.

Usage:

$ cass canvas modules [OPTIONS] COMMAND [ARGS]...

Options:

  • --id TEXT: Module ID or name to show items
  • --csv TEXT: Export as CSV file
  • --save TEXT: Save output as markdown file
  • --help: Show this message and exit.

Commands:

  • create: Create a new module.
  • publish: Publish a module (or all modules with --all).
  • unpublish: Unpublish a module.
  • delete: Delete a module.
  • add-item: Add an item to a module.

cass canvas modules create

Create a new module.

Usage:

$ cass canvas modules create [OPTIONS] NAME

Arguments:

  • NAME: Module name [required]

Options:

  • --position INTEGER: Position in list
  • --help: Show this message and exit.

cass canvas modules publish

Publish a module (or all modules with --all).

Usage:

$ cass canvas modules publish [OPTIONS] [ID_OR_NAME]

Arguments:

  • [ID_OR_NAME]: Module ID or name

Options:

  • --all: Publish all modules
  • --help: Show this message and exit.

cass canvas modules unpublish

Unpublish a module.

Usage:

$ cass canvas modules unpublish [OPTIONS] ID_OR_NAME

Arguments:

  • ID_OR_NAME: Module ID or name [required]

Options:

  • --help: Show this message and exit.

cass canvas modules delete

Delete a module.

Usage:

$ cass canvas modules delete [OPTIONS] ID_OR_NAME

Arguments:

  • ID_OR_NAME: Module ID or name [required]

Options:

  • -y, --yes: Skip confirmation
  • --help: Show this message and exit.

cass canvas modules add-item

Add an item to a module.

Usage:

$ cass canvas modules add-item [OPTIONS] ID_OR_NAME

Arguments:

  • ID_OR_NAME: Module ID or name [required]

Options:

  • --type TEXT: Item type (Assignment, Quiz, File, Page, etc.) [required]
  • --content-id INTEGER: Canvas ID of the content [required]
  • --title TEXT: Item title (defaults to content name)
  • --help: Show this message and exit.

cass canvas assignments

Assignments — list, create, publish, delete.

Usage:

$ cass canvas assignments [OPTIONS] COMMAND [ARGS]...

Options:

  • --id TEXT: Assignment ID or name for details
  • --csv TEXT: Export as CSV file
  • --save TEXT: Save output as markdown file
  • --help: Show this message and exit.

Commands:

  • create: Create a new assignment.
  • publish: Publish an assignment.
  • unpublish: Unpublish an assignment.
  • delete: Delete an assignment.
  • groups: Assignment groups — list, create, delete.

cass canvas assignments create

Create a new assignment.

Usage:

$ cass canvas assignments create [OPTIONS] NAME

Arguments:

  • NAME: Assignment name [required]

Options:

  • --group TEXT: Assignment group name (e.g. 'Homeworks', 'Labs') [required]
  • --points FLOAT: Points possible [default: 0]
  • --due TEXT: Due (YYYY-MM-DD HH:MM in course time, or ISO 8601)
  • --type TEXT: Submission type (online_url, online_upload, online_text_entry, etc.) [default: online_url]
  • --publish: Publish immediately
  • -d, --description TEXT: HTML description
  • --help: Show this message and exit.

cass canvas assignments publish

Publish an assignment.

Usage:

$ cass canvas assignments publish [OPTIONS] ID_OR_NAME

Arguments:

  • ID_OR_NAME: Assignment ID or name [required]

Options:

  • --help: Show this message and exit.

cass canvas assignments unpublish

Unpublish an assignment.

Usage:

$ cass canvas assignments unpublish [OPTIONS] ID_OR_NAME

Arguments:

  • ID_OR_NAME: Assignment ID or name [required]

Options:

  • --help: Show this message and exit.

cass canvas assignments delete

Delete an assignment.

Usage:

$ cass canvas assignments delete [OPTIONS] ID_OR_NAME

Arguments:

  • ID_OR_NAME: Assignment ID or name [required]

Options:

  • -y, --yes: Skip confirmation
  • --help: Show this message and exit.

cass canvas assignments groups

Assignment groups — list, create, delete.

Usage:

$ cass canvas assignments groups [OPTIONS] COMMAND [ARGS]...

Options:

  • --csv TEXT: Export as CSV file
  • --save TEXT: Save output as markdown file
  • --help: Show this message and exit.

Commands:

  • create: Create an assignment group.
  • delete: Delete an assignment group and every...
cass canvas assignments groups create

Create an assignment group.

Usage:

$ cass canvas assignments groups create [OPTIONS] NAME

Arguments:

  • NAME: Group name (e.g. 'Homeworks') [required]

Options:

  • --weight FLOAT: Percent of final grade (weighted courses only)
  • --position INTEGER: Position in list
  • --help: Show this message and exit.
cass canvas assignments groups delete

Delete an assignment group and every assignment in it.

Usage:

$ cass canvas assignments groups delete [OPTIONS] ID_OR_NAME

Arguments:

  • ID_OR_NAME: Group ID or name [required]

Options:

  • -y, --yes: Skip confirmation
  • --help: Show this message and exit.

cass canvas quizzes

Quizzes — list, create, publish, delete.

Usage:

$ cass canvas quizzes [OPTIONS] COMMAND [ARGS]...

Options:

  • --id TEXT: Quiz ID or title for settings and questions
  • --csv TEXT: Export as CSV file
  • --save TEXT: Save output as markdown file
  • --help: Show this message and exit.

Commands:

  • export: Export a quiz as a quiz file (settings and...
  • responses: Download every student's answers to a...
  • create: Create a quiz from a quiz file (--from) or...
  • update: Update a quiz's settings from a quiz file...
  • publish: Publish a quiz.
  • unpublish: Unpublish a quiz.
  • delete: Delete a quiz.

cass canvas quizzes export

Export a quiz as a quiz file (settings and questions).

Usage:

$ cass canvas quizzes export [OPTIONS] ID_OR_NAME

Arguments:

  • ID_OR_NAME: Quiz ID or title [required]

Options:

  • -o, --output TEXT: Write to this file instead of stdout
  • --help: Show this message and exit.

cass canvas quizzes responses

Download every student's answers to a classic quiz or survey.

Usage:

$ cass canvas quizzes responses [OPTIONS] ID_OR_NAME

Arguments:

  • ID_OR_NAME: Quiz ID or title [required]

Options:

  • --all-attempts: Every attempt, not only each student's latest
  • --csv TEXT: Write responses to a CSV file
  • --wide: Canvas's report as is: one row per student, a column per question
  • --help: Show this message and exit.

cass canvas quizzes create

Create a quiz from a quiz file (--from) or as an empty placeholder.

Usage:

$ cass canvas quizzes create [OPTIONS] [TITLE]

Arguments:

  • [TITLE]: Quiz title (omit when using --from)

Options:

  • --from TEXT: Quiz file (TOML) with settings and questions
  • --type TEXT: Quiz type (practice_quiz, assignment, graded_survey, survey) [default: assignment]
  • --group TEXT: Assignment group name
  • --points FLOAT: Points (graded_survey only)
  • --due TEXT: Due (YYYY-MM-DD HH:MM in course time, or ISO 8601)
  • --unlock TEXT: Unlock time (course time or ISO 8601)
  • --lock TEXT: Lock time (course time or ISO 8601)
  • --attempts INTEGER: Allowed attempts (-1 = unlimited) [default: 1]
  • --time-limit INTEGER: Time limit in minutes (0 = none) [default: 0]
  • -d, --description TEXT: HTML description
  • --publish: Publish immediately
  • --create-groups: Create a missing assignment group
  • --help: Show this message and exit.

cass canvas quizzes update

Update a quiz's settings from a quiz file (questions are not touched).

Usage:

$ cass canvas quizzes update [OPTIONS] ID_OR_NAME

Arguments:

  • ID_OR_NAME: Quiz ID or title [required]

Options:

  • --from TEXT: Quiz file with the desired settings [required]
  • --help: Show this message and exit.

cass canvas quizzes publish

Publish a quiz.

Usage:

$ cass canvas quizzes publish [OPTIONS] ID_OR_NAME

Arguments:

  • ID_OR_NAME: Quiz ID or title [required]

Options:

  • --help: Show this message and exit.

cass canvas quizzes unpublish

Unpublish a quiz.

Usage:

$ cass canvas quizzes unpublish [OPTIONS] ID_OR_NAME

Arguments:

  • ID_OR_NAME: Quiz ID or title [required]

Options:

  • --help: Show this message and exit.

cass canvas quizzes delete

Delete a quiz.

Usage:

$ cass canvas quizzes delete [OPTIONS] ID_OR_NAME

Arguments:

  • ID_OR_NAME: Quiz ID or title [required]

Options:

  • -y, --yes: Skip confirmation
  • --help: Show this message and exit.

cass canvas calendar

Course calendar — list, create, update, delete events.

Usage:

$ cass canvas calendar [OPTIONS] COMMAND [ARGS]...

Options:

  • --from TEXT: Only events on or after this date (YYYY-MM-DD)
  • --to TEXT: Only events on or before this date (YYYY-MM-DD)
  • --csv TEXT: Export as CSV file
  • --save TEXT: Save output as markdown file
  • --help: Show this message and exit.

Commands:

  • create: Create a calendar event.
  • update: Update a calendar event (only the given...
  • delete: Delete a calendar event.

cass canvas calendar create

Create a calendar event.

Usage:

$ cass canvas calendar create [OPTIONS] TITLE

Arguments:

  • TITLE: Event title [required]

Options:

  • --start TEXT: Start (YYYY-MM-DD HH:MM in course time, or ISO 8601) [required]
  • --end TEXT: End (YYYY-MM-DD HH:MM in course time, or ISO 8601)
  • --location TEXT: Location name
  • -d, --description TEXT: HTML description
  • --all-day: All-day event (times ignored)
  • --help: Show this message and exit.

cass canvas calendar update

Update a calendar event (only the given fields change).

Usage:

$ cass canvas calendar update [OPTIONS] EVENT_ID

Arguments:

  • EVENT_ID: Calendar event ID [required]

Options:

  • --title TEXT: New title
  • --start TEXT: New start (course time or ISO 8601)
  • --end TEXT: New end (course time or ISO 8601)
  • --location TEXT: New location
  • -d, --description TEXT: New HTML description
  • --all-day / --timed: Make all-day or timed
  • --help: Show this message and exit.

cass canvas calendar delete

Delete a calendar event.

Usage:

$ cass canvas calendar delete [OPTIONS] EVENT_ID

Arguments:

  • EVENT_ID: Calendar event ID [required]

Options:

  • -y, --yes: Skip confirmation
  • --help: Show this message and exit.