Synchronize modules, assignments and files from Canvas by Instructure to your local computer
Project description
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
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file canvas_sync_py-0.5.0.tar.gz.
File metadata
- Download URL: canvas_sync_py-0.5.0.tar.gz
- Upload date:
- Size: 30.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
73eb8ce7ee17193450476e2287a1b44611133961322a25400361937101d5f86a
|
|
| MD5 |
295995e8172a887fb17d29b672afc005
|
|
| BLAKE2b-256 |
4070fe01f6e7464dcb50919ba4cff8237baae3041b87c3f6bd000c5750e20d80
|
File details
Details for the file canvas_sync_py-0.5.0-py3-none-any.whl.
File metadata
- Download URL: canvas_sync_py-0.5.0-py3-none-any.whl
- Upload date:
- Size: 44.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5a037975d74bb7410613faa1eac41f954c9c8ae0cd35dc582c4aa4d461424226
|
|
| MD5 |
bd0ee606f37a385c295ec2edc70c7ec0
|
|
| BLAKE2b-256 |
7a5e0ca949243cd5d1e7f228782bd1feb6d9d7199968d5511f811679c1d5eff9
|