Local vault mirror
Your whole semester as plain JSON in ~/canvas-vault/. Grep it, jq it, back it up. Structured, atomic, and yours.
Mirror your semester, read live Canvas data, and connect an AI client without needing a developer key. Use a Personal Access Token when your school allows one—or complete normal SSO/MFA in a visible browser when it does not.
The original CLI, vault, and chat experience now live beside a typed live-Canvas core used by desktop MCP and an optional private mobile gateway.
Use the local mirror for speed and scripting, or query Canvas live when you need current syllabi, files, grades, calendars, and course state.
Your whole semester as plain JSON in ~/canvas-vault/. Grep it, jq it, back it up. Structured, atomic, and yours.
Your own AI answers over your real data — Anthropic, OpenAI, or any compatible endpoint. Just type canvasctrl for a session, or put your question right after it.
A 164-operation map across 29 Canvas areas, including 73 ready-to-invoke reads for courses, assignments, dates, files, grades, appointments, Inbox, quizzes, and more.
See what's due in any window — 24h, 7d, 2w — then export the next 60 days to a calendar you can subscribe to.
SHA-256 snapshots per course, per kind. canvasctrl changes replays exactly what shifted between two syncs — added, moved, or edited.
Writes are off by default and never automatic. File, text, and URL submissions get exact previews plus fresh device-owner authentication: Touch ID/password on macOS or Windows Hello on Windows. A Classic Quiz uses one scoped authentication before start.
Install CanvasCtrl first. Once that finishes, choose the AI client you want to connect.
Choose macOS or Windows, run its one-line installer, and enter your school's Canvas URL when asked.
Confirm Step 1 is complete, then choose Codex, ChatGPT desktop, Claude Code, Cursor, or VS Code.
Complete these in order. Your client choices unlock only after you confirm the installer finished.
Copy this command and paste it into Terminal. CanvasCtrl brings its own verified runtime, then asks for your school's Canvas URL so it can save the right default profile. If it finds an older Codex MCP path, follow the printed replacement and restart note.
$ curl -fsSL https://canvasctrl.vivek-patel.com/install.sh | sh
Enter your school's Canvas URL when prompted. Resolve any old-runtime warning, then continue to Step 2.
Open a guided macOS setup in the app you want to use with CanvasCtrl.
Use this local stdio configuration in any MCP-capable desktop client. Install CanvasCtrl first, then import or adapt the JSON in that client’s MCP settings.
CanvasCtrl talks to your Canvas institution directly. Canvas credentials live in your OS credential vault and are never MCP arguments or results. Optional remote access uses your own endpoint back to your CanvasCtrl host.
~/canvas-vault/. Plain JSON on disk. Delete the folder and it's gone.The live MCP targets macOS 13.5 or newer on Apple Silicon or Intel, and Windows 11 on x64. Choose your platform in Step 1: both one-line installers supply CanvasCtrl's private Node.js runtime and native credential/approval helpers, so no system Node.js, npm, or administrator access is required. The Windows choice unlocks only when a Windows runtime covered by CanvasCtrl's maintainer-signed release manifest is present on this site. A prerelease is visibly labeled Beta test, is never selected automatically, and stays on the signed beta update channel; the normal label and stable channel appear only after approval for general release. This is not a claim of Microsoft Authenticode signing. macOS also needs no Homebrew, Apple Command Line Tools, or Apple Developer account. Chrome is supported for browser-session authentication; Windows can also use Microsoft Edge. Windows ARM64 is not currently advertised.
canvasctrl itself is free and MIT-licensed. The only cost is your own AI usage when you use the agent — Anthropic, OpenAI, or even a free local model via an OpenAI-compatible endpoint. Billed directly to your key, at your rate, with no markup from us.
Yes. Updater-enabled stable installations check the maintainer-approved stable channel when the MCP starts and at most once daily while it remains running. A visibly labeled Windows beta-test installation checks the signed beta channel instead until you switch it to stable. CanvasCtrl accepts only signed, checksum-matched releases, validates them before atomic activation, and keeps the previous runtime for rollback. New code loads the next time your AI client starts the MCP; Canvas login, profiles, vault files, and client configuration stay unchanged. Installations from before the updater need to run the same one-line installer once more.
PATs and captured Canvas sessions are stored in macOS Keychain or encrypted for the current Windows user with DPAPI. The MCP never returns them, and Canvas authentication is stripped from off-origin downloads. Your AI client can still receive course data you ask tools to read, so connect only clients you trust.
CanvasCtrl is designed for standard Canvas LMS installations. During setup you point it at your school's HTTPS Canvas origin. Compatibility can still vary with institution policy, roles, feature flags, session behavior, and undocumented APIs, so the built-in doctor and capability checks report what is actually available.
Only when you explicitly enable confirmed writes. File, text-entry, and URL submissions each need an exact preview and separate device-owner authentication. macOS uses Touch ID or the Mac account password; Windows uses Windows Hello face, fingerprint, or PIN. Cancel or failure denies the action. Uploading a file does not submit coursework; a file submission requires its own later authentication. Grading, enrollment, SIS, and administrative generic writes require another locally approved privileged capability, then still require per-write authentication. Classic Quiz attempts use the bounded one-approval workflow described below.
Do not retry the write. Run canvasctrl doctor, then the harmless canvasctrl test-approval-dialog. The test invokes the same macOS Touch ID/password or Windows Hello policy but never contacts Canvas or authorizes a later action. On Windows, reads remain available if Hello is not configured, but writes fail closed until it is ready. If the test works but your AI client still does not prompt, check canvas_get_runtime_info; an absent tool or old version usually means the client needs the installed platform launcher and a full restart.
Yes, for documented Classic Quizzes when Canvas authorizes the student. CanvasCtrl previews the exact quiz, asks you to say “Yes, I want you to attempt this quiz.”, and requires one fresh device-owner authentication before start—Touch ID/password on macOS or Windows Hello on Windows. That short-lived session covers start, answer saves, and final submission without prompting on every question; it cannot be reused for another quiz or attempt. New Quizzes exposes public authoring APIs but no documented student start/answer/submit lifecycle, so CanvasCtrl does not imitate its browser-only flow.
No. Remote mode is optional and every installer supplies their own Cloudflare hostname, tunnel, Access policy, and identity. The project never ships the maintainer's endpoint or gives another installation access to it.
In ~/canvas-vault/ as plain JSON — metadata, a change log, and any files you pull. It's yours to grep, back up, or delete. Remove the folder and every trace of your synced data is gone.