# What's the difference between a LangGraph agent and an AWS Strands agent?

A LangGraph agent still runs inside a graph you defined, where nodes are functions you wrote and edges decide what runs next, even in "agent" mode where a node lets the model pick its own tool; a default Strands agent has no graph at all, since AWS's own docs call its single-agent loop "model-driven." You hand a Strands agent a prompt, a list of tools, and an objective, and its loop, call the model, check whether it wants a tool, run the tool, call the model again, decides the whole path itself with nothing pre-wired. Strands does offer Graphs as an opt-in pattern for wiring several agents into a deterministic, pre-defined workflow; the model-driven loop is only the default for a single agent.

AWS frames the single-agent tradeoff directly: this is more resilient because the model can reason around a failure, an API call that errors, a request nobody anticipated, instead of following a path nobody coded for that case. The same freedom is a risk with no separate name: [a loop with nothing pre-wired also has no built-in stopping point unless something adds one](/answers/agent-loops-research/does-a-retry-limit-stop-an-agent-from-looping-forever), a limit a hand-drawn LangGraph edge doesn't share.

---

Sources:
- LangChain docs: Workflows and agents: https://docs.langchain.com/oss/python/langgraph/workflows-agents (fetched 2026-09-22)
- Strands Agents and the Model-Driven Approach (AWS): https://strandsagents.com/blog/strands-agents-model-driven-approach/ (fetched 2026-09-22)

Source: https://tessary.ai/answers/langgraph-evals/langgraph-agent-vs-aws-strands-agent
More on Langgraph evals: https://tessary.ai/answers/langgraph-evals
From Tessary, agent reliability for AI agents in production: https://tessary.ai
