A vendor-neutral protocol for agent memory portability. Your memories, your graph, your dreams — portable across every AI provider.
We have shared standards for authentication (OAuth), for schemas (JSON Schema), for transport (HTTP). We have nothing for the most important piece of an agent's identity: its memory. OAMS fixes that.
OAMS is intentionally small. The protocol defines the shape of a memory, the envelope for cross-agent federation, the contract for consolidation, and the discovery surface. Everything else — storage, indexing, policy — is implementation choice.
The atomic unit. Every memory, from every vendor, reduces to this shape. Embeddings are optional and dimension-agnostic. Confidence is a calibrated scalar in [0, 1]. Metadata is open-ended.
type OAMSMemory = { id: string; // stable, unique namespace: string; // agent scope content: string; // canonical text embedding?: number[]; // optional confidence: number; // 0.0 - 1.0 created_at: string; // ISO 8601 metadata: Record<string, unknown>; }
id, namespace, content, confidence, created_at.id is an opaque string. Implementations MAY use UUIDv7 but MUST NOT rely on ordering.When one agent shares memory with another — across frameworks, across vendors — the payload travels in a federation envelope. Scope is explicit. TTL is enforced. Audit lineage is preserved through the hop.
type OAMSEnvelope = { source_agent: string; // DID or URL target_agents: string[]; // recipients scope: "read" | "read_write" | "mirror"; ttl: number; // seconds, 0 = session payload: OAMSMemory[]; audit: AuditTrail; }
read is a view, read_write lets the target update originals, mirror forks a local copy.ttl: 0 means ephemeral — never persist.Consolidation is how raw memories become knowledge. OAMS does not dictate the algorithm — it defines the contract: named strategy, declared inputs, declared outputs, and a verifiable audit trail.
type OAMSPipeline = { strategy: string; // e.g. "synthesize" version: string; // semver inputs: string[]; // memory ids outputs: string[]; // resulting ids audit_log: { started_at: string; finished_at: string; actor: string; // model + version reason: string; }; }
synthesize, contradict, compress, associate, forecast. Vendors add their own.Before two systems exchange memory, they handshake. A well-known URL describes what the provider supports: which pipelines, which transports, which scopes. Discovery is static. No SDK required.
GET /.well-known/oams-capabilities Accept: application/json // Response { "oams_version": "0.1", "strategies": ["synthesize", "compress"], "transports": ["https", "a2a", "mcp"], "embedding_dim": 1536, "max_payload": 10485760, "auth": ["bearer", "mtls"] }
The initial draft is ours. The final standard is not. We are actively recruiting two co-author organizations to ratify v1.0. Below are the governance commitments this group has already made.
We publish the ratification path so teams can plan against it. No hidden schedules. No surprise breaking changes.
Read the full RFC for v0.1, file comments against the schemas, or start implementing today. OAMS succeeds when every agent platform speaks the same memory protocol — help us get there.
OAMS v0.1 is a draft published for comment. Field names, schemas, and semantics may change before v1.0 is ratified. REM Labs implements the spec internally as the public working reference, but no production SLA is attached to draft versions. Track changes in the changelog and open discussion on.