Skip to content

Live Demo & ML Assets

The Canvas Calendar Agent is live, free to try, and requires no setup. Click anywhere below.

Try the agent right now

Surface Link What it is
Browser demo kleinpanic.github.io/CS3704-Canvas-Project/agent-demo/ Polished chat UI, 18 tool buttons, runs on this site
HuggingFace Space kleinpanic93/canvas-calendar-agent-demo The live inference Space (ZeroGPU)
Cloudflare Worker proxy cs3704-demo-proxy.kleinpanic.workers.dev Holds HF auth server-side; no tokens reach the browser

The browser demo calls the Worker, which calls the Space. First request after a quiet period takes ~30 s while ZeroGPU cold-starts; subsequent requests are fast.

What's the model

Asset Link
Model card kleinpanic93/canvas-calendar-agent-v7-dpo
Preference dataset kleinpanic93/canvas-calendar-preferences-v7
GGUF quants (Ollama-ready) kleinpanic93/canvas-calendar-agent-v7-dpo-gguf
Collection (full v3.0 9-method matrix) Canvas Calendar Agent v3.0

Base model: google/gemma-4-e2b-it. Fine-tuned with Direct Preference Optimization (arXiv:2305.18290) on 1,071 preference pairs.

Headline metrics: rewards/accuracies = 0.9032, train_loss = 0.2229, rewards/margins = 5.142 (134 steps in 9:03 on a single Spark GB10).

Use it locally

Python SDK (auto-downloads model from HF)

pip install canvas-sdk[autodownload]

python -c "from canvas_sdk import CanvasAgent; print(CanvasAgent.auto().run('what is due this week?'))"

Ollama (any of the 6 GGUF quants)

ollama pull hf.co/kleinpanic93/canvas-calendar-agent-v7-dpo-gguf:Q4_K_M
ollama run hf.co/kleinpanic93/canvas-calendar-agent-v7-dpo-gguf:Q4_K_M "list my Canvas courses"

Available quants: Q4_K_M (3.2 GB, recommended), Q8_0 (4.7 GB), F16 (8.7 GB). Full 12-quant expansion ships with v8.

The 18 tools

The agent speaks the native Gemma-4 tool-call protocol for these 18 tools. Each one is wired in the Python SDK with a real Canvas / Google Calendar adapter. The browser demo uses mock dispatchers since the public Space has no Canvas creds.

canvas (8)

get_assignments · get_course · get_grades · get_syllabus · get_todo · list_announcements · list_courses · list_planner_items

calendar (5)

create_event · delete_event · find_free_blocks · list_events · modify_event

reranker (1)

priority_hint

study (4)

exam_bracket · recommend_block_size · semester_schedule · spaced_schedule

Architecture

User browser  →  GitHub Pages (static site)
                  ↓ POST /chat (no token in JS)
Cloudflare Worker  →  https://cs3704-demo-proxy.kleinpanic.workers.dev
                  ↓ Authorization: Bearer hf_*** (server-side secret)
HuggingFace Space  →  Gemma-4 DPO inference (ZeroGPU)
                  ↓ tool calls + mock dispatchers
                final answer + tool-call breakdown

Why the Worker? ZeroGPU has a small daily quota for anonymous callers. Without auth, the demo would be unusable after a handful of visitors. The Worker holds the HF token server-side so authenticated requests use the project's quota; the browser never sees a credential.

See Architecture → Security for the full forensic backstory and security design.

Source repos

Repo What lives there
CS3704-Canvas-Project TUI client, browser extension, SDK, docs site, demo
CS3704-DPO-SSOT (private) Training data, fine-tuning code, paper, GSD planning

Release

Latest tagged release: v3.0.0 — extension zip, SDK wheel, source tarball, model card.