Skip to main content
Before you begin, ensure you have completed the system requirements setup.
1

Clone the repository

Open your terminal and navigate to your desired project directory:
Clone the GenAI Launchpad repository:
2

Configure environment variables

Navigate to the project directory:
Copy the example environment files:
These files serve different runtimes:
docker/.env is much larger mostly because self-hosted Supabase needs many settings, even though Supabase services are excluded by default.
3

Start Docker containers

Navigate to the Docker directory and start the containers:
This command will:
  • Build all Docker containers
  • Start all services via Docker Compose
Verify the containers are running:
4

Set up Python environment

Return to the project root and sync the environment:
uv sync creates and manages the .venv, installs the pinned Python version if needed, and installs the Launchpad package in editable mode.
5

Run database migrations

Navigate to the package directory where alembic.ini and the migration scripts live:
Create a new migration (you’ll be prompted for a description):
When prompted, enter a descriptive message like “init db” for your first migration.
Apply the migration:
6

Optional: enable Supabase services

Supabase Studio, Auth, Realtime, Storage, and the Supabase gateway are excluded by default. To enable them, uncomment docker-compose.supabase.yml in docker/docker-compose.yml, then restart the Docker stack.If you run Python locally against the Docker database, update the root .env database user from postgres to postgres.<POOLER_TENANT_ID>, for example postgres.launchpad with the default docker/.env settings. Supavisor requires the tenant-qualified username.When enabled, Studio is available at http://localhost:8000 with the dashboard credentials from docker/.env.

Exercise workflows from the playground

The playground/ directory contains one script per reference workflow. Each script loads a matching JSON fixture from the workflow’s request_examples/ folder, runs the workflow in-process, and prints the final TaskContext. They are the fastest way to iterate on a workflow without running the full API + Celery stack. Run any of them with uv: