Skip to main content

Lightweight, git-native multi-agent orchestration framework for autonomous project execution

Project description

lindy-orchestrator

Lightweight, git-native multi-agent orchestration for repository work.

Overview

lindy-orchestrator coordinates planning, execution, and validation around your existing code agents instead of trying to replace them. The current architecture is organized around a Planner, Generator, and Evaluator split:

Planner -> TaskSpec[] -> Generator -> GeneratorOutput -> Evaluator -> pass/fail + feedback

The orchestrator owns dependency ordering, worktree isolation, retries, QA gates, checkpointing, and reporting. Agents work against the repo; the orchestrator handles the harness.

Install

pip install lindy-orchestrator
pip install -e ".[dev]"

Requirements:

  • Python 3.11+
  • claude or codex in PATH

Quick Start

lindy-orchestrate onboard
lindy-orchestrate plan "Add JWT auth"
lindy-orchestrate run "Add JWT auth"
lindy-orchestrate resume

Pipeline

The intended flow is:

  1. Planner reads project context and module status files.
  2. Planner emits TaskSpec items with generator and evaluator instructions.
  3. Generator executes a task in an isolated worktree and returns output plus diff context.
  4. Evaluator runs QA gates and semantic review, then either passes the task or returns retry feedback.
  5. Orchestrator advances the task DAG until all reachable tasks are complete.

Key runtime pieces:

  • planner_runner.py
  • orchestrator.py
  • providers/claude_cli.py
  • providers/codex_cli.py
  • qa/

Configuration

Project configuration lives in .orchestrator/config.yaml.

Example:

project:
  name: "my-project"
  branch_prefix: "af"

modules:
  - name: backend
    path: backend/
  - name: frontend
    path: frontend/

planner:
  provider: claude_cli
  timeout_seconds: 120
  prompt: |
    You are the planner for {project_name}.

generator:
  provider: claude_cli
  timeout_seconds: 1800
  stall_timeout: 600
  permission_mode: bypassPermissions
  prompt_prefix: |
    You are a code generation agent.

evaluator:
  provider: claude_cli
  timeout_seconds: 300
  pass_threshold: 80
  prompt_prefix: |
    You are a code evaluation agent.

qa_gates:
  ci_check:
    enabled: true
  structural_check:
    max_file_lines: 500
    sensitive_patterns: ["*.env", "*.key"]
  custom:
    - name: lint
      command: "ruff check {changed_files}"
      diff_only: true

safety:
  max_retries_per_task: 2
  max_parallel: 3
  dry_run: false

lifecycle_hooks:
  after_create: ""
  before_run: ""
  after_run: ""
  before_remove: ""

logging:
  dir: .orchestrator/logs
  session_dir: .orchestrator/sessions

Required concepts:

  • project
  • modules
  • planner/generator/evaluator role configuration
  • qa_gates
  • safety
  • logging

CLI

Primary commands:

  • run: plan and execute a goal
  • plan: generate a task plan only
  • resume: continue a saved session
  • status: module overview plus recent logs
  • logs: alias for status --logs-only
  • validate: validate config and module paths
  • gc: clean stale branches, sessions, and logs
  • scan: run entropy checks
  • onboard: generate .orchestrator/ project scaffolding
  • config: manage provider defaults
  • stats: inspect execution metrics
  • clear: remove generated orchestration files
  • version: print version information

Examples:

lindy-orchestrate run "Implement API auth" --provider codex_cli
lindy-orchestrate plan --file goal.md
lindy-orchestrate status --json
lindy-orchestrate validate
lindy-orchestrate gc --apply

QA Gates

Built-in gates:

  • ci_check
  • command_check
  • agent_check
  • structural_check

Custom QA commands can be added under qa_gates.custom.

Session Files

The orchestrator writes state under .orchestrator/, including:

  • config.yaml
  • status/
  • logs/
  • sessions/
  • plans/
  • reports/
  • claude/ and codex/ instruction files

Development

Common commands:

uv sync --extra dev --frozen
uv run ruff check src/ tests/
uv run ruff format --check src/ tests/
uv run python -m pytest tests/ -x -q --tb=short
uv run python -c "import lindy_orchestrator"

License

MIT

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

lindy_orchestrator-0.15.0.tar.gz (393.8 kB view details)

Uploaded Source

Built Distribution

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

lindy_orchestrator-0.15.0-py3-none-any.whl (159.3 kB view details)

Uploaded Python 3

File details

Details for the file lindy_orchestrator-0.15.0.tar.gz.

File metadata

  • Download URL: lindy_orchestrator-0.15.0.tar.gz
  • Upload date:
  • Size: 393.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for lindy_orchestrator-0.15.0.tar.gz
Algorithm Hash digest
SHA256 6f2884df50e87201de05e2a6b8ba2a3ba0f725f69416e99e1d47b5de12a46018
MD5 bdbd0fa541d3c83c88667564e8715958
BLAKE2b-256 2c14c33779700a3538592d2f98f5d9dcb87be2ca412877fa53af9e2890651338

See more details on using hashes here.

File details

Details for the file lindy_orchestrator-0.15.0-py3-none-any.whl.

File metadata

File hashes

Hashes for lindy_orchestrator-0.15.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b1fbc51ddc05709e5df34e1978fc2d0d3d8826c267891ff32baa823ceb7ef965
MD5 fad8f297dcf52c1100e0fa44d21b56a2
BLAKE2b-256 a7d7fec39b2a173d13fa65546e752620bba44b51c5aab6a7fdc0503d16f9caf5

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