CANVAS LMS / COMMAND-LINE INTERFACEGO BINARY · MIT LICENSE · ZERO CLICK TAX

Your entire LMS.
Under command.

The power of the Canvas API.
The precision of your terminal.

Bulk grade a class. Pipe course data into a script. Give your AI agent the tools to do both. One open-source binary, built for the way you actually work.

macOSLinuxWindows/Homebrew · Go · Docker
BUILT FOR EDUCATORS. WIRED FOR DEVELOPERS.EXPLORE THE WORKFLOWS
01 / WORKFLOW WALKTHROUGHANIMATED EXAMPLES

See it in action.
One workflow at a time.

Explore real commands and illustrative output.
Choose a workflow to see how it fits together.

canvas-workspace ILLUSTRATIVE OUTPUT
❯_ terminalREAD / COURSES

# Every course you can access. One command.

canvas courses list --output json
[
  { "id": 1042, "name": "Design Fundamentals",
    "workflow_state": "available" },
  { "id": 1043, "name": "Creative Coding",
    "workflow_state": "available" }
]

Structured output. Ready for whatever comes next.

Example shownILLUSTRATIVE OUTPUT · canvas
WHY IT MATTERS

Stop copying data out of the browser. Get consistent, structured output you can filter, save, and reuse.

Workflow docs ↗

Animated walkthroughs with sample data. Commands are not executed, and no Canvas account is connected.

02 / API SURFACE

A serious surface.
For serious workflows.

From course content to institution-level admin.
A broad Canvas API surface, with endpoint paths
validated against the official spec in CI.

876/ 1,086

documented API endpoints implemented

93 command groups4 output formats
Inspect API coverage ↗
03 / ENGINEERED TO COMPOSEHUMAN → SCRIPT → AGENT

One binary.
Three ways to ship.

The same Canvas operations, wherever you work.
No separate integration to maintain for your agent.

YOUR TERMINAL, SUPERCHARGED

Less remembering.
More executing.

Explore Canvas in the interactive shell, with command history and completion. Set a course context once and stop repeating the same flags.

Explore context management ↗
session.sh
# Start an interactive session
canvas repl

# Set your working course
canvas context set course 123

# Use it across commands
canvas assignments list

Let the client do the plumbing.

Automatic pagination, adaptive rate limiting, and exponential-backoff retries. Focus your scripts on the task, not the HTTP housekeeping.

PAGINATION / RETRIES / QUOTAS

Keep your environments explicit.

Named Canvas instances and a per-command --instance flag. Work across production and sandbox without swapping configuration files.

MULTI-INSTANCE / CONTEXT

Know what you're running.

OAuth 2.0 with PKCE, system keyring integration, and cosign-signed release checksums with SBOMs. Inspect the source. Verify the binary.

READ THE SECURITY DOCS ↗
04 / BOOT SEQUENCEYOUR TERMINAL IS NEXT
Canvas CLI logo

Ready when
you are_

Install. Authenticate. Execute.
Works with the permissions you already have in Canvas.

Download a signed release ↗
DARWIN / LINUX / WINDOWS
01

Get the binary

brew tap jjuanrivvera/canvas-cli
brew install canvas-cli

For macOS and Linux with Homebrew installed.

02

Connect your institution

canvas auth login \
  https://your-school.instructure.com
Authentication setup ↗
03

You're in command.

canvas courses list
Open the quick start ↗
README / FAQ

Before you
hit Enter.

What is Canvas CLI?

An independent, MIT-licensed command-line interface for Canvas LMS, built with Go. It brings course management, grading, enrollments, and administration to your terminal, scripts, and AI assistants.

Will it work with my institution?

You need your Canvas instance URL and authorized API access. The operations you can perform depend on your account permissions and institution settings. Start with the authentication guide.

What can AI agents do with it?

The MCP server exposes CLI commands as tools with typed parameters and structured JSON output. The bundled skill teaches agents how to use the CLI. You can generate host-specific guard rules to block destructive actions and require approval for writes. See agent safety for setup and limitations.

Do I need to run a server?

No server is needed for normal CLI use. Install the binary, authenticate, and run commands. For an AI client, the same binary can run as an MCP server over STDIO or HTTP.

Your LMS has an API.
Now it has a command line.

Make it yours