Ingram Cloud

Documentation

Memory

Memory

Each smith has its own memory, and maintains it automatically during runs. You rarely touch it, but it's inspectable and editable via the API and console.

Memory is per smith. One person's facts can never surface in another person's conversation; that isolation is why you create one smith per end-user.

How it works

LayerWhat it isWhen it's in context
Working memorya structured doc the smith keeps about its end user (name, preferences, goals)always, while memory is on
Semantic recallthe smith's own past messages, retrieved by similaritywhen relevant to the current turn
Historythe recent turns of the active threadthe tail of the active thread

The smith updates its working memory and recalls past messages on its own — you don't file facts by hand. Recall and history follow the thread_id you pass; see Runs & streaming.

Working memory is one doc per smith, shared by all of its conversations and rewritten whole on each update. That is why a smith runs one turn at a time: two turns at once would be two writers of one doc, and the second would overwrite what the first learned.

Working memory

# Authorization: tenant-admin token (server-side only), or a smith token with memories:*
H=(-H "Authorization: Bearer $IC_TOKEN" -H "IC-Api-Version: 2026-05-01")
curl "${H[@]}" https://api.cloud.ingram.tech/v1/smiths/smt_…/memory
# → { "content": "# Profile\n- Name: …\n- Prefers: …" }

curl "${H[@]}" -X PUT https://api.cloud.ingram.tech/v1/smiths/smt_…/memory \
  -H "Content-Type: application/json" \
  -d '{ "content": "# Profile\n- Name: Ada\n- Prefers: terse answers" }'

The doc is plain text the smith rewrites as it learns. Replacing it from the API overwrites what the smith holds.

Recall

# Authorization: tenant-admin token (server-side only), or a smith token with memories:read
curl "${H[@]}" -X POST https://api.cloud.ingram.tech/v1/smiths/smt_…/memory/recall \
  -H "Content-Type: application/json" \
  -d '{ "query": "where does the user work", "limit": 5 }'
# → { "data": [ { "thread_id": "…", "content": "…", "score": 0.9 } ] }

Recall runs automatically inside a run; this endpoint just surfaces what it would retrieve, for inspection.

Consolidation (opt-in)

memory_consolidation: true (on the smith or its agent; default off) turns on consolidation: a background pass that distills a smith's history into a denser observation log as conversations grow, so long-running smiths keep useful memory without dragging the whole transcript into context. It's off by default because it isn't worth it for every use case.

Consolidation runs the model in the background, so — like recall's embeddings — it consumes credits. Every memory model call is metered and billed the same way a run is (provider cost + your platform margin), on its own usage line. Leave it off for smiths where the extra spend isn't warranted.

Turning memory off

auto_memory: false (on the smith or its agent) disables memory for that smith: no working memory, no recall, no consolidation, nothing remembered. Use it for stateless utility smiths, e.g. the dedicated smith you run structured-output calls through.

In the console

A smith's Memory tab shows its working-memory doc, editable in place. Edits take effect on the next run.