OMIR is the open, friendly memory format for agents: the standard way to write down, share, and preserve what an intelligent system remembers.

Modeled after FHIR's resource-oriented clarity, OMIR makes agent memory portable, inspectable, and interoperable without sacrificing the real-world complexity of forgetting, source trust, and temporal context.

Why this spec is necessary

Modern agents already speak to each other over MCP and A2A. But once memory leaves an agent and lands on disk, there has been no shared standard for what that memory should look like.

OMIR solves that gap by defining a stable, vendor-neutral document format for memory at rest — the same way FHIR defined the document model that made healthcare data portable.

What OMIR aims to do

1. Make memory portable

OMIR describes memory as a Bundle of typed Resources. That Bundle can be exported, shared, archived, and consumed by any OMIR-compatible system.

2. Keep the core small

The spec captures the most useful fields for the majority of implementations, while still letting systems include extra data through extensions.

3. Preserve real memory behavior

Fields for decay, tiering, relationship strength, and invalidation make forgetting and salience first-class, not optional.

4. Support honest evolution

OMIR uses a maturity model so implementers can trust which resources are stable and which are still evolving.

Why this is hard — and how OMIR makes it easier

Agent memory is not just a log of text or a simple record. It is a live structure with:

OMIR accepts that difficulty up front. The spec does not pretend memory is easy. It gives you:

Logical sections for fast adoption

New developers can adopt OMIR in clear stages. Start small, then grow with confidence.

Start here: use the schema as your contract, not your guess.
  1. Bundle: every OMIR document is a `Bundle`. It is the container for the data you exchange.
  2. MemoryRecord: capture what was remembered, with timestamp, confidence, decay, and provenance.
  3. Entity: name the people, places, concepts, and things your system extracts from memory.
  4. Relationship: connect entities with directed edges and strength values.
  5. Episode: represent bounded experiences that explain how records and entities relate.

Once the core is in place, add your implementation-specific values using `extension[]` rather than inventing new top-level fields.

How a new developer can make leaps and bounds

If you are just starting, the schema is your fastest path. It gives you a ready-made domain model so you don’t have to design memory from scratch.

This means you can jump from a prototype to a shareable, standard-compliant export in a few days instead of weeks of custom schema design.

Fast adoption checklist

Where to go next

Once your first OMIR document works, the next step is to explore:

Note: This page supports in-place editing. Click any section's Edit button and then Save. Signed-in users can also store changes locally to preview content before publishing.