Greg Chism · Work EduCloud Modular ecosystem · resource plane + coursework plane
Planning
Interface
Orchestration
Compute
Pegasus
Data
Coursework (Quad)

Federated System Architecture

two planes, one seam · pluggable resources · free → paid → donations

Mētis ⇄ Epistēme. The layers below push down — plans, classifications, routes. Practitioners push back up — overrides, corrections, local knowledge. The system proposes; students and instructors dispose, and every override is signal that reweights the models. Strong defaults, weak locks. Legibility here serves the people inside the system; it never disciplines them.
Modular by design — use the pieces that work for you. Nothing here needs anything else to exist. Two planes: the Coursework plane (Quad) distributes, collects, and grades Git-backed assignments — privately, as one self-hostable binary, with no EduCloud. The Resource plane (EduCloud) routes, meters, and runs compute for any task source, with no Quad. They connect at a single seam only when you want both, and the AI / pedagogy and interactive-workspace blocks stay optional and off by default.
Plane ACoursework — Quad self-hostable · privacy-minimal · standalone
Host-agnostic by design — GitHub, Forgejo/Gitea, and GitLab plug in behind one adapter interface (pkg/adapter). Self-host on your own Git or point at a hosted one. No core changes.
Roadmap — each standalone, each glass-box — GitHub Classroom importer (time-boxed: GHC shutdown Aug 28 2026) · run-the-grader-locally · assignment preflight · grade replay · signed student-held record · data-inventory generated from the schema · student-owned analytics mirror.
What we refuse to build — no proctoring or keystroke logging; no student-vs-student leaderboards; no instructor surveillance dashboard (individual signals belong to the student first, aggregates only); no AI as the final word on a contested grade; no required cloud account; no silent cost cutoff that blocks required work. Naming the refusals is part of the trust.
One seam joins the two planes. Quad's pkg/workspace → EduCloud's provisioner (interactive sessions); the autograder runs as a routed compute job; the tutor / generator / AI-grading call EduCloud's inference layer through the pkg/governance gate; the roster meters cost by host_username, never by identity. Everything below is the resource plane — omit the seam and each plane still stands alone.
PlanningCourse planning agent ahead of term · offline · human-in-the-loop
drafts profiles · seeds the forecast · sizes the allocation
Tier 1Interface unified · accessible · cost-transparent
requests routed transparently — every route overridable
Tier 2Orchestration classify · broker · provision · meter
provisioner forks by task shape
RoutingExecution path chosen by task shape — interactive vs batch
both paths run on the shared compute pool
Tier 3Compute pluggable pool · uniform provider interface
datasets staged in · results persisted out
DataData movement cross-backend fabric · ACCESS-ID auth
Extensible by design — Google Colab, Lambda Labs, NAIRR Pilot, and more add via a single adapter. No core changes.
drawing from the pool is quota-governed
FundingAllocation & funding model free pool → quota → paid / donations
100%
drag to pan · scroll to zoom
click a layer to collapse · click a node for detail