Skip to content

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.

PyPI spec python

Get started View on GitHub


  •   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 with correlation_id preserved.

  •   Pluggable observability


    Native OTelObserver emits GenAI semantic conventions any OTLP backend renders. Separate LangfuseObserver for the Langfuse destination. No vendor lock-in to a paid SaaS.

  •   Bad graphs don't compile


    .compile() rejects six categories of structural error before invoke() 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.

Read the spec →