[{"data":1,"prerenderedAt":995},["ShallowReactive",2],{"navigation":3,"\u002Fblog\u002Fshared-memory-for-multi-agent-ai":197},[4,18,105],{"title":5,"path":6,"stem":7,"children":8,"page":17},"Blog","\u002Fblog","blog",[9,13],{"title":10,"path":11,"stem":12},"I Believe We Need a New Class of Agents: Officers","\u002Fblog\u002Fofficers-a-new-class-of-agents","blog\u002Fofficers-a-new-class-of-agents",{"title":14,"path":15,"stem":16},"Shared memory for multi-agent AI systems","\u002Fblog\u002Fshared-memory-for-multi-agent-ai","blog\u002Fshared-memory-for-multi-agent-ai",false,{"title":19,"path":20,"stem":21,"children":22,"page":17},"Docs","\u002Fdocs","docs",[23,27,31,60,93,97,101],{"title":24,"path":25,"stem":26},"What is Akashik?","\u002Fdocs\u002Fintroduction","docs\u002F1.introduction",{"title":28,"path":29,"stem":30},"Quickstart","\u002Fdocs\u002Fquickstart","docs\u002F2.quickstart",{"title":32,"path":33,"stem":34,"children":35,"page":17},"Concepts","\u002Fdocs\u002Fconcepts","docs\u002F3.concepts",[36,40,44,48,52,56],{"title":37,"path":38,"stem":39},"The Field","\u002Fdocs\u002Fconcepts\u002Ffield","docs\u002F3.concepts\u002F1.field",{"title":41,"path":42,"stem":43},"Writing with Intent","\u002Fdocs\u002Fconcepts\u002Fwriting-with-intent","docs\u002F3.concepts\u002F2.writing-with-intent",{"title":45,"path":46,"stem":47},"Attunement","\u002Fdocs\u002Fconcepts\u002Fattunement","docs\u002F3.concepts\u002F3.attunement",{"title":49,"path":50,"stem":51},"Conflicts","\u002Fdocs\u002Fconcepts\u002Fconflicts","docs\u002F3.concepts\u002F4.conflicts",{"title":53,"path":54,"stem":55},"Draft Lifecycle","\u002Fdocs\u002Fconcepts\u002Fdraft-lifecycle","docs\u002F3.concepts\u002F5.draft-lifecycle",{"title":57,"path":58,"stem":59},"Managing Entries","\u002Fdocs\u002Fconcepts\u002Fmanaging-entries","docs\u002F3.concepts\u002F6.managing-entries",{"title":61,"path":62,"stem":63,"children":64,"page":17},"Reference","\u002Fdocs\u002Freference","docs\u002F4.reference",[65,69,73,77,81,85,89],{"title":66,"path":67,"stem":68},"createField","\u002Fdocs\u002Freference\u002Fcreate-field","docs\u002F4.reference\u002F1.create-field",{"title":70,"path":71,"stem":72},"write \u002F read","\u002Fdocs\u002Freference\u002Fwrite-read","docs\u002F4.reference\u002F2.write-read",{"title":74,"path":75,"stem":76},"attune \u002F reckon","\u002Fdocs\u002Freference\u002Fattune-reckon","docs\u002F4.reference\u002F3.attune-reckon",{"title":78,"path":79,"stem":80},"register \u002F deregister","\u002Fdocs\u002Freference\u002Fregister","docs\u002F4.reference\u002F4.register",{"title":82,"path":83,"stem":84},"draft \u002F commit \u002F discard","\u002Fdocs\u002Freference\u002Fdraft-lifecycle","docs\u002F4.reference\u002F5.draft-lifecycle",{"title":86,"path":87,"stem":88},"retract \u002F supersede","\u002Fdocs\u002Freference\u002Fretract-supersede","docs\u002F4.reference\u002F6.retract-supersede",{"title":90,"path":91,"stem":92},"Errors","\u002Fdocs\u002Freference\u002Ferrors","docs\u002F4.reference\u002F7.errors",{"title":94,"path":95,"stem":96},"Conformance Levels","\u002Fdocs\u002Fconformance","docs\u002F5.conformance",{"title":98,"path":99,"stem":100},"Why Akashik Exists","\u002Fdocs\u002Fwhy","docs\u002F6.why",{"title":102,"path":103,"stem":104},"Roadmap","\u002Fdocs\u002Froadmap","docs\u002F7.roadmap",{"title":106,"path":107,"stem":108,"children":109,"page":17},"Specifications","\u002Fspecifications","specifications",[110],{"title":111,"path":112,"stem":113,"children":114},"Specification v0.1.0-draft","\u002Fspecifications\u002Fdraft","specifications\u002F4.draft\u002F1.index",[115,116,141,182,186,189,193],{"title":111,"path":112,"stem":113},{"title":117,"path":118,"stem":119,"children":120,"page":17},"Types","\u002Fspecifications\u002Fdraft\u002Ftypes","specifications\u002F4.draft\u002F2.types",[121,125,129,133,137],{"title":122,"path":123,"stem":124},"MemoryUnit","\u002Fspecifications\u002Fdraft\u002Ftypes\u002Fmemory-unit","specifications\u002F4.draft\u002F2.types\u002F1.memory-unit",{"title":126,"path":127,"stem":128},"Agent","\u002Fspecifications\u002Fdraft\u002Ftypes\u002Fagent","specifications\u002F4.draft\u002F2.types\u002F2.agent",{"title":130,"path":131,"stem":132},"Scope","\u002Fspecifications\u002Fdraft\u002Ftypes\u002Fscope","specifications\u002F4.draft\u002F2.types\u002F3.scope",{"title":134,"path":135,"stem":136},"Conflict","\u002Fspecifications\u002Fdraft\u002Ftypes\u002Fconflict","specifications\u002F4.draft\u002F2.types\u002F4.conflict",{"title":138,"path":139,"stem":140},"Message Envelope","\u002Fspecifications\u002Fdraft\u002Ftypes\u002Fmessage-envelope","specifications\u002F4.draft\u002F2.types\u002F5.message-envelope",{"title":142,"path":143,"stem":144,"children":145,"page":17},"Operations","\u002Fspecifications\u002Fdraft\u002Foperations","specifications\u002F4.draft\u002F3.operations",[146,150,154,158,162,166,170,174,178],{"title":147,"path":148,"stem":149},"RECORD","\u002Fspecifications\u002Fdraft\u002Foperations\u002Frecord","specifications\u002F4.draft\u002F3.operations\u002F1.record",{"title":151,"path":152,"stem":153},"ATTUNE","\u002Fspecifications\u002Fdraft\u002Foperations\u002Fattune","specifications\u002F4.draft\u002F3.operations\u002F2.attune",{"title":155,"path":156,"stem":157},"REGISTER","\u002Fspecifications\u002Fdraft\u002Foperations\u002Fregister","specifications\u002F4.draft\u002F3.operations\u002F3.register",{"title":159,"path":160,"stem":161},"DEREGISTER","\u002Fspecifications\u002Fdraft\u002Foperations\u002Fderegister","specifications\u002F4.draft\u002F3.operations\u002F4.deregister",{"title":163,"path":164,"stem":165},"DETECT","\u002Fspecifications\u002Fdraft\u002Foperations\u002Fdetect","specifications\u002F4.draft\u002F3.operations\u002F5.detect",{"title":167,"path":168,"stem":169},"MERGE","\u002Fspecifications\u002Fdraft\u002Foperations\u002Fmerge","specifications\u002F4.draft\u002F3.operations\u002F6.merge",{"title":171,"path":172,"stem":173},"SUBSCRIBE","\u002Fspecifications\u002Fdraft\u002Foperations\u002Fsubscribe","specifications\u002F4.draft\u002F3.operations\u002F7.subscribe",{"title":175,"path":176,"stem":177},"REPLAY","\u002Fspecifications\u002Fdraft\u002Foperations\u002Freplay","specifications\u002F4.draft\u002F3.operations\u002F8.replay",{"title":179,"path":180,"stem":181},"COMPACT","\u002Fspecifications\u002Fdraft\u002Foperations\u002Fcompact","specifications\u002F4.draft\u002F3.operations\u002F9.compact",{"title":183,"path":184,"stem":185},"Error Model","\u002Fspecifications\u002Fdraft\u002Ferrors","specifications\u002F4.draft\u002F4.errors",{"title":94,"path":187,"stem":188},"\u002Fspecifications\u002Fdraft\u002Fconformance","specifications\u002F4.draft\u002F5.conformance",{"title":190,"path":191,"stem":192},"Transport Bindings","\u002Fspecifications\u002Fdraft\u002Ftransport","specifications\u002F4.draft\u002F6.transport",{"title":194,"path":195,"stem":196},"Security","\u002Fspecifications\u002Fdraft\u002Fsecurity","specifications\u002F4.draft\u002F7.security",{"id":198,"title":14,"author":199,"body":200,"date":989,"description":990,"extension":991,"meta":992,"navigation":331,"path":15,"seo":993,"stem":16,"__hash__":994},"blog\u002Fblog\u002Fshared-memory-for-multi-agent-ai.md","Sahil David",{"type":201,"value":202,"toc":980},"minimark",[203,207,210,218,221,227,232,235,238,241,244,247,251,254,260,266,272,275,279,282,657,660,663,778,781,784,788,791,857,879,883,886,912,919,923,926,929,932,935,938,942,950,970,973,976],[204,205,206],"p",{},"When two AI agents disagree about a fact, the systems lose the disagreement entirely. One agent writes a value. Another writes over it. The first version is gone, along with the reasoning that produced it.",[204,208,209],{},"AI agents are brilliant individuals with amnesia, no way to talk to each other, and no project manager.",[204,211,212,213,217],{},"This is the situation Akashik is built to change. v0.2 ships today, June 20, 2026, on npm as ",[214,215,216],"code",{},"@akashikprotocol\u002Fcore",". It is the Level 0 reference implementation of an open protocol for shared memory in multi-agent AI systems.",[204,219,220],{},"The thesis is one sentence.",[222,223,224],"blockquote",{},[204,225,226],{},"The protocol decides what is relevant and detects disagreement; the agent decides resolution.",[228,229,231],"h2",{"id":230},"what-memory-is-and-what-most-systems-substitute-for-it","What memory is, and what most systems substitute for it",[204,233,234],{},"Two paths dominate multi-agent systems today.",[204,236,237],{},"The first is message passing. Agents talk to each other directly, like Slack threads or HTTP calls. Each agent holds a partial view of the conversation, summarised down to fit context windows. As conversations branch, the summaries diverge. By the third turn, two agents working on the same task have different mental models of what was said. Frameworks like CrewAI and AutoGen optimise this approach and do their job well within its limits. The limit is that long-running coordination eats context, and once context is lost, it is gone.",[204,239,240],{},"The second is shared databases. Agents write to a common store — Redis, Postgres, a vector database. Reads are fast. Writes are durable. But the database has no opinion about meaning. It stores values, not why they were written. Two agents writing to the same key produce a last-write-wins state, and the first agent's view is silently overwritten. The disagreement disappears.",[204,242,243],{},"Neither path carries the reasoning behind a piece of state. An agent reading shared memory cannot tell why the value was written, what question it was answering, or whether another agent has since recorded something that contradicts it.",[204,245,246],{},"Akashik sits between these two paths. It is shared memory rather than shared state — memory because it carries the why of every write, not just the what. The protocol decides what to surface when an agent asks, scored and sorted. When two writes disagree, it surfaces the disagreement explicitly so the agent can reason about it before acting.",[228,248,250],{"id":249},"the-three-primitives","The three primitives",[204,252,253],{},"Three operations carry the protocol. Their names are deliberate.",[204,255,256,259],{},[214,257,258],{},"write"," — record an observation, with an intent string that states why it matters. Intent is mandatory. There is no path through the SDK that produces a state change without an associated intent. The minimum length is enforceable per-field, defaulting to 10 characters. The protocol thesis is that intent makes multi-agent state legible; the design enforces the thesis.",[204,261,262,265],{},[214,263,264],{},"attune"," — receive what is relevant to the calling agent's role and topic, scored and sorted by the protocol. Attune is not a database query. It is a relevance ranking. Each returned entry carries a score and a structured reason explaining why it was surfaced — topic match, role match, recency, intent quality.",[204,267,268,271],{},[214,269,270],{},"reckon"," — the deeper reading operation. Reckon surfaces the same relevant entries that attune would, plus the conflicts among them. Two agents writing different values to the same topic produce a real disagreement; reckon makes that disagreement legible, with the specific keys that differ. The agent then decides resolution.",[204,273,274],{},"These three primitives are enough to build a multi-agent system that does not lose context the way message passing does, and does not lose disagreement the way a shared database does.",[228,276,278],{"id":277},"a-worked-example","A worked example",[204,280,281],{},"Two agents observing the same competitor, recording different prices.",[283,284,289],"pre",{"className":285,"code":286,"language":287,"meta":288,"style":288},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { createField } from \"@akashikprotocol\u002Fcore\";\n\nconst field = createField();\n\nawait field.register({ id: \"researcher\", role: \"researcher\" });\nawait field.register({ id: \"fact-checker\", role: \"researcher\" });\n\nawait field.write({\n  entry: { topic: \"competitor-pricing\", price: \"$49\u002Fmo\" },\n  intent: \"documenting competitor pricing observed on g2\",\n  agent: \"researcher\",\n});\n\nawait field.write({\n  entry: { topic: \"competitor-pricing\", price: \"$39\u002Fmo\" },\n  intent: \"fact-checker correction after verifying competitor site directly\",\n  agent: \"fact-checker\",\n});\n","typescript","",[214,290,291,326,333,354,359,415,459,464,480,519,537,553,563,568,583,617,633,648],{"__ignoreMap":288},[292,293,296,300,304,308,311,314,317,320,323],"span",{"class":294,"line":295},"line",1,[292,297,299],{"class":298},"s7zQu","import",[292,301,303],{"class":302},"sMK4o"," {",[292,305,307],{"class":306},"sTEyZ"," createField",[292,309,310],{"class":302}," }",[292,312,313],{"class":298}," from",[292,315,316],{"class":302}," \"",[292,318,216],{"class":319},"sfazB",[292,321,322],{"class":302},"\"",[292,324,325],{"class":302},";\n",[292,327,329],{"class":294,"line":328},2,[292,330,332],{"emptyLinePlaceholder":331},true,"\n",[292,334,336,340,343,346,349,352],{"class":294,"line":335},3,[292,337,339],{"class":338},"spNyl","const",[292,341,342],{"class":306}," field ",[292,344,345],{"class":302},"=",[292,347,307],{"class":348},"s2Zo4",[292,350,351],{"class":306},"()",[292,353,325],{"class":302},[292,355,357],{"class":294,"line":356},4,[292,358,332],{"emptyLinePlaceholder":331},[292,360,362,365,368,371,374,377,380,384,387,389,392,394,397,400,402,404,406,408,410,413],{"class":294,"line":361},5,[292,363,364],{"class":298},"await",[292,366,367],{"class":306}," field",[292,369,370],{"class":302},".",[292,372,373],{"class":348},"register",[292,375,376],{"class":306},"(",[292,378,379],{"class":302},"{",[292,381,383],{"class":382},"swJcz"," id",[292,385,386],{"class":302},":",[292,388,316],{"class":302},[292,390,391],{"class":319},"researcher",[292,393,322],{"class":302},[292,395,396],{"class":302},",",[292,398,399],{"class":382}," role",[292,401,386],{"class":302},[292,403,316],{"class":302},[292,405,391],{"class":319},[292,407,322],{"class":302},[292,409,310],{"class":302},[292,411,412],{"class":306},")",[292,414,325],{"class":302},[292,416,418,420,422,424,426,428,430,432,434,436,439,441,443,445,447,449,451,453,455,457],{"class":294,"line":417},6,[292,419,364],{"class":298},[292,421,367],{"class":306},[292,423,370],{"class":302},[292,425,373],{"class":348},[292,427,376],{"class":306},[292,429,379],{"class":302},[292,431,383],{"class":382},[292,433,386],{"class":302},[292,435,316],{"class":302},[292,437,438],{"class":319},"fact-checker",[292,440,322],{"class":302},[292,442,396],{"class":302},[292,444,399],{"class":382},[292,446,386],{"class":302},[292,448,316],{"class":302},[292,450,391],{"class":319},[292,452,322],{"class":302},[292,454,310],{"class":302},[292,456,412],{"class":306},[292,458,325],{"class":302},[292,460,462],{"class":294,"line":461},7,[292,463,332],{"emptyLinePlaceholder":331},[292,465,467,469,471,473,475,477],{"class":294,"line":466},8,[292,468,364],{"class":298},[292,470,367],{"class":306},[292,472,370],{"class":302},[292,474,258],{"class":348},[292,476,376],{"class":306},[292,478,479],{"class":302},"{\n",[292,481,483,486,488,490,493,495,497,500,502,504,507,509,511,514,516],{"class":294,"line":482},9,[292,484,485],{"class":382},"  entry",[292,487,386],{"class":302},[292,489,303],{"class":302},[292,491,492],{"class":382}," topic",[292,494,386],{"class":302},[292,496,316],{"class":302},[292,498,499],{"class":319},"competitor-pricing",[292,501,322],{"class":302},[292,503,396],{"class":302},[292,505,506],{"class":382}," price",[292,508,386],{"class":302},[292,510,316],{"class":302},[292,512,513],{"class":319},"$49\u002Fmo",[292,515,322],{"class":302},[292,517,518],{"class":302}," },\n",[292,520,522,525,527,529,532,534],{"class":294,"line":521},10,[292,523,524],{"class":382},"  intent",[292,526,386],{"class":302},[292,528,316],{"class":302},[292,530,531],{"class":319},"documenting competitor pricing observed on g2",[292,533,322],{"class":302},[292,535,536],{"class":302},",\n",[292,538,540,543,545,547,549,551],{"class":294,"line":539},11,[292,541,542],{"class":382},"  agent",[292,544,386],{"class":302},[292,546,316],{"class":302},[292,548,391],{"class":319},[292,550,322],{"class":302},[292,552,536],{"class":302},[292,554,556,559,561],{"class":294,"line":555},12,[292,557,558],{"class":302},"}",[292,560,412],{"class":306},[292,562,325],{"class":302},[292,564,566],{"class":294,"line":565},13,[292,567,332],{"emptyLinePlaceholder":331},[292,569,571,573,575,577,579,581],{"class":294,"line":570},14,[292,572,364],{"class":298},[292,574,367],{"class":306},[292,576,370],{"class":302},[292,578,258],{"class":348},[292,580,376],{"class":306},[292,582,479],{"class":302},[292,584,586,588,590,592,594,596,598,600,602,604,606,608,610,613,615],{"class":294,"line":585},15,[292,587,485],{"class":382},[292,589,386],{"class":302},[292,591,303],{"class":302},[292,593,492],{"class":382},[292,595,386],{"class":302},[292,597,316],{"class":302},[292,599,499],{"class":319},[292,601,322],{"class":302},[292,603,396],{"class":302},[292,605,506],{"class":382},[292,607,386],{"class":302},[292,609,316],{"class":302},[292,611,612],{"class":319},"$39\u002Fmo",[292,614,322],{"class":302},[292,616,518],{"class":302},[292,618,620,622,624,626,629,631],{"class":294,"line":619},16,[292,621,524],{"class":382},[292,623,386],{"class":302},[292,625,316],{"class":302},[292,627,628],{"class":319},"fact-checker correction after verifying competitor site directly",[292,630,322],{"class":302},[292,632,536],{"class":302},[292,634,636,638,640,642,644,646],{"class":294,"line":635},17,[292,637,542],{"class":382},[292,639,386],{"class":302},[292,641,316],{"class":302},[292,643,438],{"class":319},[292,645,322],{"class":302},[292,647,536],{"class":302},[292,649,651,653,655],{"class":294,"line":650},18,[292,652,558],{"class":302},[292,654,412],{"class":306},[292,656,325],{"class":302},[204,658,659],{},"Two writes on the same topic. Two different prices. In a shared database, the second write overwrites the first; the researcher's observation is gone. In Akashik, both writes persist, each with its intent attached.",[204,661,662],{},"A third agent now reckons with the field before acting:",[283,664,666],{"className":285,"code":665,"language":287,"meta":288,"style":288},"const result = await field.reckon({\n  agent: \"writer\",\n  topic: \"competitor-pricing\",\n});\n\nconsole.log(result.conflicts);\n\u002F\u002F → [{\n\u002F\u002F     a: \u003Cresearcher entry>,\n\u002F\u002F     b: \u003Cfact-checker entry>,\n\u002F\u002F     keys: [\"price\"]\n\u002F\u002F   }]\n",[214,667,668,690,705,720,728,732,752,758,763,768,773],{"__ignoreMap":288},[292,669,670,672,675,677,680,682,684,686,688],{"class":294,"line":295},[292,671,339],{"class":338},[292,673,674],{"class":306}," result ",[292,676,345],{"class":302},[292,678,679],{"class":298}," await",[292,681,367],{"class":306},[292,683,370],{"class":302},[292,685,270],{"class":348},[292,687,376],{"class":306},[292,689,479],{"class":302},[292,691,692,694,696,698,701,703],{"class":294,"line":328},[292,693,542],{"class":382},[292,695,386],{"class":302},[292,697,316],{"class":302},[292,699,700],{"class":319},"writer",[292,702,322],{"class":302},[292,704,536],{"class":302},[292,706,707,710,712,714,716,718],{"class":294,"line":335},[292,708,709],{"class":382},"  topic",[292,711,386],{"class":302},[292,713,316],{"class":302},[292,715,499],{"class":319},[292,717,322],{"class":302},[292,719,536],{"class":302},[292,721,722,724,726],{"class":294,"line":356},[292,723,558],{"class":302},[292,725,412],{"class":306},[292,727,325],{"class":302},[292,729,730],{"class":294,"line":361},[292,731,332],{"emptyLinePlaceholder":331},[292,733,734,737,739,742,745,747,750],{"class":294,"line":417},[292,735,736],{"class":306},"console",[292,738,370],{"class":302},[292,740,741],{"class":348},"log",[292,743,744],{"class":306},"(result",[292,746,370],{"class":302},[292,748,749],{"class":306},"conflicts)",[292,751,325],{"class":302},[292,753,754],{"class":294,"line":461},[292,755,757],{"class":756},"sHwdD","\u002F\u002F → [{\n",[292,759,760],{"class":294,"line":466},[292,761,762],{"class":756},"\u002F\u002F     a: \u003Cresearcher entry>,\n",[292,764,765],{"class":294,"line":482},[292,766,767],{"class":756},"\u002F\u002F     b: \u003Cfact-checker entry>,\n",[292,769,770],{"class":294,"line":521},[292,771,772],{"class":756},"\u002F\u002F     keys: [\"price\"]\n",[292,774,775],{"class":294,"line":539},[292,776,777],{"class":756},"\u002F\u002F   }]\n",[204,779,780],{},"The writer sees both entries, ranked by relevance, and sees the conflict between them. The protocol does not pick a winner. It surfaces the disagreement clearly. The writer agent — which knows things the protocol cannot know, like that fact-checker observations supersede initial research — decides what to do.",[204,782,783],{},"This is the case Akashik is built to handle. Not a fancy database query. Not a more elegant message bus. A protocol that treats disagreement as information, not as noise.",[228,785,787],{"id":786},"what-shipped-in-v02","What shipped in v0.2",[204,789,790],{},"The v0.2 release reaches full Level 0 conformance against the Akashik Protocol Specification, plus four Level 1 operations that complete natural lifecycle stories.",[792,793,794,802,813,830,841,849],"ul",{},[795,796,797,801],"li",{},[798,799,800],"strong",{},"Standard message envelope."," Every operation is wrapped in a typed envelope before processing. The wire format is locked even though v0.2 does not yet cross a transport.",[795,803,804,812],{},[798,805,806,808,809,370],{},[214,807,373],{}," and ",[214,810,811],{},"deregister"," Agents declare identity and role. Sessions are tracked. Registration is optional in v0.2 — v0.1 code that never registers still works — but role-aware relevance scoring is unlocked by registration.",[795,814,815,818,819,822,823,822,826,829],{},[798,816,817],{},"Draft lifecycle."," ",[214,820,821],{},"draft",", ",[214,824,825],{},"commit",[214,827,828],{},"discard",". Agents can record observations privately, review, and either publish or discard. Drafts are visible only to their author until committed.",[795,831,832,840],{},[798,833,834,808,837,370],{},[214,835,836],{},"retract",[214,838,839],{},"supersede"," Withdraw a committed entry, or replace it with a newer one. Supersession chains resolve: agents always see the latest in any chain, never the intermediate versions.",[795,842,843,848],{},[798,844,845,847],{},[214,846,270],{}," — mechanical conflict detection."," Two entries on the same topic with disagreeing primitive values produce a surfaced conflict. The protocol detects; the agent decides.",[795,850,851,856],{},[798,852,853,854,370],{},"Relevance scoring on ",[214,855,264],{}," Topic match, role match, recency, and intent quality contribute to a single score per entry. Entries are returned sorted by score, with the breakdown attached.",[204,858,859,860,867,868,873,874,370],{},"Full surface documentation lives in the ",[861,862,866],"a",{"href":863,"rel":864},"https:\u002F\u002Fgithub.com\u002Fakashikprotocol\u002Fcore\u002Fblob\u002Fmain\u002Fdocs\u002FATTUNE.md",[865],"nofollow","API reference",", the ",[861,869,872],{"href":870,"rel":871},"https:\u002F\u002Fgithub.com\u002Fakashikprotocol\u002Fcore\u002Fblob\u002Fmain\u002Fdocs\u002FRECKON.md",[865],"reckon deep-dive",", and the ",[861,875,878],{"href":876,"rel":877},"https:\u002F\u002Fgithub.com\u002Fakashikprotocol\u002Fcore\u002Fblob\u002Fmain\u002Fspecs\u002Froadmap.md",[865],"conformance comparison",[228,880,882],{"id":881},"what-v02-deliberately-does-not-do","What v0.2 deliberately does not do",[204,884,885],{},"The protocol is layered into four conformance levels, and v0.2 reaches the first one fully. Each level adds capability that does not depend on the next being available. Reading the levels honestly means stating what is missing.",[792,887,888,894,900,906],{},[795,889,890,893],{},[798,891,892],{},"No persistent storage."," Fields are in-memory only. Persistence arrives in v0.3 with Level 1 conformance.",[795,895,896,899],{},[798,897,898],{},"No event log."," Operation history is not preserved beyond what current state reconstructs. Also v0.3.",[795,901,902,905],{},[798,903,904],{},"No vector embeddings or semantic relevance."," v0.2's scoring is feature-weighted; semantic scoring arrives in v0.4 with Level 2.",[795,907,908,911],{},[798,909,910],{},"No transport bindings."," The envelope is constructed and validated, but does not cross a wire. Transport is v0.5 with Level 3.",[204,913,914,915,370],{},"These absences are scoped, not accidental. Each one maps to a specific conformance level that arrives with its own release. The full roadmap is published at ",[861,916,918],{"href":876,"rel":917},[865],"github.com\u002Fakashikprotocol\u002Fcore\u002Fblob\u002Fmain\u002Fspecs\u002Froadmap.md",[228,920,922],{"id":921},"why-this-order-matters","Why this order matters",[204,924,925],{},"I shipped v0.1 deliberately small. Three primitives, mandatory intent, the foundation of the protocol's vocabulary. v0.2 expanded the surface because the foundation was stable enough to build on, not because the calendar said it was time.",[204,927,928],{},"The temptation when building a protocol is to ship everything at once. Persistence, semantic relevance, transport bindings, authentication — all in the first public release, because the gaps look like incompleteness.",[204,930,931],{},"Akashik is deliberately built the other way. Each conformance level is shipped when it can be implemented honestly at that level. The mechanical conflict detection in v0.2 is not a stepping stone away from semantic detection; it is the foundation that semantic detection (in v0.4) builds on. The in-memory implementation in v0.2 is not a placeholder for persistence; it is the shape that a persistent adapter (in v0.3) plugs into without rewriting.",[204,933,934],{},"This is the discipline that produced v0.2 with 280 tests, full Level 0 conformance, and a clean architectural foundation. It is the same discipline that will produce v0.3, v0.4, v0.5, and eventually v1.0.",[204,936,937],{},"It is also the discipline that lets other implementations follow. The Akashik Protocol Specification is canonical. This SDK is one implementation. Anyone can build an implementation in any language at any conformance level, and the conformance ratchet — once a level is claimed, that level's requirements are permanent commitments — keeps every implementation honest.",[228,939,941],{"id":940},"try-it","Try it",[283,943,948],{"className":944,"code":946,"language":947},[945],"language-text","npm install @akashikprotocol\u002Fcore\n","text",[214,949,946],{"__ignoreMap":288},[204,951,952,953,958,959,964,965,370],{},"Then read the ",[861,954,957],{"href":955,"rel":956},"https:\u002F\u002Fgithub.com\u002Fakashikprotocol\u002Fcore",[865],"README",", run the ",[861,960,963],{"href":961,"rel":962},"https:\u002F\u002Fgithub.com\u002Fakashikprotocol\u002Fcore\u002Fblob\u002Fmain\u002Fexamples\u002Fconflict.ts",[865],"conflict example",", and build something with it. The protocol is open. The reference implementation is on npm. The spec is at ",[861,966,969],{"href":967,"rel":968},"https:\u002F\u002Fgithub.com\u002Fakashikprotocol\u002Fspec",[865],"github.com\u002Fakashikprotocol\u002Fspec",[204,971,972],{},"Tell me what breaks. I will read every issue.",[204,974,975],{},"— Sahil David",[977,978,979],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":288,"searchDepth":295,"depth":328,"links":981},[982,983,984,985,986,987,988],{"id":230,"depth":328,"text":231},{"id":249,"depth":328,"text":250},{"id":277,"depth":328,"text":278},{"id":786,"depth":328,"text":787},{"id":881,"depth":328,"text":882},{"id":921,"depth":328,"text":922},{"id":940,"depth":328,"text":941},"2026-06-21","Akashik is shared memory for multi-agent AI systems. Not a shared database. Not a message bus. A third thing.","md",{},{"title":14,"description":990},"MqQW3wxvmwqavbWrJN30OasebExgkE6fSTO34SQlqIU",1782825661651]