This gets a full local MAEL stack running: PostgreSQL (pgvector), Redis, Vault (dev mode), and the API. For production deployment, see Deployment instead.
1

Prerequisites

  • Python 3.12+
  • uv — the package manager MAEL’s lockfile (uv.lock) is built against
  • Docker + Docker Compose, for local infrastructure only
2

Configure environment

At minimum, replace these CHANGE_ME values in .env:
Generate strong random values with openssl rand -hex 32.
3

Start infrastructure

Brings up PostgreSQL (pgvector/pgvector:pg16 — never plain postgres, the RLS roles come from docker/init/postgres-init.sql), Redis 7.2, Vault 1.16 in dev mode, and PgBouncer.
4

Run migrations

Applies every Alembic migration in order, up to the current head. Migrations are raw SQL under database/migrations/versions/ — never edit an already-applied one; every change is a new revision.
5

Seed the platform registry

Idempotent — safe to re-run. Seeds AI model registry rows, tools, feature flags, every agent manifest (discovered from agents/*/*/agent.py), workflow definitions, and the prompt registry in one pass.
6

Bootstrap your first admin

No user exists yet on a fresh install, and the normal user-creation endpoint requires an authenticated caller — so there’s a one-time, out-of-band script that breaks the deadlock:
Idempotent: if a super_admin already exists, it exits cleanly without making changes. Use POST /api/v1/users for every user after this one.
7

Start the API

Or just the API process (infra already running):
Confirm it’s alive:
8

Log in and make your first call

Use the returned access_token as a bearer token against any endpoint in the API Reference.

What’s next

Run your first agent

Walk through triggering keyword-research end to end.

Understand the architecture

How the pieces you just started fit together.

Onboard a tenant

Provision a client tenant + domain with onboard_client.py.

Deploy for real

Docker Compose on a VPS, or Kubernetes at scale.