Akashik Protocol
Concepts

Memory Units

The atomic unit of knowledge in the Akashik Protocol.

Definition

A MemoryUnit is the atomic unit of knowledge in the protocol. Every finding, decision, observation, question, or intention recorded by an agent is a MemoryUnit. It is typed, intent-bearing, and immutable once committed — a committed unit's content cannot be changed. To update or correct information, record a new unit with a supersedes or correction relation pointing to the original.

Two things that make them different

Intent is required. Every MemoryUnit MUST include an intent field declaring why it was recorded. A unit without intent is rejected by the Field. This ensures any agent — or human — can understand not just what was found, but what question it was answering.

Confidence is explicit (Level 1+). At Level 1 and above, every committed unit MUST include a confidence score and reasoning. This creates an auditable chain where the certainty behind every finding is transparent.

Recording a unit

await researcher.record({
  mode: 'committed',
  type: 'finding',
  content: 'Segment B has no dominant player above 15% market share.',
  intent: {
    purpose: 'Establish competitive baseline for Segment B',
    question: 'Is Segment B fragmented enough to enter?'
  },
  confidence: {
    score: 0.9,
    reasoning: 'Consistent across four independent data sources.',
    evidence: ['source-a', 'source-b', 'source-c', 'source-d']
  }
})

The Field auto-generates id, epoch, source, status, and timestamp. Agents MUST NOT provide these.

Fields

FieldRequiredDescription
typeSemantic category. See types below.
contentThe knowledge payload. Must be non-empty.
intent.purposeWhy this unit was recorded. Required at all levels.
intent.task_idThe task this unit serves.
intent.questionThe question this unit answers or poses.
confidence.scoreLevel 1+ committedCertainty between 0.0 and 1.0.
confidence.reasoningLevel 1+ committedWhy this confidence was assigned.
confidence.evidenceSupporting sources.
confidence.assumptionsWhat is assumed to be true.
relationsLinks to other MemoryUnits.

Types

The core type vocabulary:

TypeDescription
findingA discovered fact or data point
decisionA choice made by an agent or human
observationA subjective assessment or interpretation
intentionA declared plan or next step
assumptionSomething taken as true without verification
constraintA limitation or boundary condition
questionAn open question that needs answering
contradictionAn explicit flag that two findings conflict
synthesisA combination of multiple findings into a conclusion
correctionAn explicit correction of a prior unit
human_directiveInput from a human operator

Implementations MUST support at minimum: finding, decision, observation, and question.

Relations

MemoryUnits can be linked to each other using typed relations:

RelationDescription
supportsThis unit provides evidence for the target
contradictsThis unit conflicts with the target — triggers conflict detection
depends_onThis unit assumes the target is true
supersedesThis unit replaces the target
caused_byThis unit exists because of the target
elaboratesThis unit adds detail to the target
answersThis unit answers a question posed by the target
blocksThis unit prevents progress on the target
informsThis unit provides useful context for the target
await researcher2.record({
  type: 'finding',
  content: 'Growth decelerating to 14% CAGR.',
  intent: { purpose: 'Update market projection with Q4 data' },
  confidence: { score: 0.75, reasoning: 'Single source.' },
  relations: [{
    type: 'contradicts',
    target_id: 'mem-001',
    description: 'Original estimate was 23% CAGR; new data suggests 14%'
  }]
})
// Field automatically creates a Conflict object

Draft vs committed

Draft mode is lightweight. Only type, content, and intent.purpose are required. Confidence is optional. Use draft mode for quick captures. The Field sets status to "draft".

Committed mode enforces full validation. At Level 1+, confidence is required. The Field sets status to "active".

// Quick draft capture
await agent.record({
  mode: 'draft',
  type: 'observation',
  content: 'User interviews suggest pricing sensitivity is high in SMB segment.',
  intent: { purpose: 'Flag for follow-up research' }
})

Next

  • Attunement — how other agents receive your units
  • Conflicts — what happens when two units contradict each other