{"name":"Anomra Atlas","description":"Six dimensions shape every multi-agent system: orchestration, memory, routing, governance, observability, and human-in-the-loop. This atlas maps how the leading frameworks handle each, with orchestration as the lead lens.","url":"https://www.anomra.com/atlas","dimensions":[{"id":"orchestration","name":"Orchestration","summary":"How agents are coordinated","description":"How work is decomposed and coordinated across agents: supervisor graphs, sequential chains, parallel fan-out, loops, handoff networks, and role hierarchies."},{"id":"memory","name":"Memory","summary":"What persists across steps","description":"What persists across steps and sessions: run state, checkpoints, short and long term stores, and recalled context."},{"id":"routing","name":"Routing","summary":"How control reaches an agent","description":"How control and data reach the right agent or tool: conditional edges, handoffs, manager selection, and delegation."},{"id":"governance","name":"Governance","summary":"Guardrails, policy, approval","description":"The guardrails, policies, validation, and approval gates that keep agents inside their bounds."},{"id":"observability","name":"Observability","summary":"Tracing and telemetry","description":"The tracing, telemetry, and evaluation that make an agent run inspectable and replayable."},{"id":"hitl","name":"Human in the loop","summary":"Where a person steps in","description":"Where a person reviews, approves, edits, or interrupts the run before it continues."}],"frameworks":[{"id":"langgraph","name":"LangGraph","pattern":"Stateful supervisor graph","essence":"Agents are nodes in a directed state graph; a supervisor node routes to workers and loops until the goal state is reached.","docUrl":"https://langchain-ai.github.io/langgraph/","byDimension":{"orchestration":"A StateGraph of nodes and edges. A supervisor node routes to worker nodes and the graph loops until it reaches END.","memory":"Checkpointers persist graph state per thread, enabling pause, resume, and time-travel debugging.","routing":"Conditional edges choose the next node from the current state.","governance":"Validation lives in nodes; interrupts gate sensitive steps before they run.","observability":"LangSmith tracing captures every node transition and state diff.","hitl":"interrupt and interrupt_before pause the graph for human review, then resume from the checkpoint."}},{"id":"crewai","name":"CrewAI","pattern":"Role-based crew","essence":"Agents have a role, goal, and backstory; a process runs them sequentially or hands them to a manager agent that delegates and collects.","docUrl":"https://docs.crewai.com/","byDimension":{"orchestration":"Role-based agents run under a Process: sequential task order, or hierarchical with a manager agent delegating to the crew.","memory":"Built-in short-term, long-term, and entity memory; long-term memory persists across runs in a local store.","routing":"The manager (hierarchical) or task sequence (sequential) routes work; agents can delegate to peers.","governance":"Each task declares expected_output and can attach guardrails that validate results.","observability":"Verbose logging and event listeners; integrates with tracing tools such as AgentOps.","hitl":"Setting human_input on a task pauses execution for operator feedback."}},{"id":"autogen","name":"AutoGen","pattern":"Conversational group chat","essence":"Agents collaborate in a shared conversation; a manager or selector policy picks who speaks next each turn.","docUrl":"https://microsoft.github.io/autogen/","byDimension":{"orchestration":"Agents converse in a group chat; a manager selects the next speaker. v0.4 adds an actor-model runtime and reusable Teams (RoundRobin, Selector).","memory":"Conversation history is the working memory; external memory stores are opt-in.","routing":"RoundRobinGroupChat or SelectorGroupChat chooses the next agent; handoffs are supported.","governance":"Termination conditions and allowed-speaker rules bound the chat; code runs in sandboxes.","observability":"v0.4 emits OpenTelemetry traces alongside message logging.","hitl":"A UserProxyAgent can require human input or approval mid-conversation."}},{"id":"openai-agents","name":"OpenAI Agents","pattern":"Agents with handoffs","essence":"Small agents with instructions and tools pass control to one another through explicit handoffs, fronted by guardrails.","docUrl":"https://openai.github.io/openai-agents-python/","byDimension":{"orchestration":"Lightweight agents with instructions and tools; a triage agent passes control through explicit handoffs.","memory":"Sessions automatically persist conversation history across runs.","routing":"Handoffs are modeled as tools; a triage agent routes to specialists.","governance":"Input and output guardrails validate and can halt a run; tool schemas are typed.","observability":"Built-in tracing visualizes runs, handoffs, and tool calls.","hitl":"Tool calls can require human approval before they execute."}},{"id":"anthropic","name":"Claude / Anthropic","pattern":"Orchestrator and workers","essence":"Composable workflow patterns plus autonomous agents: an orchestrator dynamically splits a task into worker calls, then synthesizes the result.","docUrl":"https://www.anthropic.com/engineering/building-effective-agents","byDimension":{"orchestration":"Composable workflow patterns - prompt chaining, routing, parallelization, orchestrator-workers, evaluator-optimizer - plus autonomous agents for open-ended tasks.","memory":"Stateless by default; context is passed explicitly, with files and external memory added when needed.","routing":"A router classifies input to a path; an orchestrator decomposes tasks to workers at run time.","governance":"Guardrails through tool design and evaluator-optimizer loops; the Agent SDK scopes permissions and subagents.","observability":"Tracing through the API and Agent SDK; evaluator steps score intermediate outputs.","hitl":"Patterns favor explicit human checkpoints; the Agent SDK supports permissioned, reviewable tool use."}},{"id":"google-adk","name":"Gemini / Google ADK","pattern":"Composable agent hierarchy","essence":"Compose LlmAgents with workflow primitives - Sequential, Parallel, and Loop agents - into multi-agent hierarchies.","docUrl":"https://google.github.io/adk-docs/","byDimension":{"orchestration":"Compose agents with workflow primitives - SequentialAgent, ParallelAgent, LoopAgent - around LlmAgents to form multi-agent hierarchies.","memory":"Session state plus pluggable Memory services; Vertex AI Agent Engine offers managed sessions and memory.","routing":"LLM-driven transfer between sub-agents, or deterministic order through workflow agents.","governance":"Before and after callbacks and plugins gate model, tool, and agent steps; Vertex adds safety controls.","observability":"Built-in evaluation and tracing that integrate with Cloud tracing.","hitl":"Human approval through tools and callbacks; long-running operations can await input."}},{"id":"business-os","name":"Business OS pattern","pattern":"Governed control plane","essence":"A supervisor pulls tasks from a work queue and dispatches them to worker agents that run business operations behind policy gates and an audit ledger.","docUrl":null,"byDimension":{"orchestration":"A supervisor pulls tasks from a work queue and dispatches them to worker agents that carry out business operations.","memory":"Durable state lives in the queue, task records, and an append-only audit ledger.","routing":"The supervisor assigns by capability; every result flows through a policy gate.","governance":"Policy and compliance gates validate each action and require approval for risky steps - the defining trait of the pattern.","observability":"Audit ledgers and telemetry make every decision traceable and replayable.","hitl":"Operators approve, reject, or amend at explicit gates before actions commit."}}],"chooseByControlSubstrate":[{"substrate":"A graph over shared state","frameworks":"LangGraph","when":"you need durable, resumable, inspectable runs with human checkpoints"},{"substrate":"A conversation","frameworks":"AutoGen","when":"collaboration is open-ended and you want emergent back-and-forth"},{"substrate":"Handoffs between specialists","frameworks":"OpenAI Agents, AutoGen Swarm","when":"a few agents pass control and you want minimal machinery"},{"substrate":"A role hierarchy","frameworks":"CrewAI","when":"the work maps to an org chart of roles and tasks"},{"substrate":"A composable workflow","frameworks":"Claude / Anthropic, Google ADK","when":"you mix deterministic steps with model decisions and add complexity only as needed"},{"substrate":"A governed control plane","frameworks":"Business OS","when":"operations must be audited and approved - it wraps any of the above"}],"decisionGuide":[{"need":"Durable, resumable runs you can pause, inspect, and hand to a human","id":"langgraph","framework":"LangGraph"},{"need":"A team of role-based agents working a task list, fast","id":"crewai","framework":"CrewAI"},{"need":"Open-ended collaboration where agents talk it through","id":"autogen","framework":"AutoGen"},{"need":"A few specialists that hand off, with tracing built in","id":"openai-agents","framework":"OpenAI Agents"},{"need":"Start with the simplest workflow and add agents only when needed","id":"anthropic","framework":"Claude / Anthropic"},{"need":"Deterministic and model-driven control on Google Cloud, with A2A","id":"google-adk","framework":"Gemini / Google ADK"},{"need":"Operations that must be governed, audited, and approved","id":"business-os","framework":"Business OS pattern"}]}