Skip to main content

matrx-graph

Channel-based, super-step workflow orchestration engine for the Matrx ecosystem. Think of it as a typed DAG + Pregel scheduler designed for mixing deterministic nodes with agent-style nodes in the same graph, with durable checkpoints and optional human-in-the-loop interrupts.

Install

pip install matrx-graph                # core engine, in-memory checkpointer
pip install "matrx-graph[postgres]"    # + durable Postgres checkpointer (via matrx-orm)
pip install "matrx-graph[otel]"        # + OpenTelemetry instrumentation

Python 3.13+ required. Depends on matrx-connect (for AppContext and Emitter), matrx-utils, pydantic.

For standalone Postgres, apply matrx_graph/db/migrations/0100_baseline_post_reorg.sql, register the database with matrx-orm, then call matrx_graph.db.configure_standalone_db("<registered-name>"). Aidream hosts use their generated package wiring instead.

Design pillars

  • Channels + reducers, not mutable state. Nodes return partial updates; a reducer merges them into typed channels. Safe under parallel writes.
  • Pregel super-steps. Each step: active nodes run in parallel via asyncio.TaskGroup → writes reduced into state → next wave scheduled. Predictable and debuggable.
  • Durable checkpoints. Every super-step produces a checkpoint. Resume, fork, or time-travel from any point. MemoryCheckpointer for tests, PostgresCheckpointer (via matrx-graph[postgres]) for prod.
  • JSON-only channel values. Pydantic models are dumped at write. Checkpoints round-trip losslessly.
  • Typed nodes. Every NodeSpec declares input_schema, output_schema, config_schema (Pydantic). JSON Schema is auto-exported for UI form generation.
  • Explicit edge semantics. Data / Control / Conditional / Error / Stream edges — no guessing from topology.
  • Interrupts + Send. First-class primitives for human-in-the-loop pauses and dynamic fanout.

Design principle

Choose where to be deterministic and where to delegate to an agent.

A workflow can do everything an agent can (branch, loop, dispatch tools) but is more predictable, debuggable, and cheaper. An agent can do everything a workflow can but adapts to unexpected input. matrx-graph exists so authors draw that line consciously per node.

Usage sketch

from matrx_graph import (
    Definition, NodeDef, EdgeDef, EdgeKind,
    compile_graph, Scheduler, register, register_builtin_nodes,
)

register_builtin_nodes()

# A custom action — registered once, referenced by name in node definitions
@register("greet")
async def greet(ctx, inputs, config):
    return {"message": f"Hello, {inputs['name']}!"}

definition = Definition(
    nodes=[
        NodeDef(id="start", action="noop"),
        NodeDef(id="greet", action="greet"),
    ],
    edges=[
        EdgeDef(source="start", target="greet", kind=EdgeKind.Data),
    ],
)

graph = compile_graph(definition)
scheduler = Scheduler(graph)
result = await scheduler.run(inputs={"name": "world"})
print(result.channels["greet"])   # {"message": "Hello, world!"}

For a full example including conditional edges, dynamic ctx.send(...) fanout, checkpoints, and resume, see examples/self_validating_news.py.

Dependency posture

matrx-graph is a generic engine. It depends only on matrx-connect, matrx-utils, and pydantic. Optional postgres extra adds matrx-orm for durable checkpointing.

Domain-specific node packs (LLM, agent, scraper) live in their sibling packages (matrx-ai, matrx-scraper) and register executors with the engine at runtime via matrx_graph.registry. No hard import cycles.

Status

Phase 1 in progress — foundation + in-process executor. Not yet production-ready. The legacy root-level workflows/ and workflows_v2/ directories in the monorepo are being consolidated into this package.

Contributing

See CLAUDE.md for package-specific rules. This package lives in the aidream monorepo at github.com/AI-Matrix-Engine/aidream-current.

License

MIT.

Metadata

Release files for matrx-graph 0.2.293

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for matrx-graph 0.2.293
File Size Uploaded
matrx_graph-0.2.293.tar.gz 1.2 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for matrx-graph 0.2.293
File Interpreter ABI Platform
matrx_graph-0.2.293-py3-none-any.whl Python 3 none any Details

Total release size: 2.0 MB

Release files / matrx_graph-0.2.293.tar.gz

Download URL matrx_graph-0.2.293.tar.gz
Size 1.2 MB
Tags Source
SHA-256 checksum
How to use checksums
fd7e40059d8598094bb3fdf8bf4f3e3b9a2ab96c3b9fdae46e703861809cf86a
BLAKE2b-256 checksum
How to use checksums
a3b085537aa957793266e5debb21494bf29c6ee26a2e61508429ad3604d173a3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.

Transparency log

Release files / matrx_graph-0.2.293-py3-none-any.whl

Download URL matrx_graph-0.2.293-py3-none-any.whl
Size 831.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4c4bac423f853d4aa532ece9861f28b0041ce714c7e45335b4a05eb7d838e432
BLAKE2b-256 checksum
How to use checksums
05a5943d4ff2a39416927509776d88df6169a0cda8339c903c09632203f042b8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.293 This release

2 release files

0.2.99

2 release files

0.2.98

2 release files

0.2.97

2 release files

0.2.96

2 release files

0.2.95

2 release files

0.2.94

2 release files

0.2.93

2 release files

0.2.92

2 release files

0.2.91

2 release files

0.2.90

2 release files

0.2.89

2 release files

0.2.88

2 release files

0.2.87

2 release files

0.2.86

2 release files

0.2.85

2 release files

0.2.84

2 release files

0.2.83

2 release files

0.2.82

2 release files

0.2.81

2 release files

0.2.80

2 release files

0.2.79

2 release files

0.2.78

2 release files

0.2.77

2 release files

0.2.76

2 release files

0.2.75

2 release files

0.2.74

2 release files

0.2.73

2 release files

0.2.72

2 release files

0.2.71

2 release files

0.2.70

2 release files

0.2.69

2 release files

0.2.68

2 release files

0.2.67

2 release files

0.2.66

2 release files

0.2.65

2 release files

0.2.64

2 release files

0.2.63

2 release files

0.2.62

2 release files

0.2.61

2 release files

0.2.60

2 release files

0.2.59

2 release files

0.2.58

2 release files

0.2.57

2 release files

0.2.56

2 release files

0.2.55

2 release files

0.2.54

2 release files

0.2.53

2 release files

0.2.52

2 release files

0.2.51

2 release files

0.2.50

2 release files

0.2.49

2 release files

0.2.48

2 release files

0.2.47

2 release files

0.2.46

2 release files

0.2.45

2 release files

0.2.44

2 release files

0.2.43

2 release files

0.2.42

2 release files

0.2.41

2 release files

0.2.40

2 release files

0.2.39

2 release files

0.2.38

2 release files

0.2.37

2 release files

0.2.36

2 release files

0.2.35

2 release files

0.2.34

2 release files

0.2.33

2 release files

0.2.32

2 release files

0.2.31

2 release files

0.2.30

2 release files

0.2.29

2 release files

0.2.28

2 release files

0.2.27

2 release files

0.2.26

2 release files

0.2.25

2 release files

0.2.24

2 release files

0.2.23

2 release files

0.2.22

2 release files

0.2.21

2 release files

0.2.20

2 release files

0.2.19

2 release files

0.2.18

2 release files

0.2.17

2 release files

0.2.16

2 release files

0.2.15

2 release files

0.2.14

2 release files

0.2.13

2 release files

0.2.12

2 release files

0.2.11

2 release files

0.2.10

2 release files

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.27

2 release files

0.1.26

2 release files

0.1.25

2 release files

0.1.12

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page