{"id":50402016,"url":"https://github.com/legostin/learn-almost-anything","last_synced_at":"2026-06-14T19:00:55.826Z","repository":{"id":361275823,"uuid":"1253821025","full_name":"legostin/learn-almost-anything","owner":"legostin","description":"Local desktop AI tutor: designs personalized courses on any topic with articles, interactive widgets, comprehension tests, homework review, and TTS lectures. Free — uses your Claude Pro/Max or ChatGPT Plus/Pro subscription. Tauri + React + Claude Agent SDK / Codex SDK.","archived":false,"fork":false,"pushed_at":"2026-06-12T10:08:53.000Z","size":7597,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-12T12:07:29.306Z","etag":null,"topics":["ai-agents","ai-tutor","claude","claude-agent-sdk","claude-code","codex","course-generator","desktop-app","education","llm","local-first","mcp","openai-codex","personalized-learning","react","rust","tauri","tauri-app","text-to-speech","typescript"],"latest_commit_sha":null,"homepage":"https://github.com/legostin/learn-almost-anything/releases","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/legostin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-29T21:08:08.000Z","updated_at":"2026-06-12T10:09:14.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/legostin/learn-almost-anything","commit_stats":null,"previous_names":["legostin/learn-almost-anything"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/legostin/learn-almost-anything","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/legostin%2Flearn-almost-anything","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/legostin%2Flearn-almost-anything/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/legostin%2Flearn-almost-anything/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/legostin%2Flearn-almost-anything/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/legostin","download_url":"https://codeload.github.com/legostin/learn-almost-anything/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/legostin%2Flearn-almost-anything/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34333806,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-14T02:00:07.365Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-agents","ai-tutor","claude","claude-agent-sdk","claude-code","codex","course-generator","desktop-app","education","llm","local-first","mcp","openai-codex","personalized-learning","react","rust","tauri","tauri-app","text-to-speech","typescript"],"created_at":"2026-05-31T00:00:59.679Z","updated_at":"2026-06-14T19:00:55.809Z","avatar_url":"https://github.com/legostin.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Learn (Almost) Anything\n\n\u003e Type a topic. Get a real course — with lessons, diagrams, tests, homework and spaced review — built by the AI subscription you already pay for, stored on your own machine.\n\n[![Release](https://img.shields.io/github/v/release/legostin/learn-almost-anything?include_prereleases\u0026label=release)](https://github.com/legostin/learn-almost-anything/releases)\n[![Build](https://img.shields.io/github/actions/workflow/status/legostin/learn-almost-anything/release.yml?label=build)](https://github.com/legostin/learn-almost-anything/actions/workflows/release.yml)\n[![Platform](https://img.shields.io/badge/platform-macOS%20%7C%20Windows-lightgrey)](https://github.com/legostin/learn-almost-anything/releases)\n[![Built with Tauri](https://img.shields.io/badge/built%20with-Tauri%202-24C8DB)](https://tauri.app)\n[![Agents](https://img.shields.io/badge/agents-Claude%20Code%20%7C%20Codex-7c3aed)](#your-subscription-is-the-engine)\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"screens/main.png\" alt=\"A generated lesson with sourced images and a multilingual course sidebar\" width=\"900\"\u003e\u003c/p\u003e\n\n## Why this exists\n\nEveryone \"learns with ChatGPT\" now — and a week later all that's left is a chat transcript you'll never reopen. Chats answer questions; they don't teach. Real learning needs structure, practice, feedback and repetition.\n\nLearn (Almost) Anything turns \"I want to understand X\" into an actual course: an agent interviews you, researches the topic, designs a curriculum, writes illustrated lessons, quizzes you, grades your homework, and schedules flashcard reviews so the material sticks. Everything lives on your disk. There's no platform, no subscription of ours, no server with your data — the engine is the Claude Code or Codex CLI you already have.\n\nIt's the difference between asking a smart friend questions all evening and having that friend sit down and *teach you properly*.\n\n## What it looks like\n\n\u003c!-- TODO: скриншот — главный экран с библиотекой курсов на разных языках (в screens/ пока нет отдельного скрина главной) --\u003e\n\nYou pick a topic, language, format and agent. The course can be a full academic course, a compact mini-module, a podcast-style series, a single lesson — or a roadmap that maps the whole journey first.\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"screens/new_course.png\" alt=\"Course creation: format, quality tier, tests/homework toggles\" width=\"900\"\u003e\u003c/p\u003e\n\n## The full learning loop\n\nMost AI tools stop at \"here's some text\". This one closes the loop:\n\n- **Lessons that look like lessons** — articles with real sourced images, Mermaid diagrams, galleries and sandboxed interactive widgets. Every draft goes through an editor/fact-check pass before you see it.\n- **Comprehension tests** — question pools that check understanding, not verbatim recall, and interleave concepts from earlier modules.\n- **Real homework** — essays, diagrams, file uploads, GitHub repos, and autograded coding tasks that actually run your code. The agent reviews submissions and makes you retry until it passes.\n- **Spaced repetition** — flashcards are extracted from each lesson and scheduled for review, so the course keeps working on you after you've read it.\n- **Lecture audio** — free OS voices out of the box, optional premium Gemini TTS, cached on disk.\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"screens/homework.png\" alt=\"Homework review with agent feedback\" width=\"900\"\u003e\u003c/p\u003e\n\nDon't want the full treatment? Checkboxes at creation turn tests and homework off, and you can skip the clarifying interview entirely — title, plan, go.\n\n## Roadmaps: see the whole journey\n\nFor big goals (\"become a data engineer\", \"learn academic painting from zero\") a single course is the wrong shape. A roadmap lays out stages and skills, runs a quick diagnostic to find out what you already know, and spawns a lesson or a full course from any skill — each one aware of where it sits in the bigger picture.\n\n\u003c!-- TODO: скриншот — роудмап с этапами и навыками (в screens/ пока нет) --\u003e\n\n## Your materials, your sources\n\nDrop documents, links and folders into a **Space** and courses created there ground themselves in *your* material — strictly (only your sources) or openly (your sources first, the web second). Attach custom MCP servers to a course and the agent can research through any tool you trust.\n\n## Private catalogs for teams\n\nThis is the part companies asked for. Spin up your own catalog server **inside your infrastructure** — one Docker command, hidden from the public internet:\n\n```bash\ndocker run -d -p 8080:8080 \\\n  -e PUBLIC_ORIGIN=http://catalog.internal.example.com:8080 \\\n  -e CATALOG_UPLOAD_TOKEN=your-secret \\\n  -v laa-catalog-data:/data \\\n  legostin/laa-catalog:latest\n```\n\nEveryone on the team adds the URL in Settings and gets a shared internal course library: onboarding tracks, domain knowledge, tooling guides. Authors publish with the team token; everyone else browses, installs and pulls updates with no token at all. Courses remember which catalog they came from, so update checks keep working even across reconfigurations. The public catalog stays available alongside.\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"screens/catalog.png\" alt=\"Public catalog: browse and install shared courses\" width=\"900\"\u003e\u003c/p\u003e\n\nAnd of course: publish your best courses to the [public catalog](https://catalog.almost-anything.io), install other people's courses, translate any course into another language — structure, lessons, tests, homework, diagram labels and even baked-in image text included.\n\n## Your subscription is the engine\n\nThe app is free and runs no paid backend. Every LLM call goes through an agent CLI **already installed and authenticated on your machine**:\n\n| You have | It powers | Install |\n|---|---|---|\n| Claude Pro / Max | Claude Code CLI | `npm i -g @anthropic-ai/claude-code` → `claude login` |\n| ChatGPT / Codex plan | Codex CLI | `npm i -g @openai/codex` → `codex login` |\n\nInstall both and pick per course. Optional extras, each off by default: Brave Search API (web/image grounding), Gemini API (generated illustrations, premium TTS). A quality/cost tier per course (quick / balanced / premium) controls research depth, reasoning effort and how much material gets generated — so a quick mini-course stays cheap and a premium deep-dive goes all in.\n\nProvider pricing changes; check [Claude Code plans](https://support.claude.com/en/articles/11145838-using-claude-code-with-your-pro-or-max-plan), [Codex pricing](https://chatgpt.com/codex/pricing/), [Gemini API](https://ai.google.dev/gemini-api/docs/pricing), [Brave Search API](https://brave.com/search/api/).\n\n## Get started\n\n1. **Download** the latest build from [Releases](https://github.com/legostin/learn-almost-anything/releases) — macOS `.dmg` (Apple Silicon / Intel, signed and notarized) or Windows `.msi`/`.exe` (unsigned for now, SmartScreen may warn).\n2. **Make sure Node.js 20+ is installed** — the local sidecar runs the agent SDKs through it.\n3. **Have at least one agent CLI** logged in (table above), then launch the app and create your first course.\n\nThe UI ships in English and Russian; course content can be generated in any language you pick — a single library happily mixes English, Russian and Chinese courses.\n\nInstalled builds self-update: the app checks GitHub Releases, downloads a signed updater bundle, verifies and installs it.\n\n## How it works under the hood\n\n\u003cdetails\u003e\n\u003csummary\u003eThe generation pipeline (click to expand)\u003c/summary\u003e\n\nYou pick one agent (Claude or Codex) when creating the course; every LLM step then runs through it via a local Node sidecar:\n\n1. **Interview** — a few adaptive clarifying questions become the course brief (skippable).\n2. **Plan** — the agent researches (web / Context7 / MediaWiki / arXiv / OpenAlex / your Space), designs the module tree and classifies the subject category.\n3. **Per-lesson generation** — draft (article + widgets) → editor \u0026 fact-check review → widget validation; then illustrations (real image vs code snippet, per block), a test, homework and flashcards in parallel. Accuracy-critical categories get an extra background fact-check pass.\n\n```mermaid\nflowchart TD\n  U[\"Topic, language, format, agent, space\"] --\u003e CC[\"create_course\"]\n  CC --\u003e SC[[\"Node sidecar (Claude Code / Codex)\"]]\n  SC --\u003e WQ[\"Interview → course brief\"]\n  WQ --\u003e BS[\"Plan: research → curriculum → category\"]\n  BS --\u003e LOOP{\"For each lesson\"}\n  LOOP --\u003e D1[\"Draft: article + widgets\"]\n  D1 --\u003e D2[\"Editor + fact-check review\"]\n  D2 --\u003e D3[\"Widget validation\"]\n  D3 --\u003e ILL[\"Illustrations\"]\n  D3 --\u003e TST[\"Test\"]\n  D3 --\u003e HW[\"Homework\"]\n  D3 --\u003e FC[\"Flashcards\"]\n  ILL --\u003e RDY[\"Lesson ready\"]\n  TST --\u003e RDY\n  HW --\u003e RDY\n  FC --\u003e RDY\n  RDY --\u003e LOOP\n  LOOP --\u003e|all done| FIN([\"Course ready\"])\n```\n\n\u003c/details\u003e\n\n**Stack:** Tauri 2 (desktop shell) · React 19 + TypeScript + Vite · Node sidecar calling `@anthropic-ai/claude-agent-sdk` and `@openai/codex-sdk` · SQLite + files for local storage · Playwright + system Chrome for visual widget checks · bundled MCP servers for controlled research tools.\n\n## Local data and privacy\n\n- Courses, progress and media live in the local app data directory. No Learn server hosts your content.\n- Agent providers receive only the prompts and course context needed for generation; optional Gemini/Brave integrations receive only the requests for features you enabled.\n- Catalog publishing and ngrok sharing happen only when you explicitly trigger them.\n\n## Latest releases\n\n- **v0.3.0** — private self-hosted catalogs (Docker image + multi-server support in the app), tests/homework toggles and a skippable interview at course creation, multiline topic input.\n- **v0.2.0** — single lessons, roadmaps, runnable autograded code assignments, custom MCP servers.\n- **v0.1.x** — public catalog, course formats, signed in-app updates, richer lesson visuals.\n\n## Develop\n\n```bash\ngit clone https://github.com/legostin/learn-almost-anything.git\ncd learn-almost-anything\n\npnpm install\npnpm --dir sidecar install\n\npnpm tauri dev\n```\n\nRequires Rust stable, pnpm, and Node 20+. `pnpm tauri build` produces bundles under `src-tauri/target/release/bundle/`; for local browser/share testing keep the frontend build current with `pnpm build:watch`.\n\nThe catalog server lives in a separate repository and ships as the `legostin/laa-catalog` Docker image; the app talks to `https://catalog.almost-anything.io` by default and to any private servers you add.\n\n## License\n\nNot set. Source is open for reading and personal use; use at your own risk.\n\n---\n\nMore utilities by the author: [legost.in](https://legost.in/en/utilities)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flegostin%2Flearn-almost-anything","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flegostin%2Flearn-almost-anything","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flegostin%2Flearn-almost-anything/lists"}