Skip to main content
Deprecated — naive memory and /v1/memory. memory is retired as a product noun: one row cannot be both a curated item and a lesson without re-creating the two-vocabulary problem the brain exists to end. It survives as a wire name only — the primitive slug, the path, and the table names.Use instead: naive brain remember / naive brain forgetThese routes keep answering. Nothing is removed and no response shape changes: the deprecation is announced in headers only, which are purely additive. Every response from this router carries Deprecation (RFC 9745 — the value is a Structured Field Date, @ plus epoch seconds, not the boolean true some pre-RFC clients look for), Link rel="deprecation", Warning: 299 and X-Naive-Deprecation-Id: dep.primitive.memory. There is no Sunset header, because this is frozen with no sunset date — a Sunset on a frozen row would be a date the platform has not promised.Announced 2026-07-29. Level frozen. The freeze ends when company_containers with provider='hermes' and status='running' reaches zero — not on a date.Replacement surface: the Brain API — live today, not a preview surface.

Request Body

Behavior

201 memory_requested is not a write receipt. This endpoint does not store your text. It starts a run on the legacy lead agent with a prompt asking it to add the content to its memory file, and returns as soon as that run is accepted.Whether the fact is recorded, recorded verbatim, or recorded at all is up to the model. status: "memory_requested" is literally what it says.You must verify. Poll GET /v1/memory and check the content is there. Do not treat a 201 as durable storage.If you need a write whose success you can check, use the Brain API: POST /v1/brain/remember writes an episode, and POST /v1/brain/consolidate returns the proposals it created so you can follow each one.
The legacy runtime owns the MEMORY.md file in each agent profile. The sidecar mirrors the updated file back to the datastore, which is what GET /v1/memory reads — so there is a lag between the request and anything being visible. target is passed through into the prompt as free text; it is not validated against a set of values, and it defaults to MEMORY.md.

Errors

If the sidecar is unreachable the request fails. There is a direct-insert fallback, but it is enabled only in a development environment — in production the error is returned.