OASP
Spec Schemas GitHub
Home / The Standard
// the standard

The whole protocol, one level below the spec.

A readable tour of the resource model and the interactions between resources. When you want the normative detail — the field-by-field schemas and the MUST/SHOULD language — the spec and schema.oasp.dev are one click further.

// the split

Everything follows from one distinction

fig.1 — conversation lifecycle
Conversation conv_7Q2f durable · under tension
now
publish ↓
migrate · session upgrade
lineage preserved
sess_a
runtime v1.2
sess_b
runtime v1.3 · pinned
sess_c
drain sess_a
upgradedFrom sess_a
portable across providers
time →
Conversation — durable Session — disposable Event — send / stream / tool-call markers publish migrate drain

One Conversation , published once, rides a succession of disposable Sessions — upgraded in place ( migrate ), retired cleanly ( drain), even across providers — with its full lineage and audit trail preserved throughout.

// resource model

Eight resources and their fields

A closed set. Every OASP system is some arrangement of these and the references between them.

AgentDefinition
definition

The versioned contract an agent is deployed from — its interface, tools, and behavior at a fixed version. Conversations pin to it.

idnameversionschema
Deployment
runtime

A running instance of an AgentDefinition at some endpoint. Sessions are opened against a Deployment; multiple Deployments of different versions can coexist.

idagentDefinitionendpointstatus
Conversation
core

The durable, user-facing thread. Published once, it persists across every Session it rides on and holds the reference to its session lineage and its Principal.

idstatusagentsessions[]principal
Session
core

A disposable, provider-side execution context bound to one Deployment. Created by publish or migrate; retired by drain. Points back to the Session it upgraded from.

idconversationruntimestateupgradedFrom
Event
runtime

An append-only record on a Session — a send, a stream chunk, a tool-call. Sequenced per Session; the ordered log that reconstructs what happened.

idsessiontypeseqpayload
Principal
identity

An identity acting in the system — user, agent, or service — placed by five scope dimensions and carrying an IdP-agnostic claims bag. Detailed on Identity & Audit →

idsubscopesclaims
Credential
identity

A scoped, on-behalf-of grant with containment — the object that lets an agent Principal act for a user Principal, bounded to a scope it cannot exceed.

principalonBehalfOfcontainmentexpires
AuditEvent
audit · normative

The normative record of a consequential action — who, as whom, what, when, and against which Session lineage. A conformant Server MUST emit these.

idtsactoractiontargetsession
// interactions

Five interactions between resources

publish(deployment, principal)
→ Conversation

Opens a Conversation on a Deployment and its first Session. This is where the durable thread and its identity begin.

migrate(conversation, deployment)
→ Session

Upgrades the Conversation onto a new Session — a new runtime or version — preserving lineage. The user never sees a seam.

drain(session)
→ void

Retires a Session cleanly: stop accepting new work, let in-flight work finish, then move to drained. No dropped state.

stream(conversation)
→ AsyncIterable<Event>

Reads Events as they append to the active Session — the live view of the thread, across any migration.

send(conversation, message)
→ Event

Appends an Event to whichever Session is currently active. Callers address the Conversation; OASP routes to the Session.

// lifecycle states

The two state machines

Conversation.status
active archived

A Conversation is active from publish until it is explicitly archived. It never depends on any single Session being alive.

Session.state
active draining drained

migrate spawns a fresh active Session; drain walks the old one through draining to drained.

For the field-by-field schemas and normative language, continue to the spec. Read the spec schema.oasp.dev