Skip to content

Shared vocabulary for agent work

Agent Work Model

Precise names for the projects, work episodes, agents, attempts, conversations, and artifacts that different systems need to discuss together.

Version
0.1.0
Status
draft
License
Apache-2.0
Machine-readable
model.json
On this page
  1. The language problem
  2. Real-world confusion
  3. What clarity changes
  4. What AWM is
  5. The vocabulary

Agentic software has a language problem

Agent systems are becoming more capable every month. The language used to connect them is not keeping pace.

Teams routinely use the same words for different things. A session might mean a conversation, a graph checkpoint namespace, a network connection, one agent assignment, or the whole span of work. A run might mean one model loop, one retry, one workflow, or everything that happened after a user clicked “start.”

This sounds like a documentation problem. It becomes an architecture problem the moment two systems exchange data. If “resume the session” is not precise, developers cannot know which history to load, which process to restart, which permissions still apply, or whether the work is already complete.

The confusion is already visible

LangGraph uses a thread for checkpointed graph state. The OpenAI Agents SDK uses a session for conversation history across runs. MCP now defines a stateless context-exchange protocol, although developers still encounter older transport-level “session” identifiers.

Each meaning is reasonable inside its own system. They are not interchangeable. At the boundary, adapters grow special cases, database columns acquire misleading names, lifecycle events cannot be compared, and specifications depend on tribal knowledge. The mapping guide compares more systems without claiming false equivalence.

Clear language changes the work

Agent Work Model starts with one primary distinction: a WorkSession is the bounded episode of work, while an AgentRun is one agent’s assignment inside it.

The remaining terms make that distinction operational. A RunAttempt is one infrastructure try at the assignment. A Turn is one input-to-output cycle. A HostConversation is chat history that may attach to the work, but is not the work itself.

Now a specification can say exactly what survives a crash, what is retried, what owns mutable state, and what completion means. APIs become easier to review. Events become easier to join. Tests can assert real invariants instead of guessing what a field named session_id was intended to mean.

The joy is practical: fewer translation meetings, fewer “which run?” questions, and more time spent building the behavior the team actually agreed on.

A shared model, not another platform

AWM does not ask any system to rename its native objects. It supplies a neutral semantic layer so those objects can be mapped without pretending that similar names guarantee identical meaning.

The machine-readable documents under model/ are canonical. They define identity, authority, lifecycle, cardinality, invariants, aliases, non-synonyms, and mapping fidelity. Generated prose, JSON, and this site are derived from that source.

The vocabulary

New to the model? Start with the boundaries guide. Building an integration? Read mapping systems. Use the complete table below as reference.

Each accepted term has a qualified identity field, one external authority role, and explicit relationships to the rest of the model.

TermIdentityStatusDefinition
Projectproject_idacceptedA durable named collaboration and policy scope. A Project outlives any single workspace, host conversation, or WorkSession and is the unit that people and systems recognize as "the work we keep doing together."
ProjectSnapshotproject_snapshot_idacceptedAn immutable resolved project definition at an exact revision. It is the pinned meaning of a Project that a WorkSession actually ran against.
WorkProfilework_profile_idacceptedA reusable blueprint for a kind of WorkSession. It describes intended participants, resource shapes, and task patterns without being a live episode of work.
Resourceresource_idacceptedAn independently addressable thing relevant to work. A Resource is not necessarily owned by a Project; projects and sessions observe or bind it.
ResourceBindingresource_binding_idacceptedA WorkSession-specific resolution and grant for a Resource. The binding records how this session names, locates, and is allowed to use the Resource without becoming a second owner of it.
Workspaceworkspace_idacceptedA Resource subtype that provides a material working environment (files, checkout, container, or equivalent). A Workspace is not a WorkSession.
WorkSessionwork_session_idacceptedA bounded episode of work that coordinates resources and participants. A WorkSession may contain many AgentRuns and ResourceBindings. It is never an MCP connection and never a host chat transcript.
AgentProfileagent_profile_idacceptedA declarative description of an eligible kind of agent. It names capabilities, constraints, and intended roles without identifying a running process.
AgentInstanceagent_instance_idacceptedA running process or remote endpoint capable of executing RunAttempts. An AgentInstance is not an assignment and is not a Principal.
AgentRunagent_run_idacceptedOne agent's bounded assignment within exactly one WorkSession. An AgentRun may contain Turns and RunAttempts. This is the accepted term that replaces the ambiguous phrase "agent session".
RunAttemptrun_attempt_idacceptedOne infrastructure execution attempt for an AgentRun. Failures, retries, and instance replacements produce new RunAttempts under the same AgentRun.
Turnturn_idacceptedOne input-to-output or control-yield cycle inside an AgentRun. A Turn is smaller than a RunAttempt and is not a HostConversation.
HostConversationhost_conversation_idacceptedConversation history owned by a host product such as Goose, Hermes, or Crush. A HostConversation may attach to a WorkSession but is not the WorkSession.
Tasktask_idacceptedA schedulable unit in a WorkSession task graph. A Task is not necessarily one-to-one with an AgentRun.
Artifactartifact_idacceptedA durable explicit output published by a Task or AgentRun. An Artifact is not private reasoning, scratch, or an unpublished tool side effect.
Principalprincipal_idacceptedAn authenticated human, service, or agent identity. A Principal is not an AgentInstance and is not an assignment.