OpenArmature¶
A workflow framework for LLM pipelines and tool-calling agents — typed state, structural graph checks, and observability that doesn't require buy-in from every node.
-
Typed, frozen state
State schemas are Pydantic models with
frozen=Trueandextra="forbid". Nodes can't mutate state — they return partial updates and the engine merges via per-field reducers. -
Compile-time checks
Bad graph shapes (dangling edges, unreachable nodes, conflicting reducers, missing entry) fail at
.compile(), not at run time. -
Observable, opt-in
Attach an
Observerto see every node boundary. Drop in the optional OTel mapping for spans + log correlation; logs carrytrace_id/span_id/correlation_idautomatically. -
Checkpointable
In-memory and SQLite
Checkpointerbackends ship in core. Crash at node N+1, resume from node N's saved state on the next invocation. -
First-class fan-out
Per-instance fan-out with bounded concurrency, error-policy choice, and observability events that attribute correctly per instance.
-
Async-first, LLM-agnostic
The engine has no concept of LLMs or tools — those live at the node boundary. Use any provider, any model, any external system.
Built around an open, language-agnostic specification. A TypeScript implementation is on the roadmap; behaviour stays identical across implementations via spec conformance fixtures.