Skip to Content
ConceptsOverview

Concepts

A handful of ideas explain most of how loomflow behaves: what an agent is made of, how runs and conversations relate, what memory stores, and how one agent serves many users safely. Each page below takes a few minutes.

How the pieces fit

An agent is a loop (the architecture) plus the components it uses. Every component has a default, so Agent("...", model="...") works on its own, and each one can be swapped for another implementation, or your own, without changing the rest.

Five ideas behind the design

  1. Swap any part. Each component is defined by a small interface (a Python Protocol). To use a different memory store or model provider, pass any object with the right methods; you never subclass the framework.
  2. user_id goes everywhere. Pass it once to agent.run() and memory, budgets, the audit log and your tools all see it.
  3. You only pay for what you use. Unset components are no-ops (allow-all permissions, no telemetry, no audit log), and the loop skips them entirely.
  4. The loop is a setting. ReAct is the default; architecture= picks another loop style without changing anything else.
  5. Loops nest. An architecture can wrap another one, so a team of agents can itself reflect and retry, using the same Agent class.

Where to next

Last updated on