deepagents vs harness-sdk
LangChain's batteries-included agent harness on LangGraph — planning, sub-agents with isolated context, filesystem, shell, skills, human-in-the-loop and persistent memory out of the box. — versus — Strands Agents: open-source Python and TypeScript SDK for building and running agent harnesses in your process — model-agnostic, with lifecycle controls, hooks, MCP, multi-agent and tracing.
Both give you a batteries-included agent harness you can drop below; deepagents assembles planning, sub-agents and a filesystem on LangGraph, Strands its own model-driven loop in Python and TypeScript.
| deepagents | harness-sdk | |
|---|---|---|
| Stars | 30k | 8.8k |
| Forks | 4.2k | 1.4k |
| Language | Python | Python |
| License | MIT | Apache-2.0 |
| Last activity | 3 days ago | yesterday |
| Topics | agents, orchestration | agents, orchestration |
| Curated connections | 13 | 5 |
deepagents — the curator's take
The fastest route to a serious long-horizon agent if you accept LangChain's stack: planning, sub-agents, context offloading and HITL gates work out of the box, and any LangGraph graph plugs in as a sub-agent, so custom orchestration composes instead of forking. NOT for simple tool-calling loops — LangChain's create_agent is lighter — and the opinions run deep: if you're fighting the harness, you wanted LangGraph directly. Model-agnostic in theory; tuned around frontier tool-callers in practice.
harness-sdk — the curator's take
Pick it when you'd otherwise hand-roll an agent loop and want the grown-up parts — turn and token limits, cancellation, hooks to intercept any step, guardrails, structured output — without a hosted control plane. `create_harness()` gives a tuned default agent; drop to the SDK to own the loop. Strongest on AWS (Bedrock first-class), though Anthropic, OpenAI, Gemini and Ollama work. Want an explicit graph of steps and durable checkpoints? LangGraph models that more directly.