Quickstart
This is the shortest path to a usable local Liferay environment.
Choose the path that matches your project:
ldev-native:ldevmanages the local Docker runtime directlyLiferay Workspace:ldevruns on top of a standard Blade workspace
1. Install
npm install -g @mordonezdev/ldev
ldev --helpRequirements:
- Node.js 20+
- Docker and
docker compose - Git
2. Initialize a project
Option A: ldev-native
Create a fresh ldev project:
ldev project init --name my-project --dir ~/projects/my-project
cd ~/projects/my-projectIf you are already inside a repo that uses the ldev runtime layout, initialize the local environment files:
ldev env initOption B: existing Liferay Workspace
If your team uses the standard Blade workspace model, you can keep it and still use ldev:
npm install -g @mordonezdev/ldev
blade init ai-workspace
cd ai-workspace
ldev doctorFor an existing workspace, run ldev from the workspace root. ldev detects Blade workspaces and can still provide doctor, portal, resource, and AI bootstrap workflows on top of them.
3. Prepare local config
ldev setup
ldev doctorRun doctor before the first start so you catch missing Docker, port conflicts, bad paths, or activation-key problems early.
4. Start the environment
ldev start --activation-key-file /path/to/activation-key.xmlIf the activation key is already exported in your shell, this is enough:
ldev start5. Check health
ldev status
ldev doctorIf the portal is up and you want API-based discovery, install OAuth once:
ldev oauth install --write-env
ldev portal checkldev uses OAuth2 for portal discovery, resource operations, and other API-backed commands. --write-env writes the local credentials into .liferay-cli.local.yml.
See OAuth for the model and Configuration for precedence.
6. Prepare the repo for agents
If you want coding agents to work through ldev, bootstrap the managed AI assets:
ldev ai install --target .Optional overlays:
ldev ai install --target . --project-context
ldev ai install --target . --project --project-context7. Start discovering the portal
ldev portal inventory sites
ldev portal inventory pages --site /global
ldev portal inventory page --url /home --jsonNext: