Personal project · Desktop app
You name a topic. An AI teacher writes the lessons, quizzes and reference notes into plain markdown files in a folder you own, and the app renders them as a course you read, answer and talk back to.
01
New course asks for a topic. The app creates a folder and opens the teacher with it.
02
The agent writes a mission, then the first lesson with a goal, a win, a quiz and a task.
03
Lessons render with highlighted code, quizzes and task checklists. Progress is tracked; the app reopens where you left off.
04
A side panel chats with the same agent session. The conversation is saved next to the course.
05
When the last lesson is read, the Next button asks the teacher to write the next one.
"Ask for the next lesson" is the whole loop. The course grows at your pace.
Claude Code
agent CLI
GitHub Copilot CLI
agent CLI
opencode
agent CLI
Anthropic / OpenAI / Google
API key
The app drives the agent you already have, headlessly, inside each course folder. Bring your own agent or API key; there is nothing to subscribe to.
A course is a folder of markdown: a mission, numbered lessons, references and the teacher's learning record. You can read every file in any editor, put the folder in git, or hand it to someone else.
That is the difference from chat apps: when you are done, you have a course, not a scrollback. API keys stay in the OS keychain; nothing leaves your machine except the calls to your own agent.
--- id: 3 title: "Ownership and borrowing" goal: "Understand why Rust moves values" win: "Fix a borrow error without cloning" --- ## Why moves exist Rust has three rules... ```quiz question: "What happens to `s` after `let t = s;`?" options: - "It is moved and can no longer be used" - "It is copied byte for byte" answer: 0 ```
Quizzes with shuffled options and saved answers, task checklists, charts, callouts and tables.
Monokai-highlighted code blocks with Copy and Expand, in both themes.
A per-lesson progress rail that doubles as the scrollbar; exact scroll position remembered.
Cmd+K palette: full-text search across the course with jump-to-paragraph.
Teacher panel with question forms and a transcript tagged by lesson.
Light and dark themes, native-feeling chrome, in-app self-update.
Plugin SDK: a folder with plugin.json, renderer.js and format.md adds a lesson block type, without forking the app.
Each plugin renderer runs sandboxed, with no file, network or app access, and stays off until you enable those exact bytes.