Canvas-Sync
Synchronize Canvas LMS courses and files to a local folder, preserving course structure and organization.
#Canvas #Instructure #LMS #Synchronize #Education
Table of Contents 📚
Overview 📚
Canvas-Sync mirrors your Canvas course structure locally so you can browse course materials offline. It downloads modules, assignments, pages, files, and optional external resources into a tidy folder layout.
Key Features include:
- Automatic synchronization of modules, assignments, and files
- Preserves course/module/subfolder structure locally
- Configurable: choose which content types to sync
- Optional download of external files referenced in descriptions
- Simple, user-friendly CLI with interactive setup (Typer + Rich)
- Rich progress bars and improved sync status output
Quick Start 🚀
Step 1 — Generate a Canvas API token
- Log in to your Canvas instance → Account → Settings → Approved Integrations → New Access Token.
- Copy the token and keep it secure. You will use it during setup.
Step 2 — Install Canvas-Sync
See the Installation section below for all options.
Step 3 — Launch and configure
Run canvas setup to launch the interactive setup:
- Choose a local sync folder
- Provide your Canvas domain (without
https://, e.g.example.instructure.com) - Enter the API token from Step 1
- Select the courses to sync
After setup, run canvas sync to begin downloading course content.
Installation 📦
Pick the method that best fits your workflow:
Using uv (recommended):
uv add canvas-sync-py
uv pip install canvas-sync-py
With pip:
pip install canvas-sync-py
From source (developer mode):
git clone https://github.com/Sang-Buster/Canvas-Sync.git
cd Canvas-Sync
pip install -e .
PYTHONPATH=src canvas --help
Usage ⚙️
| Command | Description |
|---|---|
canvas --help |
Launch CLI and show help message |
canvas setup |
Re-run setup and update saved values |
canvas info |
Show current saved settings |
canvas sync |
Start synchronization using saved settings |
canvas reset |
Reset and remove saved encrypted settings (use when you forgot your password) |
Security & Privacy 🔒
| Features | Description |
|---|---|
| Data stays local and encrypted | All settings and your Canvas API token are stored locally on your device using AES encryption with a password-derived key. |
| Read-only access | Canvas-Sync only downloads course content — it never makes changes to your Canvas account. |
| Revoke access anytime | Use canvas setup to update your settings or canvas reset to delete them completely. |
| Protect your token | Never share your Canvas API token. If you believe it's compromised, revoke it in Canvas immediately and run canvas reset. |
Links 🔗
- Architecture notes: docs/ARCHITECTURE.md
- Releases and changelog: CHANGELOG.md
Metadata
Release files for canvas-sync-py 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| canvas_sync_py-0.5.0.tar.gz | 30.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| canvas_sync_py-0.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 75.0 kB
Release files / canvas_sync_py-0.5.0.tar.gz
| Download URL | canvas_sync_py-0.5.0.tar.gz |
|---|---|
| Size | 30.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
73eb8ce7ee17193450476e2287a1b44611133961322a25400361937101d5f86a
|
|
BLAKE2b-256 checksum How to use checksums |
4070fe01f6e7464dcb50919ba4cff8237baae3041b87c3f6bd000c5750e20d80
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.6.10
|
Release files / canvas_sync_py-0.5.0-py3-none-any.whl
| Download URL | canvas_sync_py-0.5.0-py3-none-any.whl |
|---|---|
| Size | 44.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5a037975d74bb7410613faa1eac41f954c9c8ae0cd35dc582c4aa4d461424226
|
|
BLAKE2b-256 checksum How to use checksums |
7a5e0ca949243cd5d1e7f228782bd1feb6d9d7199968d5511f811679c1d5eff9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.6.10
|