CLI tool
learnhouse/learnhouse avatar
learnhouse/learnhouse

LearnHouse: a self-hosted LMS with a block editor, code grading and AI features

The Next-gen Open Source learning platform for everyone ✨

2,279 stars544 forksPythonAGPL-3.0

At a glance

What is it?
LearnHouse is an AGPL-3.0 learning platform built on Next.js, FastAPI, PostgreSQL and Redis, installed through an npm CLI. It bundles far more than course delivery, and that breadth is the main thing to weigh before adopting it.
Who is it for?
Adopt LearnHouse if you want a self-hosted platform where courses, code exercises, discussions and certificates live in one instance, and you are comfortable running PostgreSQL, Redis and a Node-based web app. Do not adopt it if you need a mature plugin ecosystem, a mobile app, or per-seat support contracts; none of those appear in the README or the repository layout.
Can I use it commercially?
Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
Is it still maintained?
Yes. The repository last received commits 5 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 18, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What LearnHouse is for, and who ends up running it

LearnHouse targets people who want to publish structured educational content on infrastructure they control. The README lists courses, a block-based editor, collections, assignments, discussions, podcasts, analytics, code execution with auto-grading in 30+ languages, collaborative boards, certificates, user groups and SEO metadata. That is a wide surface for a single project. The realistic adopter is a small training team, a bootcamp, a university department or a company that already runs its own servers and does not want course content sitting in a vendor account.

The project is written primarily in Python (the API runs on FastAPI) with a Next.js and React frontend, and it ships a CLI published to npm as learnhouse. The presence of a CLI that handles setup, updates and backups suggests the maintainers expect operators rather than developers to install it. That is a meaningful signal: many open source LMS projects assume you will read Docker Compose files and wire services yourself.

It is not aimed at a single instructor who wants a hosted page in five minutes. The self-host path asks for a domain, a database and an admin account before anything works.

Architecture: separate API, web and collaboration servers

The repository layout confirms a multi-service design. apps/web holds the Next.js frontend, and the Dockerfile builds it in four stages: dependency install with bun install --frozen-lockfile, a build stage that removes .env files before compiling, a production runner that copies .next/standalone output, and a separate collab server build. The collab stage exists because real-time features (boards, collaborative editing) need a persistent sync server rather than request-response HTTP.

The stack list points to PostgreSQL for storage and Redis for the parts that need fast shared state. Yjs and Tiptap appear in the stack, which is consistent with the block editor and the collaborative whiteboards: Yjs is a CRDT library, so concurrent edits merge on the client and sync through the collab server. S3 is listed for object storage, Tinybird for analytics, and Stripe for the Enterprise payments feature. Gemini and LlamaIndex are listed for the AI features.

That is a lot of moving parts for one deployment. Each external dependency is a thing that can fail or need credentials. The CLI exists precisely because asking an operator to assemble PostgreSQL, Redis, an API, a web server and a collab server by hand would be unreasonable.

Installing LearnHouse with the CLI

The README gives a single command for self-hosting. It runs the published CLI without a global install, and the setup wizard then asks about domain, database, admin account and optional features.

bash
npx learnhouse@latest setup

After the wizard finishes, the README says it generates the config files and starts the instance. Day-to-day operation goes through the same CLI. These commands start and stop services, pull updates, stream logs, back up the database and run diagnostics.

bash
npx learnhouse start
npx learnhouse stop
npx learnhouse update
npx learnhouse logs
npx learnhouse backup
npx learnhouse doctor

For local development the README documents a different path: clone the repository, change into it, and run the dev command. According to the README, this spins up PostgreSQL and Redis, installs dependencies, and starts the API, web and collab servers with hot reload.

bash
git clone https://github.com/learnhouse/learnhouse.git
cd learnhouse
npx learnhouse dev

The README points to apps/cli/README.md for the full command list. If you are evaluating rather than deploying, that file is the one to read before running setup, because the wizard makes choices about your database and admin account that are easier to get right the first time.

Where LearnHouse gets awkward: breadth, dependencies and the Enterprise line

The feature list is the strongest argument for LearnHouse and also the thing to be sceptical about. Code execution with auto-grading in 30+ languages, AI-generated interactive elements, collaborative whiteboards, podcasts and certificates are each substantial subsystems. A project that ships all of them will have some of them less exercised than others. The README does not say which features are stable and which are newer, and it does not document rollback for a failed update, even though npx learnhouse update exists.

The larger practical issue is the Enterprise boundary. Payments, SSO and multi-org are marked Enterprise in the README. If your reason for choosing LearnHouse is selling courses without platform fees, or running several organizations from one instance, verify the licensing and pricing of those features before you build a plan around them. The README does not state what Enterprise costs or how it is obtained.

The external dependency list is the third constraint. S3 for storage, Tinybird for analytics, Stripe for payments, Gemini and LlamaIndex for AI: an air-gapped deployment or an organization with strict vendor rules will find several of these unacceptable or unavailable. The CLI reduces setup pain but does not remove the dependencies.

This is the wrong tool if you want a single static site of course pages. It is also wrong if you need a mobile app; the README describes a web frontend, and the related searches about a mobile app belong to a different project.

How LearnHouse differs from Moodle and ClassroomIO

The obvious comparison is Moodle. Moodle is a long-established LMS with a large plugin ecosystem and a PHP codebase, and it is typically deployed by institutions with existing IT policy around PHP and MySQL or PostgreSQL. LearnHouse takes the opposite approach: a modern JavaScript frontend with a Python API, a Notion-style block editor rather than the traditional Moodle activity and resource model, and AI features built in rather than added through plugins. The trade is ecosystem depth for a more coherent editing and authoring experience. If your institution already has Moodle plugins in production, LearnHouse is not a drop-in replacement.

ClassroomIO is the closer comparison, and it appears in the related searches. Both are open source learning platforms with a modern stack and both are aimed at people who want to self-host. The difference visible in the README is scope: LearnHouse ships code execution with auto-grading, collaborative boards, podcasts and an AI layer as first-class features, and gates payments, SSO and multi-org behind Enterprise. If you only need courses, lessons and a student roster, the extra subsystems in LearnHouse are weight you carry without using.

Frappe LMS is another project that surfaces in searches around LearnHouse, but the README gives no basis for comparing the two beyond noting that both are open source learning management systems.

Licence and the cost of staying current

LearnHouse is licensed AGPL-3.0. The practical consequence, stated plainly and not as legal advice, is that the network-use clause applies: if you modify LearnHouse and let users interact with it over a network, the AGPL expects you to offer those users the corresponding source. For an internal training portal running unmodified code, this is usually a non-issue. For a company that wants to fork the editor or the AI layer and keep the changes private while serving customers, the licence is a real constraint that should be reviewed by someone qualified to interpret it.

Upgrade cost is partly handled by tooling. npx learnhouse update and npx learnhouse backup exist, and the release cadence visible in the repository is frequent: 1.3.4 in July 2026, 1.3.5 in August, 1.3.6 in September. Frequent releases mean frequent upgrade decisions. The README does not document a rollback command or a downgrade path, so the backup command is the safety net you actually have. Running npx learnhouse backup before npx learnhouse update is the sequence the available commands support.

Maintenance status: the repository is not archived, and the last push was on 2026-09-13, three days before this writing.

Editorial conclusion

Adopt LearnHouse if you want a self-hosted platform where courses, code exercises, discussions and certificates live in one instance, and you are comfortable running PostgreSQL, Redis and a Node-based web app. Do not adopt it if you need a mature plugin ecosystem, a mobile app, or per-seat support contracts; none of those appear in the README or the repository layout. Before committing, run npx learnhouse doctor on the target host, confirm the Enterprise features you actually need (payments, SSO, multi-org) are not gated, and read the AGPL-3.0 licence text against how you plan to expose the modified source.

Frequently asked questions

How do I install LearnHouse on my own server?

The README documents a single self-host command, npx learnhouse@latest setup, which runs a wizard covering domain, database, admin account and optional features, then generates config files and starts the instance. Day-to-day control goes through the same CLI with start, stop, update, logs, backup and doctor subcommands.

Can I try LearnHouse without installing it?

The README links to learnhouse.app and the repository includes a DEMO_STACK.md file at the top level, but the README does not describe a hosted demo instance or what that file contains. The development path in the README runs the full stack locally instead.

What licence does LearnHouse use, and does it affect commercial use?

LearnHouse is licensed AGPL-3.0. Running it unmodified for internal training is the straightforward case; modifying it and exposing it to users over a network triggers the AGPL's source-offer obligation, so a commercial fork should be reviewed by someone qualified to interpret the licence.

Official sources

  1. learnhouse/learnhouse on GitHub
  2. License: AGPL-3.0
  3. Project website
  4. README
  5. Releases
Community notes

Community notes