Skip to main content

Whole-repository Quality-Diversity optimization for real git codebases.

Project description

Loreley

Whole-repository Quality‑Diversity optimization for real git codebases.

Loreley is a distributed system that evolves entire git repositories (the unit of search is a git commit). It continuously samples base commits, asks external planning/coding agents to implement repo-wide changes, evaluates the result with your evaluator, and stores metrics plus a MAP‑Elites archive in Postgres for later sampling and reuse.

Why use it

  • Whole-repo evolution: cross-module refactors and “production-style” changes are first-class.
  • QD-native (MAP-Elites): keeps multiple high-performing but different solutions instead of a single champion line.
  • Learned behaviour space: behaviour descriptors come from repo-state code embeddings (cached by git blob SHA), not hand-crafted heuristics.
  • Production loop: scheduler + Redis/Dramatiq workers + Postgres, with preflight checks, logs, and reproducible git history.

Quick start (local)

Requirements: Python 3.11+, uv, Git (worktrees), PostgreSQL, Redis, and an OpenAI-compatible API for embeddings and some summaries (OPENAI_API_KEY). You also need:

  • Planning/coding backend: default is the kilocode CLI on PATH (override via WORKER_PLANNING_BACKEND / WORKER_CODING_BACKEND).
  • Evaluator plugin: WORKER_EVALUATOR_PLUGIN=module:callable that runs unattended and returns structured metrics.
git clone <YOUR_FORK_OR_ORIGIN_URL> loreley
cd loreley
uv sync
docker compose up -d postgres redis

cp env.example .env
# Minimal required vars (in addition to defaults in env.example):
# - EXPERIMENT_ID=<uuid or slug>
# - SCHEDULER_MAX_TOTAL_JOBS=<positive integer>
# - OPENAI_API_KEY
# - MAPELITES_EXPERIMENT_ROOT_COMMIT=<git commit hash>
# - WORKER_REPO_REMOTE_URL=<git remote URL with push access>
# - WORKER_EVALUATOR_PLUGIN=module:callable
#
# Recommended:
# - SCHEDULER_REPO_ROOT=/abs/path/to/your/target-git-checkout
# - WORKER_EVOLUTION_GLOBAL_GOAL="..."
#
# Optional:
# - WORKER_EVALUATOR_PYTHON_PATHS=["/abs/path/to/plugin_dir"]
# - SCHEDULER_STARTUP_APPROVE=true  # skip interactive startup approval

uv run loreley doctor --role all
uv run loreley scheduler
uv run loreley worker
uv run loreley status

Optional UI (read-only)

uv sync --extra ui
uv run loreley ui

Documentation

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

loreley-0.7.6a0.tar.gz (2.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

loreley-0.7.6a0-py3-none-any.whl (219.8 kB view details)

Uploaded Python 3

File details

Details for the file loreley-0.7.6a0.tar.gz.

File metadata

  • Download URL: loreley-0.7.6a0.tar.gz
  • Upload date:
  • Size: 2.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for loreley-0.7.6a0.tar.gz
Algorithm Hash digest
SHA256 fb0d0cd31a87c1646507c5a4a957591a404a95d8c3076a7ef3a55ce070227ec8
MD5 10377493d23eb056a9bfc9a7906563af
BLAKE2b-256 67afb17ecd3d44f57f5ceac9d4538cb106a77c02135fc6deb099ce9945cfebbe

See more details on using hashes here.

File details

Details for the file loreley-0.7.6a0-py3-none-any.whl.

File metadata

  • Download URL: loreley-0.7.6a0-py3-none-any.whl
  • Upload date:
  • Size: 219.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for loreley-0.7.6a0-py3-none-any.whl
Algorithm Hash digest
SHA256 7b0ed62519926f71af4ba47f6ed9d4a7fd6c609b01f5fa1bb02c34ab954bd254
MD5 4d7201f3d539583401d87586249b67e7
BLAKE2b-256 3538eb5a69762b2e880c8f022b1642487275d81a516561b05527b4050af96f4a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page