# Stop the dashboard container
docker compose stop dashboard
# Run the dashboard locally with hot reload
cd packages/dashboard
npm run dev
# Dashboard available at http://localhost:4000# Rebuild and restart the API service
docker compose build api
docker compose up -d apiwpl updateThis pulls the latest code, rebuilds API/dashboard/provisioner, and restarts services.
SHARED_DB_ROOT_PASSWORD must be set in .env. wpl update adds it automatically; with a manual git pull, add it yourself first or Compose will refuse to start.git pull
docker compose build api dashboard provisioner
docker compose up -d
# If WordPress base image changed:
bash scripts/build-wp-image.sh
# If product configs changed:
bash scripts/build-wp-image.sh --product your-productThe admin dashboard (Agency Mode) includes these tabs:
| Tab | Purpose |
|---|---|
| Overview | Stats, recent sites, activity log |
| Analytics | Usage trends, product popularity, user activity |
| Bulk Launch | Create up to 50 sites at once with custom prefix |
| Products | CRUD for product templates |
| Users | Role management, promote/demote |
| Sites | View and manage all sites across all users |
| Logs | Audit log of all actions |
| Features | Toggle modules (cloning, snapshots, custom domains, PHP config, webhooks, health monitoring, etc.) |
| Branding | Customize logo, site title, card layout, color palettes |
| System | Version info, runtime stats, uptime, memory usage |
# View all service logs
docker compose logs -f
# View specific service logs
docker compose logs -f api
wpl logs api
# List running demo containers
docker ps --filter "label=wpl.site"
# Check disk usage
docker system df
# Check memory usage
free -h# Back up the data directory (contains SQLite DB and config)
cp -r ./data ./data-backup-$(date +%Y%m%d)data/ directory for the management database, product configs, and persistent site data.