Profiles
The OMIR core is intentionally permissive: almost every field is optional so that any memory system can map onto it. That generality is a problem for any particular domain, where a consumer needs guarantees — “every record will have provenance,” “every entity will carry an embedding,” “decay state will always be present.”
A Profile closes that gap. A profile is a published constraint on the OMIR core:
A profile = a constrained subset of the core + a set of required extensions.
Specifically, a profile MAY:
- mark otherwise-optional core fields as required;
- forbid core fields or enum values that are meaningless in its domain;
- require specific extensions (by
url) to be present; - tighten value ranges or cardinalities within what the base schema allows.
A profile MUST NOT:
- add new top-level core fields (use extensions);
- relax a base-schema requirement (a profile only ever narrows);
- contradict the base schema (a profiled resource is always also a valid base resource).
A resource declares the profiles it claims via meta.profile, an array of canonical
profile URLs. A Bundle is profile-conformant when every resource that claims a
profile satisfies that profile’s constraints (see Conformance).
R1 ships three reference profiles.
omir-coding-agent
URL: https://omir.io/spec/R1/profile/omir-coding-agent
For coding agents (Claude Code, Copilot agents, Cursor) that remember decisions, patterns, edits, and project context.
Constraints:
MemoryRecord.provenanceis REQUIRED, andprovenance.sourceTypeSHOULD be one ofconversation,document,command, orobservation.MemoryRecord.kindis REQUIRED (one ofmemory,plan,prompt,learning).- For records whose
experienceTypeiscode_edit,file_access, orcommand,provenance.externalIdSHOULD be present (e.g.github:pr-123,linear:SHO-39) for traceability back to the artifact. Entity.labelsSHOULD includetechnology,project, orskillwhere applicable, so a project graph is reconstructable.
Required extensions: none mandated; tool-call telemetry, if carried, SHOULD use a vendor extension URL.
omir-robotics (edge / Zenoh)
URL: https://omir.io/spec/R1/profile/omir-robotics
For embodied agents and robots persisting memory on constrained edge hardware, often over a Zenoh/ROS2 transport.
Constraints:
- The
.omirbbinary encoding (Encodings) is RECOMMENDED for persistence under this profile; producers MUST still be able to emit.omirJSON on request. Episode.sourceSHOULD beobservationorevent(robots ingest sensor and event streams, not chat messages).MemoryRecord.eventTimeis REQUIRED — physical events are timestamped at occurrence, distinct from ingestion time.- A spatial extension is REQUIRED on location-bearing records and entities, under a
canonical URL (e.g.
https://omir.io/spec/R1/extension/spatial-pose) carrying a pose/frame payload invalueJson. Spatial coordinates are not core in R1. decay.halfLifeHoursSHOULD be present so on-device forgetting survives power cycles.
omir-personal-assistant
URL: https://omir.io/spec/R1/profile/omir-personal-assistant
For personal-assistant agents that hold long-lived facts and preferences about a single user, and must handle PII responsibly.
Constraints:
MemoryRecord.confidenceis REQUIRED — a personal assistant must know how sure it is before acting on a remembered fact.MemoryRecord.validUntilSHOULD be set on facts known to be time-bounded (a current address, an employer), so stale facts are detectable.- Prospective memory is supported: records with
experienceType: "intention"carry future-directed reminders and MUST be filtered out of ordinary recall by a conforming consumer. - A PII-classification extension is REQUIRED on records and entities that may carry
personal data, under a canonical URL (e.g.
https://omir.io/spec/R1/extension/pii-class), so downstream handling can honor it. Entity.salienceSHOULD be present so the assistant can rank what matters to its user.
Defining your own profile
Implementations and domains MAY publish additional profiles. A profile definition MUST:
- have a stable canonical URL;
- state the base resource(s) it constrains;
- enumerate its added requirements, forbidden fields/values, and required extension URLs;
- guarantee that any resource conforming to the profile is also a valid base R1 resource.
Profiles are versioned with the release (R1, R2, …) and follow the same deprecation policy as the core.