Skip to main content
In self-hosted mode the web app runs entirely in the browser. Resume data is persisted in IndexedDB under the database name MagicResumeDB. There is no auth, no backend (gateway / platform-api / agent-service), and no product analytics delivery. AI is off entirely — AI Lab and AI PDF import are proxied to the backend and need a signed-in user, so they don’t work here. This is the recommended mode for hacking on the codebase.

Prerequisites

  • Node.js 20+
  • pnpm 10.28.1 (the version in packageManager). Other versions work but lockfile drift is on you.
1

Clone the repository

2

Install dependencies

Run this from the repo root — pnpm needs to see pnpm-workspace.yaml to resolve workspace:* deps.
3

Configure environment variables

The minimum for self-hosted is:
If NEXT_PUBLIC_APP_MODE is unset and NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY is also unset, the app auto-detects self-hosted. Setting it explicitly is just clearer.
4

Start the dev server

Turbo spins up every workspace that has a dev script; the web app listens on http://localhost:3000. (These docs are a separate Mintlify site — preview them with npx mint dev.)To run only the web app:

What works without a backend

There is no AI in pure self-hosted mode — every AI feature is proxied to the backend and requires a signed-in user. Run the full backend and switch to cloud mode to enable it; there you can bring your own API key (stored only in the browser) instead of platform credits.

Environment reference

See Cloud Mode for the full cloud-mode env list.