Skip to content

LoomThread

A thread: one memory. Weak alone, powerful when woven.

Its standing in the loom is its salience, weight × (1 − fray). Time alone never changes it: a thread frays only when it is put in front of an agent and goes unused, and tightens again when it is used. A thread accessed yesterday and one accessed five years ago stand equal if both still matter. The one exception is a thread that says when it stops holding (until): after that it is no longer woken into or offered.

Threads are never deleted by forgetting. A cut releases the words and leaves a knot (knot); a reframe leaves a seam (seams). Only a tenant admin’s erasure removes a thread, and that exists for data-subject erasure, not for memory.

Kind: an object, used in responses.

Every field is present in a response; empty ones are null.

FieldTypeDescription
loomIduuidThe loom that holds the thread.
contentstringThe thread’s words. Empty once cut; the knot keeps the essence.
kindThreadKindWhat kind of memory it is.
strandThreadStrandWarp (foundational, never frays) or weft (contextual, can fray).
weightnumber0..1: emotional significance, importance, meaning.
fraynumber0..1: how loose the thread has worked through disuse. Warp never frays.
decayRateDecayRateHow quickly it frays when it is offered and goes unused.
subjectsstring[]Who or what the thread is about, as named in conversation (“Ada”, “the billing service”).
subjectKeysstring[]The subjects, normalised (lowercase, single-spaced) for matching.
tagsstring[]Free-form tags.
cuesstring[]Words the thread waits for (normalised: lowercase, single-spaced). When someone says one, the thread comes back to the agent that holds it: “remind me when the cello comes up”.
visibilityThreadVisibilityWhether every agent bound to the loom may see it, or only the agent that wove it.
untildatetime | nullWhen this stops holding, if it says: the day a reminder no longer matters (“the entry closes on Friday 30 October 2026”), or a plan has passed. After it, the thread is no longer woken into or offered; recall still finds it, marked as past. Null: it holds until it is let go.
basisThreadBasisWhat it rests on: said, the agent’s own impression, or read somewhere (see ThreadBasis).
pinnedbooleanHeld close: always part of what the agent wakes up knowing.
originThreadOriginWho wove the thread, and from where.
companionsThreadCompanion[]Threads this one has been used together with (see ThreadCompanion).
provenanceThreadProvenance| nullSet when the thread came from another loom (a gift, or inheritance when the loom was seeded). Null for a thread woven here, which is almost all of them.
canTravelbooleanWhether this thread may be copied to another loom. Only shared knowledge travels: never a knot, a private note, a reflection (another agent’s inner voice), an episode (a moment the recipient did not live, which would be a fabricated memory rather than knowledge), or an intention (a promise made to someone else). Set by Maitento.
accessCountintegerTimes recalled or used.
lastAccessedAtdatetime | nullWhen the thread was last recalled or used (UTC). Null if it never has been.
surfacedCountintegerTimes put in front of an agent (tapestry, suggestion, recall result).
lastSurfacedAtdatetime | nullWhen the thread was last put in front of an agent (UTC). Null if it never has been.
reinforcementsintegerTimes the same thread was woven again and reinforced instead of duplicated.
knotThreadKnot| nullWhat remains of a cut thread: when and why it was let go, and its essence. Null on a living thread.
seamsThreadSeam[]The seams its reframes left, oldest first: what it said before each change, and why it changed.
revisionintegerGoes up by one every time the thread is reframed, cut or pinned.
isKnotbooleanTrue when the thread has been cut and only its knot remains. Set by Maitento.
isWarpbooleanTrue when the thread is warp: foundational, and never frays. Set by Maitento.
isIntentionbooleanTrue when the thread is an intention: something to do when its moment comes. Set by Maitento.
isLoosebooleanHeld loosely: an impression, or something read rather than said. Lighter, and never built on. Set by Maitento.
saliencenumberStanding in the loom: weight, loosened by fraying. Warp never frays. Set by Maitento.
shortIdstringThe 8-character id agents see and can refer back to. Set by Maitento.
tenantIduuidThe id of the tenant it belongs to.
iduuidThe unique id. Use it in by-id routes and wherever another object refers to this one.
dateCreateddatetimeWhen it was created, in UTC.
dateUpdateddatetimeWhen it was last changed, in UTC.
{
"loomId": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
"content": "...",
"kind": "Semantic",
"strand": "Weft",
"weight": 0,
"fray": 0,
"decayRate": "Normal",
"subjects": [
"..."
],
"subjectKeys": [
"..."
],
"tags": [
"..."
],
"cues": [
"..."
],
"visibility": "Shared",
"until": "2026-10-26T12:00:00.0000000Z",
"basis": "Said",
"pinned": false,
"origin": {
"kind": "Manual",
"interactionProcessId": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
"appProcessId": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
"agentId": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
"agentName": "...",
"userId": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
"nightWeavingId": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f"
},
"companions": [
{
"threadId": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
"times": 0,
"lastAt": "2026-10-26T12:00:00.0000000Z"
}
],
"provenance": {
"kind": "Gift",
"sourceLoomId": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
"sourceLoomName": "...",
"sourceThreadId": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
"givenBy": "...",
"note": "...",
"date": "2026-10-26T12:00:00.0000000Z",
"ownedAt": "2026-10-26T12:00:00.0000000Z",
"isOwned": false
},
"canTravel": false,
"accessCount": 0,
"lastAccessedAt": "2026-10-26T12:00:00.0000000Z",
"surfacedCount": 0,
"lastSurfacedAt": "2026-10-26T12:00:00.0000000Z",
"reinforcements": 0,
"knot": {
"dateCut": "2026-10-26T12:00:00.0000000Z",
"acknowledgment": "...",
"essence": "...",
"wovenIntoThreadId": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
"supersededByThreadId": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
"cutBy": {
"kind": "Manual",
"interactionProcessId": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
"appProcessId": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
"agentId": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
"agentName": "...",
"userId": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
"nightWeavingId": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f"
}
},
"seams": [
{
"date": "2026-10-26T12:00:00.0000000Z",
"previousContent": "...",
"previousWeight": 0,
"previousStrand": "Weft",
"reason": "...",
"acknowledgment": "...",
"by": {}
}
],
"revision": 0,
"isKnot": false,
"isWarp": false,
"isIntention": false,
"isLoose": false,
"salience": 0,
"shortId": "...",
"tenantId": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
"id": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
"dateCreated": "2026-10-26T12:00:00.0000000Z",
"dateUpdated": "2026-10-26T12:00:00.0000000Z"
}