DAGs are not enough

Real work does not move from left to right.

It waits. It loops. It reacts. Several things happen at once. Resources are shared. Humans intervene. Conditions change while the system is running.

DAGs describe paths through work that moves forward once. Long-lived agentic systems must also represent cycles, concurrency, synchronization, contention, and change.

When a DAG reaches its limits, coordination leaks into databases, callbacks, polling, locks, schedulers, imperative glue, or the context of an orchestrating agent.

Petrus uses Petri nets to make cyclic, concurrent, reactive, and distributed work explicit. Then it makes the running graph durable.

Each running Petrus graph has one canonical History: an append-only event log that records every accepted change and remains the source of truth.

The graph is no longer a diagram. It is durable infrastructure.

Everything composes by design

Bring agent reasoning and action, human participation, deterministic code, and external services into the same graph.

An agent can decide. Code can verify. A human can approve. A service can signal. Each part keeps its own role while the graph makes their coordination explicit.

Compose steps into loops.

Loops into graphs.

Graphs into systems.

Systems across machines.

The loop is a chip, not the computer

Agent loops provide intelligence and action. Keep them. Compose them.

Petrus connects loops to durable state, deterministic execution, human direction, and capabilities across machines. A loop becomes one powerful building block inside a larger system instead of the place where the whole system must live.

Petrus control planeGraph · durable state · History
Routes work | Records outcomes
Agents · Humans · Code · ServicesLocal or remote

Petrus remembers what happened, coordinates what happens next, and routes the work wherever it needs to run.