Skip to content

Agentic tools and services for building the best harnesses

The robot is becoming.

Multimodal, graph-augmented memory with context-aware recall — retrieval that finds what is connected, not just what is similar. For agents that have to hold a thread across sessions, tasks and time, and explain why they remembered what they did.

Association graph — edge width is edge weight; pulses are recalls travelling outward.

A retrieval, end to end

From inputs to a synthesis retrieval alone would not reach.

A simulated session. Task, conversation, state and an image go in. The space is searched, a shortlist is scored, and a sieve passes what the task needs while keeping a strong tangential. The agent synthesises something the direct records could not yield, then scores every emitted memory for usefulness, and the graph is reshaped by the result. The next recall is different because this one happened.

inputs

embodiment

desktop companion · voice + webcam + screen

The person the agent is talking to, seen through the session's webcam.webcam frame · derived mood below
where

agent: cloud · us-east — human: New York, NY

supplied by the session, never inferred

when

2026-09-18 · 19:40 EDT · evening

problem

week-one churn — 62% gone after the first session

with

Keith · product lead · compartment: product/team

artifact

retention section of the spec

conversation
  1. Keiththe numbers are ugly. 62% gone after the first session.
  2. AdaEmpty dashboard on first load — nothing to do.
  3. KeithWe have a checklist draft. It's not landing.
  4. AdaThe interviews say “I didn't know what to do first.”
  5. KeithI keep thinking about how games handle nothing happening.
  6. AdaSay more.
state

reflective · low arousal

v 0.35 · a 0.22 · d 0.50 · cort 0.18 · dopa 0.44 · oxy 0.52 · sero 0.61

derived from conversation + webcam

search — the space lights

shortlist — scored, with and without the lenses

memorysemalexicontaffestrutext onlyfused (all inputs)rank
[m-041] Week-one churn analysis0.920.710.680.340.770.0660.071→
[m-117] Interview — “I didn't know what to do first”0.840.520.630.470.660.0580.064→
[m-006] Onboarding checklist draft0.730.660.490.310.580.0540.061→
[m-238] Fishing with Hank — Stardew's empty first day0.310.080.740.880.710.0120.052↑5
[m-312] Retention benchmark0.690.440.120.050.210.0410.038↓3
[m-301] 1:1 with Keith — compensation note0.220.140.580.400.330.0090.021↑5
[m-092] Landing page A/B notes0.410.330.200.080.180.0230.019↓2
[m-275] Q2 roadmap review notes0.360.220.240.110.190.0190.017↓2
[m-149] Postgres connection pool incident0.290.480.180.090.140.0210.014↓5
[m-261] Hiring loop feedback0.240.170.150.120.110.0140.011↓3
[m-054] Reading note — Norman on affordances0.520.120.090.140.380.0130.010↓3
[m-158] Onboarding email copy v10.330.290.100.060.090.0110.009↓2

Same query. With embodiment, place, time, relationship and state, the shortlist re-ranks — the tangential memory climbs from ninth to fourth.

sieve — task · recency · persona · place · relationship

  • [m-041]Week-one churn analysispassed ✓task fit · recent · product
  • [m-117]Interview — “I didn't know what to do first”passed ✓task fit · recent · product
  • [m-006]Onboarding checklist draftpassed ✓task fit · artifact match
  • [m-238]Fishing with Hank — Stardew's empty first dayretainedtangential — retained (affective 0.88 · structural 0.71)
  • [m-312]Retention benchmarkdroppedlow task fit
  • [m-301]1:1 with Keith — compensation notedroppedsealed · other compartment — scored, never emitted
  • [m-092]Landing page A/B notesdroppedstale
  • [m-275]Q2 roadmap review notesdroppedlow fit
  • [m-149]Postgres connection pool incidentdroppedwrong compartment
  • [m-261]Hiring loop feedbackdroppedlow fit
  • [m-054]Reading note — Norman on affordancesdroppedlow task fit
  • [m-158]Onboarding email copy v1droppedstale

emitted — four memories, in the order they passed

m-0412026-09-11
productopenpinned
weight0.81
recalls34

Week-one churn analysis: 62% of new accounts never return after the first sessio

content
Week-one churn analysis: 62% of new accounts never return after the first session.
context
retention review · shared with Keith · product compartment
reflection
The drop is concentrated in the first ten minutes, not spread across the week.
tangent
Reminded me of a theatre with the house lights up and no one on stage.
cort
dopa
oxy
sero

v -0.32 · a 0.48 · d 0.40

  • m-3120.58
  • m-0060.64
  • m-1170.82
m-1172026-08-27
productopen
weight0.74
recalls21

Interview, week-one churned user: “I didn't know what to do first. So I closed i

content
Interview, week-one churned user: “I didn't know what to do first. So I closed it.”
context
user interview · 2026-08-27 · product compartment
reflection
They did not judge the product and leave; they waited to be told and nothing told them.
tangent
The same sentence appeared in two other interviews that month.
cort
dopa
oxy
sero

v -0.18 · a 0.31 · d 0.46

  • m-2380.55
  • m-0060.61
m-0062026-07-14
productopen
weight0.58
recalls12

Draft of the onboarding checklist — five tasks, no state, no reward for finishin

content
Draft of the onboarding checklist — five tasks, no state, no reward for finishing.
context
design draft · with Mira · product compartment
reflection
A checklist that cannot show progress reads as advertising rather than instruction.
tangent
Progress bars are promises; ours made none.
cort
dopa
oxy
sero

v 0.05 · a 0.27 · d 0.52

  • m-1580.40
m-2382026-06-21
personalopentangentialimage · attached
weight0.44
recalls6
Attached to this memory: two figures fishing from a dock at dusk.meHank

Fishing with Hank at dusk. He talked about Stardew Valley: the first day you do

content
Fishing with Hank at dusk. He talked about Stardew Valley: the first day you do almost nothing, and that's why you come back.
context
evening · the dock · shared with Keith later · personal compartment
reflection
The empty first hour was the retention mechanism, not a failure of content.
tangent
An empty state can invite rather than instruct — signal in the empty space.
cort
dopa
oxy
sero

v 0.71 · a 0.14 · d 0.55

  • m-1170.55
  • m-0540.49

synthesis

Week-one churn isn't a missing-feature problem — it's a silence problem. The dashboard is empty and says nothing m-041, so people do not know what to do first m-117. The checklist helps m-006, but the stronger pattern is the one from an empty evening at a pond m-238: nothing was caught and it still felt good, because the scene never stopped emitting small honest signals. Onboarding should do the same — every empty state should signal progress before the first real result arrives.

creative leap: m-238 → pattern “signal in the empty state” — not derivable from m-041/m-117/m-006

feedback — usefulness written back

memoryused in answerusefulness (agent-scored)Δweight
[m-041]yes0.80+0.10
[m-117]yes0.70+0.09
[m-006]yes0.50+0.07
[m-238]yes0.95+0.12
co-occurrence edgem-238 ↔ m-041 created0.30

The agent scores every emitted memory for how useful it was to this problem and writes the score back. The tangential one that produced the solution scored highest.

the graph changed

The next recall runs on a graph shaped by this one.

A simulated session, eight stages. Every record is an entry in the same store the figures above draw from; hover a memory in either graph to read it whole.

One retrieval, shown

The shortlist reorders under fusion.

Ranked on text alone, a shortlist is an ordering of what looks like the query. Fused across all five paths, it becomes an ordering of what is relevant to it — and a memory connected to the result, rather than similar to the question, climbs into view.

shortlist, text-only → fused
  1. 111 → 1Week-one churn analysis0.0660.0710.071
  2. 222 → 2Interview — “I didn't know what to do first”0.0580.0640.064
  3. 252 → 5Retention benchmark0.0410.0380.038
  4. 333 → 3Onboarding checklist draft0.0540.0610.061
  5. 494 → 9Postgres connection pool incident0.0210.0140.014
  6. 949 → 4Fishing with Hank — Stardew's empty first day0.0120.0520.052
On text alone, Fishing with Hank — Stardew's empty first day ranks ninth. With all five paths fused it climbs to fourth — tangential — retained (affective 0.88 · structural 0.71).

The ceiling

Flat retrieval has a ceiling.

Most agent memory is a vector store and a nearest-neighbour query. Chunk the past, embed it, return the top-K by cosine. It works — until the thing you need is not the thing that looks most like your question.

Similarity is a single axis. It cannot see that two memories share a moment, or a cause, or a mood. It cannot follow a chain of association from what you asked to what you meant. It has no notion of which memories have earned their place and which are noise that happened to embed nearby. And when it is wrong, it cannot tell you why.

A harness built on flat retrieval inherits that ceiling. Every prompt strategy above it is compensating for a memory that does not know how things relate.

How recall works

Many lenses. One ranking. Then the digest.

Recall runs several retrieval paths at once and fuses their rankings. Each path sees the past through a different lens. The fusion rewards memories that surface through more than one.

SignalWhat it seesBacked by
Semanticmeaning — across separately embedded facets of a memory, not one flattened blobvector search
Lexicalexact and near-exact language — the name, the term, the phrasetrigram indexing
Contextualwhere and when it happened — the moment, the place, the task it was part of; memories that share a context surface togethertemporal and contextual association edges
Affectivethe emotional state the memory was formed undera mood-and-hormone vector
Structuralwhat the memory is connected to — walked outward through weighted association edgesthe graph

The ranking is fused by reciprocal rank fusion. A memory’s score is the sum, over every list it appears in, of that path’s weight divided by its rank.

score(m) = Σ wₚ / (k + rankₚ(m))wₚ — the weight of path p · rankₚ(m) — where memory m placed in that path’s list

Two consequences matter. A memory that ranks third on meaning and second in the graph beats one that ranks first on meaning alone. And the structural path is seeded from the frontier the other paths already found — it does not walk from nowhere, it walks from what is already relevant, and returns what is connected to it.

That second consequence is what a single-vector system cannot reproduce: a nearest-neighbour query has no frontier to expand from, so it cannot return a memory whose relevance is established only by its relation to another result.

Fusion is not the last step. The fused ranking passes through a digestion stage that is task-aware and recency-aware. It re-grades candidates against what the agent is doing right now, favours what is fresh where freshness matters, and shapes the result for whoever is remembering — the same memory surfaces differently for a code reviewer and a companion. What reaches the model is not the top of a list; it is the set most useful to this agent, on this task, now.
Five ranked lists stream in and fuse; each fused score is assembled from the channels that contributed it, then a digest thins the ranking to what the current task needs.
Hesper · field hydrologist and gauge-keeper — I would stand at the bottom of the stair in late afternoon, when the light comes down the shaft, and read the marks the way the gauge-keepers did.

The memory model

A memory has structure before it has a vector.

A memory here is not one string with one embedding. It is captured in four facets, each embedded on its own axis:

content

what happened

context

the circumstances around it

reflection

what was made of it afterward

tangent

what it brought to mind

A query can match a reflection on an event without matching the event. The tangent facet is how a memory that looks unrelated can surface for a reason that turns out to be right. Flattening these into one vector averages away exactly the distinctions recall depends on.

Each memory also records the affective state it was formed under — valence, arousal, dominance, and a small set of hormone-like variables. That state is a first-class retrieval signal, not metadata. Affective state at encoding is a retrieval cue in its own right: recall is biased toward memories formed under a similar state — the mood-congruent recall effect long documented in human memory, used here as an explicit, weighted signal rather than an accident of embedding.
A memory space and the web that links it — memories far apart in space connected by shared setting, mood, meaning and association. A query lights its neighbourhood across every channel.

The association graph

The graph learns from use.

Structure is not annotated by hand. When a memory is written, association edges are formed across five dimensions at once — emotional resonance, temporal proximity, shared context, tangent linkage, and semantic neighbourhood — each carrying a weight.

Then the graph changes as it is used — on events, never on a clock. Co-retrieval is treated as evidence of association: an edge between memories recalled together is created if absent and strengthened in proportion to how often it recurs — a Hebbian update rule applied to retrieval events rather than neural activity. Weight falls only when a recall is judged unhelpful, or when a memory is contradicted or superseded; nothing weakens through the passage of time alone. The graph an agent recalls through is built from its own retrieval history, not from a schema imposed in advance.

Sedge · riparian restoration surveyor — Standing in thirty centimetres of water on a floodplain as the annual flood arrives, measuring how fast the front advances, watching the birds move ahead of it.

Explainability

Explainable by construction.

Because every recall is a fusion of named signals, every result can report which signals surfaced it and how much each contributed. Not a black-box score — a breakdown: this memory ranked first on meaning, second in the graph, fourth on affect.

For a harness builder that changes the work. When recall is wrong you can see which lens was wrong and reweight it. When it is right you can see why, and design for it. Per-signal attribution gives memory a measurable failure mode and weights to adjust against it, instead of behaviour you can only see in aggregate.

Per-result breakdown: which signals surfaced it, and how much each contributed.

Behind the scenes

The robot is becoming better, and we’re working day and night to ensure it.

The platform

Memory is the first organ

Relationship graphs, world models, self-revising knowledge bases, run plans, multi-embodiment and boundaries that hold at read time — designed together, and held to a written set of guarantees about what may happen to a memory.