Skip to main content
Smithers 0.29.0 introduces first-class memory. Wrap any part of a workflow in a <Memory> provider and every task inside it can recall relevant context before it runs, expose remember/recall tools to its agent while it runs, and retain a digest of what it produced after it finishes: durably, across runs, in a Hindsight memory bank stored in your own Postgres.

Upgrading

The Memory component

  • Declarative scope. bank/banks, tags, recall ("auto", a fixed query, or false), budget, maxTokens, primers (mental models injected verbatim), retain, and tools: inherited by descendant tasks through context, overridable per task via the existing memory prop. Both converge on the same descriptor, so graph extraction and the engine see one shape.
  • Frozen recall snapshots. Recall runs once per node and iteration and is reused across retries, so retries stay deterministic and prompt-cache friendly. Recall failures and timeouts degrade to no injection with a warning: memory never fails a task.
  • Bounded injection. Every injected block and tool result is capped by maxTokens (default 2048).
  • Async retention. With retain="on-complete", a digest of the task’s output is retained after the result resolves: fire-and-forget, never blocking completion. Run and session identity travel as metadata and stable document ids, never as tags.
  • Postgres-family feature. Set HINDSIGHT_URL (plus optional HINDSIGHT_API_KEY) to activate the Hindsight-backed store; without it, the existing local SQLite facts store and behavior are unchanged. Reference deployment env plumbing (systemd, k8s, docker-compose) ships in deploy/reference/.
See the Memory component docs and the updated memory concept guide for the full contract.

Upgrade notes

  • Tasks with an active bank-based memory config bypass the durable output cache (recalled context is a mutable input that is not part of the cache identity). Legacy namespace/object-form recall/remember/threadId metadata remains inert and keeps its previous cache semantics.
  • HindsightMemoryStore assumes a single writer per contract store; the limitation and its invariant tests are documented in the memory guides.
  • defineTool moved to a shared @smithers-orchestrator/tool-context package re-exported from the existing entry points: imports keep working.