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.
-
Workflows to agents, one engine
Built for LLM-infused pipelines first. Tool-calling agents (cycle back to an LLM node) and pure deterministic ETL sit at the two ends of the same spectrum.
-
Crash-safe by contract
Synchronous checkpoint save after every node. Process dies mid-step, next
invoke(resume_invocation=...)picks up from the last save withcorrelation_idpreserved. -
Pluggable observability
Native
OTelObserveremits GenAI semantic conventions any OTLP backend renders. SeparateLangfuseObserverfor the Langfuse destination. No vendor lock-in to a paid SaaS. -
Bad graphs don't compile
.compile()rejects six categories of structural error beforeinvoke()is reachable: dangling edges, unreachable nodes, conflicting reducers, no entry, mappings to undeclared state fields, multiple outgoing edges. -
Parallelism, formalized
Fan-out with bounded concurrency and per-instance error policy. Parallel-branches runs N named subgraphs. Both nest with attribution-correct observability.
-
Async-first, LLM-agnostic
asyncio-native throughout: every node, observer, and checkpointer is
async. Use any LLM provider, any model, any external system. Drops directly into FastAPI lifespan hooks.
Open specification¶
OpenArmature is defined by a public, language-agnostic specification, not a Python-shaped opinion exported to other languages. Reference implementations share conformance fixtures, so behavior stays identical across languages, runtimes, and tooling stacks.