Prerequisites
Clone the repository
Configure the backend
backend/.env. The .env.example file in the repository contains all available options with inline comments. At minimum, set:
DATABASE_URL— PostgreSQL connection string pointing to your local instanceREDIS_URL— Redis connection stringSESSION_SECRET— any random string for local developmentAUTH_PROVIDER— set tolocalfor local developmentADMIN_EMAIL/ADMIN_PASSWORD— credentials for the auto-seeded admin account
The frontend proxies
/api and /auth to http://localhost:3001 automatically in development — you do not need to set VITE_API_URL.Authentication in local development
Local auth (default)
SetAUTH_PROVIDER=local in backend/.env. Pwnbook seeds a default admin account on first startup:
You can override these by setting
ADMIN_EMAIL and ADMIN_PASSWORD in your .env.
WorkOS auth
SetAUTH_PROVIDER=workos and supply your WorkOS credentials:
Start everything
Option A: Using the dev script (recommended)
Thedev.sh script starts all services in one step with colored, labeled output:
- Start PostgreSQL and Redis via Docker Compose
- Launch the backend on port
3001(with hot reload) - Launch the frontend on port
8080(with Vite HMR) - Print combined logs with color-coded prefixes
- Clean up all processes on Ctrl+C
Option B: Manual startup
Start infrastructure first:Database management
Migrations
After pulling changes that include new migrations:Export and import
Useful for moving data between machines or creating snapshots:Running the workers (optional)
The recon and AI workers are optional for most development tasks. Enable them if you are working on recon automation, AI chat, or background job processing. Each worker directory contains a.env.example with the required variables. Install dependencies with pip install -r requirements.txt and refer to the worker’s README for startup instructions.
Alternatively, start both workers alongside infrastructure with Docker Compose: