Skip to content

Workers vs Agents

The Industry Uses “Agent” for Everything

The term “agent” is overloaded. It describes a Claude Code session, a CrewAI crew member, an OpenAI assistant, an AWS Bedrock agent, and a LangGraph node. These are all runtime constructs: a model instance with tools, executing in a session. When the session ends, the agent is gone.

DWS uses the term worker for what it defines, and reserves agent for the runtime construct that executes the definition.

The Distinction

Worker (DWS defines this)Agent (Runtimes provide this)
PersistenceExists as a versioned definition in git. Persists across sessions.Exists for the duration of a session. Torn down after.
IdentityName, version, domain, role, authority level, boundaries.Model instance with a system prompt.
KnowledgeInstitutional memory that compounds across sessions.Session context that resets every time.
AuthorityFour-level spectrum enforced by the runtime at three checkpoints.Whatever the prompt says (not structurally enforced).
VerificationIndependent verifier with context isolation and structured findings.Self-evaluation or manual review.
PortabilitySame definition compiles to Claude, CrewAI, Bedrock, or custom runtimes.Locked to the framework it was built in.
Audit trailAppend-only event stream with mandatory event types.Logs, maybe.
LifecycleDraft, testing, staging, production, deprecated, retired.Running or not running.

When to Use Which Term

Use worker when talking about:

  • The definition (worker descriptor, worker identity, worker boundary)
  • The role (contract review worker, compliance worker)
  • The lifecycle (promote the worker to production)
  • The marketplace (publish a worker, deploy a worker)
  • Knowledge (the worker’s institutional knowledge)

Use agent when talking about:

  • The runtime instance (a Claude Managed Agent session)
  • The execution environment (the agent harness, agent toolset)
  • The model invocation (the agent’s reasoning, agent tool calls)
  • External protocols (A2A Agent Cards)

The Analogy

A worker descriptor is to a running agent what a Kubernetes pod spec is to a running container. The spec declares what should exist. The runtime makes it happen. The spec is portable. The running instance is not.

Or in employment terms: the worker descriptor is the employment contract. The agent is the person showing up to work on Monday. The contract defines the role. The person fills it.