Skip to main content

A DOT-based pipeline runner for AI workflows

Project description

Attractor

CI GitHub commits since latest release

A DOT-based pipeline runner that uses directed graphs (defined in Graphviz DOT syntax) to orchestrate multi-stage AI workflows.

Overview

Attractor lets you define multi-stage AI workflows as directed graphs using Graphviz DOT syntax. The graph is the workflow: nodes are tasks, edges are transitions, and attributes configure behavior.

Based on the Attractor Specification.

Features

  • Declarative pipelines defined in DOT syntax
  • Pluggable handlers for different node types (LLM calls, conditionals, human gates)
  • Checkpoint and resume for crash recovery
  • Goal gates to enforce critical stages
  • Edge-based routing with conditions and priorities
  • Retry logic with exponential backoff
  • Comprehensive validation and linting

Installation

pip install -e .

Quick Start

Create a simple pipeline in example.dot:

digraph Simple {
    graph [goal="Run tests and report"]
    
    start [shape=Mdiamond, label="Start"]
    exit  [shape=Msquare, label="Exit"]
    
    run_tests [label="Run Tests", prompt="Run the test suite"]
    report    [label="Report", prompt="Summarize results for $goal"]
    
    start -> run_tests -> report -> exit
}

Run the pipeline:

# Validate the pipeline
python -m attractor.cli example.dot --validate-only

# Execute the pipeline  
python -m attractor.cli example.dot

Or use the Python API:

from attractor import parse_dot, run_pipeline

graph = parse_dot("example.dot")
outcome = run_pipeline(graph)
print(f"Pipeline completed with status: {outcome.status.value}")

Documentation

Testing

# Run all tests
pytest tests/

# Run with verbose output
pytest tests/ -v

Currently 47 tests passing, including:

  • DOT parser tests
  • Validation and linting tests
  • Execution engine tests
  • Condition evaluation tests
  • Handler tests (tool, human-in-the-loop, parallel)
  • Stylesheet parsing and matching tests
  • Integration tests matching the spec's smoke test

Examples

See the examples/ directory for complete working pipelines:

  • simple.dot - Basic linear workflow
  • branching.dot - Conditional branching with goal gates

Implementation Status

Core features implemented:

  • ✅ DOT parser for the supported subset
  • ✅ Validation with 7 built-in lint rules
  • ✅ Execution engine with retry logic and checkpointing
  • ✅ Edge selection with 5-step priority algorithm
  • ✅ Condition evaluation (=, !=, && operators)
  • ✅ Basic handlers (start, exit, codergen, conditional)
  • ✅ Tool handler (parallelogram nodes) - shell command execution
  • ✅ Human-in-the-loop handler (hexagon nodes) - interactive gates
  • ✅ Parallel execution handler (component nodes) - concurrent branches
  • ✅ Fan-in handler (tripleoctagon nodes) - result consolidation
  • ✅ Model stylesheet parser - CSS-like LLM configuration
  • ✅ CLI interface
  • ✅ Variable expansion ($goal)

Not yet implemented:

  • ⏳ Manager loop handler (house nodes) - supervisor pattern
  • ⏳ HTTP server mode
  • ⏳ Observability events
  • ⏳ Full parallel subgraph execution (current implementation is simplified)

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

py_attractor-0.3.0.tar.gz (27.8 kB view details)

Uploaded Source

Built Distribution

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

py_attractor-0.3.0-py3-none-any.whl (22.6 kB view details)

Uploaded Python 3

File details

Details for the file py_attractor-0.3.0.tar.gz.

File metadata

  • Download URL: py_attractor-0.3.0.tar.gz
  • Upload date:
  • Size: 27.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for py_attractor-0.3.0.tar.gz
Algorithm Hash digest
SHA256 de57e4390a673cd2a249e928e33a580c4b72ecba9d35df364d8e1471ae033146
MD5 a92fe49cb750e1b5b9caa275e30ca8e2
BLAKE2b-256 163b297b8cffdb46f338b35a0ded2dc757adccb58965bf51a1a2d9971e11001c

See more details on using hashes here.

Provenance

The following attestation bundles were made for py_attractor-0.3.0.tar.gz:

Publisher: publish.yml on anishkny/attractor

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file py_attractor-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: py_attractor-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 22.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for py_attractor-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7f6b59127d63ef22b759ab8d20fbdd3a9fc4848fc258ca44722f89af89f6b985
MD5 07d283f3a9f97d309bd03441b30000ac
BLAKE2b-256 e29eb5bd2305e90c14513ac22f52cbb6fae7184d91ad6f7f58f489d1069a24bd

See more details on using hashes here.

Provenance

The following attestation bundles were made for py_attractor-0.3.0-py3-none-any.whl:

Publisher: publish.yml on anishkny/attractor

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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