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.

Get started View on GitHub


  •   Typed, frozen state


    State schemas are Pydantic models with frozen=True and extra="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 Observer to see every node boundary. Drop in the optional OTel mapping for spans + log correlation; logs carry trace_id / span_id / correlation_id automatically.

  •   Checkpointable


    In-memory and SQLite Checkpointer backends 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.