Build from Source

December 3, 2025 · View on GitHub

This guide is for anyone who wants to run MagenticLite from a clone of this repo — for example to make local changes to the backend or frontend, to test an unreleased commit, or to dig into the code.

If you only want to run MagenticLite, the released magentic_ui package on PyPI is what you want — see Installation instead.

Prerequisites

Platform-level prerequisites (Homebrew / WSL2 / KVM / uv / Python 3.12) are the same as a regular install — follow the Installation guide through the macOS or Windows (WSL) prerequisites section, then come back here.

In addition, building the frontend requires:

  • Node.js v24 or later
  • pnpm v10+
# Install Node via nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
nvm install 24

# Install pnpm
npm install -g pnpm

Clone the repo

git clone https://github.com/microsoft/magentic-ui.git
cd magentic-ui

Backend setup

uv venv --python=3.12 --seed .venv
source .venv/bin/activate
uv sync --all-extras

uv sync installs MagenticLite in editable mode along with all dev dependencies. The Quicksand VM image is downloaded automatically the first time you launch magentic-ui; you don't need to run a separate install step for it.

Frontend setup

The frontend is a Vite + React app under frontend/. Production builds are written into src/magentic_ui/backend/web/ui/, where the backend serves them as static files.

cd frontend
pnpm install

You then have two ways to run the UI, depending on what you're working on.

Option 1: Production-style run

Build the frontend once into the backend's static directory, then launch the backend and let it serve the bundle. Use this when you're working only on backend code.

# from frontend/
pnpm build      # outputs to ../src/magentic_ui/backend/web/ui/
cd ..

magentic-ui --port 8081

Open http://127.0.0.1:8081/. Re-run pnpm build whenever the frontend changes.

Option 2: Frontend dev mode

Run the Vite dev server with hot reload, and run the backend separately. Use this when you're iterating on the UI.

# Terminal 1 — backend
source .venv/bin/activate
magentic-ui --port 8081

# Terminal 2 — frontend dev server
cd frontend
pnpm dev        # serves at http://localhost:5173

Open http://localhost:5173/. The Vite dev server proxies API and WebSocket calls to the backend on port 8081.

For UI component conventions, see frontend/src/components/ui/README.md.