Skip to main content
Get the Openlane UI monorepo running on your local machine in just a few steps. This guide will have you developing in under 10 minutes.

Prerequisites

Node.js 24.14.x

Required runtime version

Bun 1.2.16

Fast JavaScript runtime and package manager

Task

Task runner for automation

Git

Version control

Installation

1

Clone the repository

git clone https://github.com/theopenlane/openlane-ui.git
cd openlane-ui
2

Run automated setup

For macOS users, use the Task automation:
task local-setup
This will:
  • Install Bun
  • Install dependencies
  • Set up pre-commit hooks
If you’re on Linux or Windows, install dependencies manually:
  1. Install Bun:
    curl -fsSL https://bun.sh/install | bash
    
  2. Install dependencies:
    bun install
    
  3. Set up pre-commit hooks:
    pip install pre-commit
    pre-commit install
    
3

Configure environment

Copy the example environment file to the console app:
cp ./config/.env.example ./apps/console/.env
Turbo v2 requires the .env file to live in the app directory, not the root.
Edit ./apps/console/.env and configure at minimum:
# Backend API
NEXT_PUBLIC_OPENLANE_URL=http://localhost:17608

# Allow all domains for local development (or specify your test domain)
NEXT_PUBLIC_ALLOWED_LOGIN_DOMAINS=

# OAuth Providers (optional for local dev)
AUTH_GITHUB_ID=your_github_client_id
AUTH_GITHUB_SECRET=your_github_client_secret
AUTH_GOOGLE_ID=your_google_client_id
AUTH_GOOGLE_SECRET=your_google_client_secret
GitHub OAuth:
  1. Go to GitHub Developer Settings
  2. Create a new OAuth App
  3. Set callback URL to http://localhost:3001/api/auth/callback/github
Google OAuth:
  1. Go to Google Cloud Console
  2. Create OAuth 2.0 credentials
  3. Set authorized redirect URI to http://localhost:3001/api/auth/callback/google
4

Start the backend API

The console requires the Openlane Core backend. Follow the setup instructions in the core repository:
# In a separate terminal
git clone https://github.com/theopenlane/core.git
cd core
task docker:all:up
The API will be available at http://localhost:17608.
5

Start development servers

Back in the openlane-ui directory, start all applications:
task dev
Or run individual apps:
task dev:console
6

Access the applications

Successfully running? Continue to the Console Overview to learn about the application’s features.

Available Commands

task dev              # Run all apps
task dev:console      # Console only
task dev:storybook    # Storybook only

Project Structure

openlane-ui/
├── apps/
│   ├── console/         # Main SaaS application (Next.js)
│   └── storybook/       # Component documentation (Storybook)
├── packages/
│   ├── codegen/         # GraphQL code generation
│   ├── ui/              # Shared UI component library
│   ├── dally/           # Data access layer utilities
│   ├── eslint-config/   # Shared ESLint config
│   ├── config-typescript/ # Shared TypeScript config
│   └── tailwind-config/ # Shared Tailwind config
├── config/
│   └── .env.example     # Environment variable template
├── Taskfile.yaml        # Task automation
├── turbo.json           # Turborepo configuration
└── package.json         # Workspace configuration

Troubleshooting

Make sure NEXT_PUBLIC_ALLOWED_LOGIN_DOMAINS is either empty (to allow all domains) or contains your test user’s email domain.
# Allow all domains
NEXT_PUBLIC_ALLOWED_LOGIN_DOMAINS=

# Or specify domains
NEXT_PUBLIC_ALLOWED_LOGIN_DOMAINS=example.com,test.com
Try a clean reinstall:
task clean
rm -rf node_modules bun.lock
bun install
If ports 3001 or 6006 are in use, you can change them in the app’s package.json:
// apps/console/package.json
"scripts": {
  "dev": "next dev -p 3002"  // Use different port
}
Verify the backend API is running:
curl http://localhost:17608/query
Check that NEXT_PUBLIC_OPENLANE_URL in your .env matches the backend URL.

Next Steps

Console Features

Learn about the compliance management features

Component Library

Explore the UI component library

Architecture

Understand the monorepo structure

Contributing

Contribute to the project

Build docs developers (and LLMs) love