Lyceum
A cross-platform desktop app that turns any LLM into a structured, interactive tutor.
Lyceum turns any large language model into a structured, interactive tutor — teaching through explanation, worked examples, and adaptive questioning rather than one-shot answers. It is vendor-agnostic by design: users bring their own API key and choose between Claude, GPT, Kimi, or a locally hosted open-weight model. The app ships with no bundled API key and no vendor lock-in, so the teaching layer stays useful regardless of which model is cheapest, fastest, or available offline.
lyceum --model local:qwen --topic 'gradient descent'
session ▸ tutor mode: adaptive
provider ▸ local (no key required)
stage 1 ▸ explanation
stage 2 ▸ worked example
stage 3 ▸ check for understanding …
// engineering notes
Decisions behind it
01
Pedagogy as a pipeline, not a prompt
Lessons move through explanation, worked example, and adaptive questioning as distinct stages. The model is asked to do one thing at a time, which keeps a tutoring session coherent across long conversations instead of collapsing into an answer machine.
02
Vendor-agnostic model layer
A single provider interface sits in front of Claude, GPT, Kimi, and locally hosted open-weight models. Swapping the backing model is a settings change, not a rewrite — and a local model keeps the app usable with no network at all.
03
Bring your own key
No API key is bundled with the binary and no traffic is proxied through a first-party server. Credentials stay on the user's machine, which keeps cost, privacy, and rate limits under the user's control.
04
Genuinely cross-platform
Built on Electron with a TypeScript and React front end so the same build targets Linux, macOS, and Windows without maintaining three UIs.