What was said, written down, remembered
A voice memo in the car, a screenshot with a caption, a scanned invoice already through OCR. These arrive as media and matter as text, so Memory OS turns them into ordinary semantic memories — embedded, indexed and retrievable next to everything else — and keeps a cryptographic fingerprint of the original bytes.
- 3 endpoints
- Transcript, provider or fingerprint
- SHA-256 on every binary field
- Webhook on every ingest
What this is, before what it does
This layer is text-first. It summarises and stores the caption, the OCR output, the transcript or the notes that you supply, and it fingerprints any binary you send alongside them. It does not look at your images and it does not watch your video. There is no native visual or video understanding in this product today.
Audio is the one exception, and only where a transcription provider is configured: with the Pcnaid provider or OpenAI set up, speech becomes text through them. With no provider, audio becomes a fingerprint and a note saying so.
We are putting that at the top rather than in a footnote, because “multimodal” is a word that has been asked to carry more weight than it can. What is here is genuinely useful. It is not what the word usually implies.
Three endpoints
Every one of them ends the same way: a semantic memory, embedded and
indexed, with a meta.source saying where it came from and
a fallback flag saying how well it went.
POST /v1/media/transcribePOST /v1/media/multimodalPOST /v1/media/summarize
Set store: false on any of them and you get the
transcription or summary back without anything being written. Useful
for a preview screen, and for deciding whether a thing is worth
remembering before you commit it.
Three ways a voice memo becomes a memory
The transcription path is chosen in a fixed order, and each outcome is recorded rather than smoothed over. You always know which of the three produced the memory you are reading.
memories
A voice memo stored without a transcription provider
- mem_type
- semantic
- meta.source
- voice_memo
- meta.provider
- fallback
- meta.fallback
- true
- meta.filename
- site-visit-note.webm
- sha256
- 3ab91f0c7d24e8b5…
- confidence
- 0.62
- note
- fallback_used
POST /v1/media/transcribe → media.voice_memo.transcribed
{ "payload": {
"caption": "Invoice 8841, Northwind",
"ocr_text": "Terms: net-45 …",
"image_base64": "iVBORw0KG…",
"meta": { "project": "ledger" } } }
// summarised from caption + ocr_text
// the image itself is fingerprinted, not read
media_hashes
field image_base64
sha256 7c41d9…
bytes 184,220
A fingerprint is a small promise you can keep
Every binary field in a multimodal payload — image, audio, video or document — is hashed with SHA-256 and recorded with its byte count against the memory. That is not understanding, and we do not present it as understanding. It is three concrete things.
You can tell whether two submissions were the same file. You can prove later that the artefact you still hold is the one the memory was made from. And when a transcription or vision provider is configured afterwards, you have a stable handle to reprocess against instead of a gap where the original used to be.
When a payload has no usable text and no provider is reachable, the stored memory says so in as many words, and tells you that adding a provider key would change the outcome.
Limits, and which one bites first
MAX_REQUEST_BYTES deliberately if you
intend to post real recordings.
MEDIA_AUDIO_MAX_DECODED_BYTES is refused with
413 and a message naming both the decoded size and the
limit. This is the service-level guard behind the transport one.
media.voice_memo.transcribed,
media.multimodal.ingested and
media.{source}.summarized — where the source is the
label you sent, so a caption pipeline and a meeting pipeline can
subscribe to different streams.
Once it is stored, it stops being media
The output of all three endpoints is an ordinary semantic memory. It is embedded by the same model, indexed by the same generated search vector, ranked by the same fusion, packed by the same budget and governed by the same tenancy boundary as a memory you typed by hand.
That is the whole design. There is no separate media search, no second index to keep in step, and no answer that can only be found if you remember the thing was a voice note. You ask about the invoice; the site visit you dictated in the car comes back with it.
Give your agents a memory you can audit
Run the whole system on your own hardware under the MIT licence, or ask us about hosted access. Both start from the same place.