Google Cloud Introduces Open Knowledge Format (OKF): A Vendor-Neutral Markdown Spec for Giving AI Agents Curated Context

Foundation models keep getting stronger, yet they still stall on the same thing: context. A model can write code or analyze a dataset, but only with the right internal knowledge. That knowledge includes table schemas, metric definitions, runbooks, join paths and it lives scattered across catalogs, wikis, and a few senior engineers’ heads.

Google Cloud introduced the Open Knowledge Format (OKF), an open specification that formalizes the LLM-wiki pattern into a portable, interoperable format. It is a vendor-neutral, agent- and human-friendly standard for the context modern AI systems need.

Open Knowledge Format (OKF)

OKF is a format, not a service or a platform. OKF v0.1 represents knowledge as a directory of markdown files with YAML frontmatter. A small set of agreed-upon conventions lets wikis written by one producer be consumed by a different agent without translation.

That is the whole idea. There is no compression scheme, no new runtime, and no required SDK. A bundle of OKF documents is just markdown, just files, and just YAML frontmatter. It renders on GitHub, ships as a tarball, and mounts on any filesystem.

If you have used Obsidian, Notion, or Hugo, the shape will feel familiar. OKF only formalizes the conventions needed to make those patterns interoperable.

Open Knowledge Format — Live Bundle Explorer
Click a concept in the tree or a node in the graph. Cross-links inside each document are clickable.

Concept view
Graph view
Raw markdown

Nodes are concepts. Lines are markdown cross-links. Active node is green.

Marktechpost · OKF v0.1 interactive explorer · mirrors Google Cloud’s reference visualizer pattern

#mtp-okf-explorer * { box-sizing:border-box; margin:0; padding:0; }
#mtp-okf-explorer {
background:#111 !important; color:#e6e6e6 !important;
border:1px solid #262626 !important; border-radius:14px;
font-family:-apple-system,BlinkMacSystemFont,”Segoe UI”,Roboto,Helvetica,Arial,sans-serif;
max-width:920px; margin:24px auto; overflow:hidden;
}
#mtp-okf-explorer .okf-shell { display:flex; flex-direction:column; }
#mtp-okf-explorer .okf-head { padding:18px 20px 12px; border-bottom:1px solid #1d1d1d !important; }
#mtp-okf-explorer .okf-title { font-size:18px; font-weight:700; color:#fff !important; letter-spacing:-.2px; }
#mtp-okf-explorer .okf-sub { font-size:12.5px; color:#8c8c8c !important; margin-top:5px; line-height:1.5; }

#mtp-okf-explorer .okf-tabs { display:flex; gap:6px; padding:12px 16px 0; }
#mtp-okf-explorer .okf-tab {
background:#181818 !important; color:#aaa !important; border:1px solid #262626 !important;
border-bottom:none !important; padding:8px 14px; font-size:12.5px; font-weight:600;
border-radius:8px 8px 0 0; cursor:pointer; transition:.15s;
}
#mtp-okf-explorer .okf-tab:hover { color:#fff !important; }
#mtp-okf-explorer .okf-tab.okf-active { background:#111 !important; color:#76B900 !important; border-color:#333 !important; }

#mtp-okf-explorer .okf-body { display:flex; min-height:380px; border-top:1px solid #262626 !important; }
#mtp-okf-explorer .okf-tree {
width:230px; flex:none; background:#0d0d0d !important; border-right:1px solid #1d1d1d !important;
padding:12px 8px; overflow:auto; font-size:13px;
}
#mtp-okf-explorer .okf-node {
display:flex; align-items:center; gap:7px; padding:6px 9px; border-radius:7px;
cursor:pointer; color:#cfcfcf !important; white-space:nowrap; line-height:1.3;
}
#mtp-okf-explorer .okf-node:hover { background:#1a1a1a !important; }
#mtp-okf-explorer .okf-node.okf-sel { background:#16240a !important; color:#9fdb3a !important; }
#mtp-okf-explorer .okf-ind { color:#3a3a3a !important; }
#mtp-okf-explorer .okf-ico { color:#76B900 !important; font-size:11px; }
#mtp-okf-explorer .okf-dir { color:#7aa6ff !important; font-size:11px; }
#mtp-okf-explorer .okf-dirname { color:#9aa0a6 !important; font-weight:600; cursor:default; }

#mtp-okf-explorer .okf-main { flex:1; min-width:0; padding:18px 20px; overflow:auto; }
#mtp-okf-explorer .okf-pane { display:none; }
#mtp-okf-explorer .okf-pane.okf-pane-on { display:block; }

#mtp-okf-explorer .okf-fm {
background:#0d0d0d !important; border:1px solid #222 !important; border-left:3px solid #76B900 !important;
border-radius:9px; padding:12px 14px; margin-bottom:16px;
}
#mtp-okf-explorer .okf-fmrow { display:flex; gap:10px; padding:3px 0; font-size:12.5px; line-height:1.5; }
#mtp-okf-explorer .okf-fmkey { color:#76B900 !important; min-width:96px; font-weight:600; }
#mtp-okf-explorer .okf-fmkey.okf-req::after { content:” *”; color:#ffb020 !important; }
#mtp-okf-explorer .okf-fmval { color:#dcdcdc !important; word-break:break-word; }
#mtp-okf-explorer .okf-tag {
display:inline-block; background:#16240a !important; color:#9fdb3a !important;
border:1px solid #2c4310 !important; border-radius:5px; padding:1px 7px; margin-right:5px; font-size:11px;
}

#mtp-okf-explorer .okf-doc { font-size:13.5px; line-height:1.65; color:#d6d6d6 !important; }
#mtp-okf-explorer .okf-doc h1 { font-size:16px; color:#fff !important; margin:14px 0 8px; }
#mtp-okf-explorer .okf-doc h2 { font-size:14px; color:#f0f0f0 !important; margin:14px 0 7px; }
#mtp-okf-explorer .okf-doc p { margin:8px 0; }
#mtp-okf-explorer .okf-doc table { border-collapse:collapse; width:100%; margin:10px 0; font-size:12.5px; }
#mtp-okf-explorer .okf-doc th, #mtp-okf-explorer .okf-doc td {
border:1px solid #2a2a2a !important; padding:6px 9px; text-align:left;
}
#mtp-okf-explorer .okf-doc th { background:#181818 !important; color:#76B900 !important; }
#mtp-okf-explorer .okf-doc code {
background:#0d0d0d !important; color:#9fdb3a !important; border:1px solid #222 !important;
padding:1px 5px; border-radius:4px; font-family:”SFMono-Regular”,Consolas,Menlo,monospace; font-size:12px;
}
#mtp-okf-explorer .okf-xlink {
color:#76B900 !important; text-decoration:none; border-bottom:1px dashed #2c4310; cursor:pointer;
}
#mtp-okf-explorer .okf-xlink:hover { border-bottom-style:solid; }

#mtp-okf-explorer .okf-raw {
background:#0d0d0d !important; border:1px solid #222 !important; border-radius:9px;
padding:14px; overflow-x:auto; margin:0;
}
#mtp-okf-explorer .okf-raw code {
color:#cfd6c4 !important; font-family:”SFMono-Regular”,Consolas,Menlo,monospace;
font-size:12px; line-height:1.6; white-space:pre; background:none !important; border:none !important;
}

#mtp-okf-explorer .okf-graphwrap { background:#0d0d0d !important; border:1px solid #222 !important; border-radius:9px; padding:8px; }
#mtp-okf-explorer #okf-graph { width:100%; height:auto; display:block; }
#mtp-okf-explorer .okf-gn { cursor:pointer; }
#mtp-okf-explorer .okf-gn circle { fill:#181818; stroke:#3a3a3a; stroke-width:1.5; transition:.15s; }
#mtp-okf-explorer .okf-gn text { fill:#bdbdbd; font-size:9.5px; font-family:inherit; }
#mtp-okf-explorer .okf-gn.okf-gsel circle { fill:#16240a; stroke:#76B900; stroke-width:2.5; }
#mtp-okf-explorer .okf-gn.okf-gsel text { fill:#9fdb3a; }
#mtp-okf-explorer .okf-edge { stroke:#2a2a2a; stroke-width:1.4; }
#mtp-okf-explorer .okf-edge.okf-eon { stroke:#76B900; stroke-width:2; }
#mtp-okf-explorer .okf-legend { font-size:11.5px; color:#7a7a7a !important; margin-top:9px; text-align:center; }

#mtp-okf-explorer .okf-foot {
padding:11px 18px; border-top:1px solid #1d1d1d !important; font-size:11.5px;
color:#6f6f6f !important; display:flex; align-items:center; gap:8px;
}
#mtp-okf-explorer .okf-dot { width:8px; height:8px; border-radius:50%; background:#76B900 !important; flex:none; }

/* suppress wpautop artifacts */
#mtp-okf-explorer hr, #mtp-okf-explorer p:empty, #mtp-okf-explorer del, #mtp-okf-explorer s { display:none !important; }

@media (max-width:640px) {
#mtp-okf-explorer .okf-body { flex-direction:column; }
#mtp-okf-explorer .okf-tree { width:100%; max-height:160px; border-right:none !important; border-bottom:1px solid #1d1d1d !important; }
#mtp-okf-explorer .okf-main { padding:14px; }
#mtp-okf-explorer .okf-title { font-size:16px; }
#mtp-okf-explorer .okf-tabs { overflow-x:auto; }
#mtp-okf-explorer .okf-raw { overflow-x:auto; }
}

(function(){
var root = document.getElementById(‘mtp-okf-explorer’);
if(!root || root.dataset.init) return; root.dataset.init = ‘1’;

// —- Sample OKF bundle (mirrors Google Cloud’s sales/ example) —-
var BUNDLE = {
“/index.md”: {
fm:{ type:”Index”, title:”Sales”, description:”Entry point for the sales knowledge bundle.”, tags:[“sales”], timestamp:”2026-05-28T14:30:00Z” },
body:”# SalesnnThis bundle documents the sales domain as OKF concepts.nn## Contentsnn- Dataset: [orders_db](/datasets/orders_db.md)n- Tables: [orders](/tables/orders.md), [customers](/tables/customers.md)n- Metrics: [weekly_active_users](/metrics/weekly_active_users.md)”
},
“/datasets/orders_db.md”: {
fm:{ type:”BigQuery Dataset”, title:”orders_db”, description:”Source dataset for order and customer tables.”, resource:”https://console.cloud.google.com/bigquery?p=acme&d=sales”, tags:[“sales”,”source”], timestamp:”2026-05-28T14:30:00Z” },
body:”# orders_dbnnHolds the raw sales tables.nn## Tablesnn- [orders](/tables/orders.md)n- [customers](/tables/customers.md)”
},
“/tables/orders.md”: {
fm:{ type:”BigQuery Table”, title:”Orders”, description:”One row per completed customer order.”, resource:”https://console.cloud.google.com/bigquery?p=acme&d=sales&t=orders”, tags:[“sales”,”revenue”], timestamp:”2026-05-28T14:30:00Z” },
body:”# Schemann| Column | Type | Description |n|—|—|—|n| `order_id` | STRING | Globally unique order identifier. |n| `customer_id` | STRING | FK to [customers](/tables/customers.md). |n| `amount` | NUMERIC | Order total in USD. |nn# JoinsnnJoined with [customers](/tables/customers.md) on `customer_id`.”
},
“/tables/customers.md”: {
fm:{ type:”BigQuery Table”, title:”Customers”, description:”One row per customer account.”, resource:”https://console.cloud.google.com/bigquery?p=acme&d=sales&t=customers”, tags:[“sales”], timestamp:”2026-05-28T14:30:00Z” },
body:”# Schemann| Column | Type | Description |n|—|—|—|n| `customer_id` | STRING | Primary key. |n| `signup_ts` | TIMESTAMP | Account creation time. |nn# Used bynnReferenced by [orders](/tables/orders.md) and [weekly_active_users](/metrics/weekly_active_users.md).”
},
“/metrics/weekly_active_users.md”: {
fm:{ type:”Metric”, title:”Weekly Active Users”, description:”Distinct customers with an order in a 7-day window.”, tags:[“sales”,”engagement”], timestamp:”2026-05-28T14:30:00Z” },
body:”# DefinitionnnCount distinct [customers](/tables/customers.md) that appear in [orders](/tables/orders.md) within a rolling 7-day window.nn# NotesnnGrain is one row per ISO week.”
}
};

var REQUIRED = “type”; // OKF requires exactly one field: type
var ORDER = [“/index.md”,”/datasets/orders_db.md”,”/tables/orders.md”,”/tables/customers.md”,”/metrics/weekly_active_users.md”];
var current = “/index.md”;

// —- helpers —-
function esc(s){ return String(s).replace(/[&]/g,function(c){return {‘&’:’&’,”:’>’}[c];}); }

// tiny markdown -> html (headings, tables, inline code, links)
function mdToHtml(md){
var lines = md.split(“n”), out = [], i = 0;
while(i < lines.length){ var ln = lines[i]; if(/^#s/.test(ln)){ out.push(""+inline(ln.replace(/^#s/,""))+""); i++; continue; } if(/^##s/.test(ln)){ out.push(""+inline(ln.replace(/^##s/,""))+""); i++; continue; } if(/^|/.test(ln)){ var tbl = []; while(i < lines.length && /^|/.test(lines[i])){ tbl.push(lines[i]); i++; } out.push(renderTable(tbl)); continue; } if(/^-s/.test(ln)){ var items = []; while(i < lines.length && /^-s/.test(lines[i])){ items.push(""+inline(lines[i].replace(/^-s/,""))+""); i++; } out.push(""+items.join("")+""); continue; } if(ln.trim()===""){ i++; continue; } out.push(""+inline(ln)+""); i++; } return out.join(""); } function renderTable(rows){ var cells = rows.map(function(r){ return r.replace(/^|||$/g,"").split("|").map(function(c){return c.trim();}); }); var head = cells[0], body = cells.slice(2); var h = ""+head.map(function(c){return ""+inline(c)+"";}).join("")+""; var b = body.map(function(r){ return ""+r.map(function(c){return ""+inline(c)+"";}).join("")+""; }).join(""); return ""+h+b+""; } function inline(s){ s = esc(s); s = s.replace(/`([^`]+)`/g,'$1'); s = s.replace(/[([^]]+)]((/[^)]+.md))/g, function(_,t,href){ return ''+t+''; }); return s; }// ---- tree ---- function buildTree(){ var t = document.getElementById('okf-tree'); t.innerHTML = ""; var dirs = {}; ORDER.forEach(function(p){ var parts = p.split("/").filter(Boolean); var dir = parts.length > 1 ? parts[0] : “”;
(dirs[dir] = dirs[dir] || []).push(p);
});
// root files first
(dirs[“”]||[]).forEach(function(p){ t.appendChild(fileNode(p,0)); });
Object.keys(dirs).forEach(function(d){
if(d===””) return;
var dn = document.createElement(‘div’);
dn.className = “okf-node okf-dirname”;
dn.innerHTML = ‘[dir] ‘+d+”/”;
t.appendChild(dn);
dirs[d].forEach(function(p){ t.appendChild(fileNode(p,1)); });
});
markTree();
}
function fileNode(p, depth){
var n = document.createElement(‘div’);
n.className = “okf-node”; n.dataset.path = p;
var name = p.split(“/”).pop();
n.innerHTML = (depth?’└─ ‘:”)+’● ‘+name;
n.addEventListener(‘click’, function(){ select(p); });
return n;
}
function markTree(){
root.querySelectorAll(‘.okf-node[data-path]’).forEach(function(n){
n.classList.toggle(‘okf-sel’, n.dataset.path === current);
});
}

// —- render concept —-
function renderConcept(){
var c = BUNDLE[current]; if(!c) return;
var fm = document.getElementById(‘okf-fm’); fm.innerHTML = “”;
var keys = [“type”,”title”,”description”,”resource”,”tags”,”timestamp”];
keys.forEach(function(k){
if(c.fm[k]===undefined) return;
var row = document.createElement(‘div’); row.className = “okf-fmrow”;
var val = c.fm[k];
var valHtml;
if(k===”tags” && Array.isArray(val)){
valHtml = val.map(function(tg){return ”+esc(tg)+”;}).join(“”);
} else { valHtml = esc(val); }
row.innerHTML = ”+k+”+valHtml+”;
fm.appendChild(row);
});
document.getElementById(‘okf-doc’).innerHTML = mdToHtml(c.body);
// raw view
document.getElementById(‘okf-raw’).textContent = rawOf(current);
bindXlinks();
}
function rawOf(p){
var c = BUNDLE[p], fm = c.fm, out = “—n”;
[“type”,”title”,”description”,”resource”,”tags”,”timestamp”].forEach(function(k){
if(fm[k]===undefined) return;
var v = Array.isArray(fm[k]) ? “[“+fm[k].join(“, “)+”]” : fm[k];
out += k+”: “+v+”n”;
});
out += “—nn”+c.body+”n”;
return out;
}
function bindXlinks(){
root.querySelectorAll(‘.okf-xlink’).forEach(function(a){
a.addEventListener(‘click’, function(){ if(BUNDLE[a.dataset.go]) select(a.dataset.go); });
});
}

// —- graph —-
var POS = {
“/index.md”:[260,50],
“/datasets/orders_db.md”:[110,150],
“/tables/orders.md”:[260,200],
“/tables/customers.md”:[410,150],
“/metrics/weekly_active_users.md”:[260,320]
};
function edges(){
var e = [];
ORDER.forEach(function(p){
var b = BUNDLE[p].body, m, re = /((/[^)]+.md))/g;
var seen = {};
while((m = re.exec(b))){ var tgt = m[1]; if(POS[tgt] && tgt!==p && !seen[tgt]){ seen[tgt]=1; e.push([p,tgt]); } }
});
return e;
}
function buildGraph(){
var svg = document.getElementById(‘okf-graph’); svg.innerHTML = “”;
var ns = “http://www.w3.org/2000/svg”;
edges().forEach(function(pair){
var a = POS[pair[0]], b = POS[pair[1]];
var ln = document.createElementNS(ns,’line’);
ln.setAttribute(‘x1’,a[0]); ln.setAttribute(‘y1’,a[1]);
ln.setAttribute(‘x2’,b[0]); ln.setAttribute(‘y2’,b[1]);
ln.setAttribute(‘class’,’okf-edge’);
ln.dataset.a = pair[0]; ln.dataset.b = pair[1];
svg.appendChild(ln);
});
ORDER.forEach(function(p){
var pos = POS[p];
var g = document.createElementNS(ns,’g’); g.setAttribute(‘class’,’okf-gn’); g.dataset.path = p;
var ci = document.createElementNS(ns,’circle’);
ci.setAttribute(‘cx’,pos[0]); ci.setAttribute(‘cy’,pos[1]); ci.setAttribute(‘r’,22);
var tx = document.createElementNS(ns,’text’);
tx.setAttribute(‘x’,pos[0]); tx.setAttribute(‘y’,pos[1]+36); tx.setAttribute(‘text-anchor’,’middle’);
tx.textContent = p.split(“/”).pop().replace(“.md”,””);
g.appendChild(ci); g.appendChild(tx);
g.addEventListener(‘click’, function(){ select(p); });
svg.appendChild(g);
});
markGraph();
}
function markGraph(){
root.querySelectorAll(‘.okf-gn’).forEach(function(g){
g.classList.toggle(‘okf-gsel’, g.dataset.path === current);
});
root.querySelectorAll(‘.okf-edge’).forEach(function(e){
e.classList.toggle(‘okf-eon’, e.dataset.a === current || e.dataset.b === current);
});
}

// —- select / tabs —-
function select(p){ current = p; renderConcept(); markTree(); markGraph(); }

root.querySelectorAll(‘.okf-tab’).forEach(function(tab){
tab.addEventListener(‘click’, function(){
root.querySelectorAll(‘.okf-tab’).forEach(function(t){ t.classList.remove(‘okf-active’); });
tab.classList.add(‘okf-active’);
var v = tab.dataset.view;
root.querySelectorAll(‘.okf-pane’).forEach(function(pn){
pn.classList.toggle(‘okf-pane-on’, pn.dataset.pane === v);
});
});
});

// —- init —-
buildTree(); renderConcept(); buildGraph();
})();

The Fragmented Context Problem

In most organizations, model context is overwhelmingly internal knowledge. Today it sits in incompatible silos: metadata catalogs with their own APIs, wikis, shared drives, code comments, and docstrings.

Ask an agent ‘How do I compute weekly active users from our event stream?’ It must assemble that answer from scattered, mutually incompatible surfaces. Every vendor offers its own catalog, SDK, and knowledge-graph schema. None of the knowledge is portable across products or organizations.

The result is duplicated effort. Every agent builder solves the same context-assembly problem from scratch. Every catalog vendor reinvents the same data models.

Andrej Karpathy articulated the underlying idea in his April 2026 LLM Wiki gist. His point: LLMs do not get bored, do not forget to update cross-references, and can edit many files in one pass. The bookkeeping that makes humans abandon personal wikis is exactly what LLMs handle well.

The same pattern keeps reappearing under different names. Examples include Obsidian vaults wired to coding agents, the AGENTS.md and CLAUDE.md convention files, and ‘metadata as code’ repos. Each instance is bespoke, so none of them interoperate. OKF standardizes that interoperability layer so agents can do the heavy lifting.

How OKF Works: The Design in One Screen

An OKF bundle is a directory of markdown files representing concepts — tables, datasets, metrics, playbooks, runbooks, or APIs. Each concept is one file, and the file path is its identity.

Copy CodeCopiedUse a different Browsersales/
├── index.md
├── datasets/
│ ├── index.md
│ └── orders_db.md
├── tables/
│ ├── index.md
│ ├── orders.md
│ └── customers.md
└── metrics/
├── index.md
└── weekly_active_users.md

Each concept carries a small YAML front-matter block, then a markdown body for everything else.

Copy CodeCopiedUse a different Browser—
type: BigQuery Table
title: Orders
description: One row per completed customer order.
resource: https://console.cloud.google.com/bigquery?p=acme&d=sales&t=orders
tags: [sales, revenue]
timestamp: 2026-05-28T14:30:00Z

# Schema

| Column | Type | Description |
|—————|——–|——————————————|
| `order_id` | STRING | Globally unique order identifier. |
| `customer_id` | STRING | FK to [customers](/tables/customers.md). |

The reserved structured fields are type, title, description, resource, tags, and timestamp. Concepts link to each other with normal markdown links. Those links turn the directory into a graph that is richer than file-system parent/child relationships. Bundles can optionally include index.md files for progressive disclosure and log.md files for change history.

Three Principles Behind the Design

Minimally opinionated: OKF requires exactly one field on every concept: type. Everything else is left to the producer. The spec defines the interoperability surface, not the content model.

Producer/consumer independence: A human-written bundle can be read by an agent. A pipeline-generated bundle can be browsed in a visualizer. The format is the contract; tooling at each end is swappable.

Format, not platform: OKF is tied to no cloud, database, model provider, or agent framework. It will never require a proprietary account to read, write, or serve.

Use Cases, With Examples

Data team metadata-as-code: Export BigQuery table and metric definitions as a bundle. Commit it next to the SQL it describes, and review changes through pull requests.

Incident runbooks for agents: Store each runbook as a concept. An on-call agent reads index.md, follows cross-links, and resolves the join path it needs.

Cross-org knowledge exchange: A vendor ships a catalog export as OKF. Your agent consumes it directly, with no integration work.

Developer-team wiki: Replace a stale Notion or Obsidian space with versioned markdown that an agent keeps current.

How OKF Compares

ApproachStorageSchema requiredPortableSDK/registryAgent-readableOKF v0.1Markdown + YAML filesOnly typeYesNoYes, no translationNotionProprietary DBPer-workspaceExport-onlyAPI neededVia APIObsidian vaultMarkdown filesNone enforcedYesNoBespoke conventionsMetadata catalogVendor storeVendor schemaExport-onlyVendor SDKVendor-specificRAG indexVector storeEmbedding modelNoYesChunks, not concepts

The distinction from RAG is useful for developers. RAG re-derives knowledge at query time from raw chunks. An OKF bundle stores curated, cross-linked concepts that an agent reads and updates directly.

A Minimal OKF Consumer

OKF is parseable with standard tools. This reads a bundle and builds its link graph.

Copy CodeCopiedUse a different Browserimport pathlib, re, yaml

def load_bundle(root):
concepts, links = {}, []
for path in pathlib.Path(root).rglob(“*.md”):
text = path.read_text()
meta = {}
if text.startswith(“—“):
_, fm, body = text.split(“—“, 2)
meta = yaml.safe_load(fm) or {}
else:
body = text
concepts[str(path)] = meta # type, title, tags, etc.
for target in set(re.findall(r”]((/[^)]+.md))”, body)):
links.append((str(path), target)) # markdown cross-links
return concepts, links

concepts, graph = load_bundle(“sales/”)

No backend or install is needed to read or serve a bundle. The same files live in version control beside the code they describe.

Key Takeaways

Google’s Open Knowledge Format (OKF) v0.1 formalizes the LLM-wiki pattern into a portable, vendor-neutral spec.

A bundle is just a directory of markdown files with YAML frontmatter—no SDK, runtime, or registry.

Every concept requires only one field, type; cross-links between files form the knowledge graph.

Google shipped reference tools: a BigQuery enrichment agent, a static HTML visualizer, and three sample bundles.

Unlike RAG, OKF stores curated, version-controlled concepts that agents read and update directly.

Check out the Technical details here. Also, feel free to follow us on Twitter and don’t forget to join our 150k+ML SubReddit and Subscribe to our Newsletter. Wait! are you on telegram? now you can join us on telegram as well.

Need to partner with us for promoting your GitHub Repo OR Hugging Face Page OR Product Release OR Webinar etc.? Connect with us
The post Google Cloud Introduces Open Knowledge Format (OKF): A Vendor-Neutral Markdown Spec for Giving AI Agents Curated Context appeared first on MarkTechPost.