Skip to Content
Edit on GitHub

Dev Mode

The dev command starts a full local development environment with hot reload for all services.

npx learnhouse dev

How It Works

The command splits infrastructure and application services:

  • Infrastructure (Docker): PostgreSQL with pgvector + Redis run in containers via .learnhouse/docker-compose.dev.yml
  • Application (local): API, Web, and Collab servers run directly on your machine with hot reload

Requirements

  • Docker (for database and Redis)
  • bun  (for web and collab dependencies)
  • uv  (for Python API dependencies)

bun and uv must be installed beforehand. The CLI runs bun install and uv sync to install project dependencies, but it does not install the package managers themselves.

Startup Flow

  1. Detect project root — Looks for the monorepo structure (apps/api, apps/web, apps/collab)
  2. Start infrastructure — Launches PostgreSQL and Redis containers (reuses existing ones if running)
  3. Health checks — Waits for database and Redis to be ready
  4. Admin setup — When the database and Redis containers are created for the first time, prompts for an admin email and password. On subsequent runs with existing containers, the prompt is skipped and the existing credentials remain valid. You can also pass --admin-email and --admin-password to skip the prompt.
  5. Install dependencies — Runs bun install and uv sync if needed
  6. Start services — Launches API, Web, and Collab with color-coded output

Services

ServiceCommandPort
APIuv run python app.py1338
Webnext dev --turbopack3000
Collabtsx watch src/index.ts4000

Interactive Controls

While running, you can type commands to manage services:

KeyAction
raRestart API
rwRestart Web
rcRestart Collab
rbRestart all services
qQuit (graceful shutdown)

Enterprise Edition

Use the --ee flag to enable Enterprise Edition features:

npx learnhouse dev --ee

Without the flag, the apps/api/ee/ directory is temporarily hidden during development.

Shutdown

When you quit (q or Ctrl+C):

  • Local services (API, Web, Collab) are stopped
  • Docker containers (PostgreSQL, Redis) keep running for the next session
  • To fully stop infrastructure:
docker compose -f .learnhouse/docker-compose.dev.yml -p learnhouse-dev down

Database data persists across dev sessions via Docker volumes. Your data is safe between restarts.