🎓 Canvas Completer
A CLI tool to help manage Canvas LMS assignments. Syncs your courses, assignments, and course materials locally for easy access and AI-assisted homework help.
✨ Features
- 📚 Course Sync — Automatically fetches all your active courses, syllabi, and assignments
- 📅 Assignment Tracking — View upcoming assignments with due dates and submission status
- 📄 Content Extraction — Downloads and extracts content from PDFs, YouTube videos, Panopto recordings, and more
- 🤖 AI Integration — Works with Claude Code or Cursor for AI-assisted assignment help
- 🔍 AI Detection — Built-in AI detection checking to review written work
- 💾 Offline Access — All course materials stored locally for offline reference
📋 Requirements
- Python 3.10+
- A Canvas LMS account at your school
🚀 Installation
Option 1: pip (Recommended)
pip install canvas-completer
Then install the browser for authentication:
playwright install chromium
Option 2: pipx (Isolated Environment)
pipx install canvas-completer
pipx runpip canvas-completer install playwright
playwright install chromium
Option 3: From Source
git clone https://github.com/MillerMedia/canvas-completer.git
cd canvas-completer
pip install -e .
playwright install chromium
⚙️ Configuration
On first run, you'll be prompted to enter your school's Canvas URL. Examples:
https://canvas.instructure.comhttps://canvas.university.eduhttps://school.instructure.com
Your configuration is stored in ~/.config/canvas-completer/.
📖 Usage
Interactive Mode (Recommended)
canvas-completer
This launches the interactive CLI where you can:
- 🔄 Sync your courses
- 📂 Browse assignments by course
- 📝 View assignment details and rubrics
- 🤖 Open assignments in Claude Code or Cursor for AI help
Quick Commands
# Sync courses and assignments
canvas-completer sync
# Clear saved session (logout)
canvas-completer logout
📁 Data Storage
All synced data is stored locally at:
~/.config/canvas-completer/
├── config.json # Your Canvas URL and token
├── session.json # Browser session (for SSO login)
├── settings.json # User preferences
└── data/
└── courses/
└── Course_Name/
├── course_info.json
├── syllabus.md
├── assignments/
│ └── Assignment_Name/
│ ├── assignment.json
│ ├── requirements.md
│ ├── rubric.md
│ └── submission/
└── modules/
└── Module_Name/
└── content.md
🛠️ Optional Tools
For the best experience, install these AI coding assistants:
| Tool | Install | Description |
|---|---|---|
| Claude Code | npm install -g @anthropic-ai/claude-code |
Recommended for AI help |
| Cursor | cursor.com | AI-powered code editor |
| tmux | brew install tmux |
Enables split-pane view |
🔒 Privacy & Security
- Your Canvas token is stored locally with restricted file permissions (600)
- No data is sent to external servers (except Canvas and optional AI detection services)
- Session cookies are stored locally for convenience
❓ Troubleshooting
"Session expired" errors
Run canvas-completer logout then sync again to re-authenticate.
Browser doesn't open for login
Make sure Playwright browsers are installed: playwright install chromium
Can't find your Canvas URL
Check the URL you use to access Canvas in your browser. It typically looks like https://canvas.schoolname.edu or https://schoolname.instructure.com.
📄 License
MIT License — See LICENSE file for details.
🤝 Contributing
Contributions welcome! Please open an issue or submit a pull request.
Made with 🦆 by MillerMedia
Metadata
Release files for canvas-completer 0.1.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 | Provenance | Actions |
|---|---|---|---|---|
| canvas_completer-0.1.0.tar.gz | 43.3 kB | Without provenance | Details for canvas_completer-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| canvas_completer-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for canvas_completer-0.1.0-py3-none-any.whl |
Total release size: 88.7 kB
Release files / canvas_completer-0.1.0.tar.gz
| Download URL | canvas_completer-0.1.0.tar.gz |
|---|---|
| Size | 43.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
13133fcf1b86a830facd28e224316d361d8fa6b885b7a094cc3916fab6d3d16f
|
|
BLAKE2b-256 checksum How to use checksums |
133fa09c27edf2eeafba5c0820a06ffa8e0c6fce04028aaa7746cd4d27eae8c4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|
Release files / canvas_completer-0.1.0-py3-none-any.whl
| Download URL | canvas_completer-0.1.0-py3-none-any.whl |
|---|---|
| Size | 45.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
629e4ed1b0215a1e512f09d7a8f29064dc455515fc4b9044c09de8a5838d9199
|
|
BLAKE2b-256 checksum How to use checksums |
b0504c6dbf8756b5e669d8f9baf9d9cd8d6de9065811e0429ac72c0446a35a8e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|
Security for canvas-completer 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.