# Agentic search (/docs/reference/agentic-search)

How an agent finds things with no vector database: it searches, greps, and follows backlinks in a loop over live files that come back with their graph context attached, not a vector copy.



OpenKnowledge answers questions across thousands of files with no vector database. Two techniques do the work: retrieval runs as a **loop**, over **virtualized files** that hand the agent a briefing on every read.

## Retrieval is a loop

<HtmlPreview code="PGRpdiBzdHlsZT0icGFkZGluZzoxOHB4Ij4KICA8ZGl2IGlkPSJyb3ciIHN0eWxlPSJkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjhweDthbGlnbi1pdGVtczpzdHJldGNoIj48L2Rpdj4KICA8ZGl2IGNsYXNzPSJjYXAiPkVhY2ggc3RlcCBpcyBhbiBNQ1AgdG9vbCBjYWxsOyB0aGUgbW9kZWwgcGlja3MgdGhlIG5leHQgb25lLiBBIHdyb25nIGhpdCBqdXN0IGxvb3BzIGJhY2suIE5vIGZpeGVkIHBpcGVsaW5lLjwvZGl2Pgo8L2Rpdj4KPHN0eWxlPgojcm93IC5ub2Rle2ZsZXg6MTttaW4td2lkdGg6MTEycHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjExcHggMTNweDtiYWNrZ3JvdW5kOnZhcigtLWNhcmQpO3RyYW5zaXRpb246Ym94LXNoYWRvdyAuM3MsYm9yZGVyLWNvbG9yIC4zcztjdXJzb3I6cG9pbnRlcn0KI3JvdyAubm9kZSAudHtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEzcHh9CiNyb3cgLm5vZGUgLnN7Y29sb3I6dmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCk7Zm9udC1zaXplOjExLjVweDttYXJnaW4tdG9wOjJweH0KI3JvdyAubm9kZS5vbntib3JkZXItY29sb3I6dmFyKC0tcHJpbWFyeSk7Ym94LXNoYWRvdzowIDAgMCAzcHggdmFyKC0tYWNjZW50LXNvZnQpfQojcm93IC5ub2RlLm9uIC50e2NvbG9yOnZhcigtLWFjY2VudC1pbmspfQojcm93IC5hcnJvd3thbGlnbi1zZWxmOmNlbnRlcjtjb2xvcjp2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKX0KLmNhcHttYXJnaW4tdG9wOjEycHg7Y29sb3I6dmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCk7Zm9udC1zaXplOjEyLjVweH0KLmNhcDo6YmVmb3Jle2NvbnRlbnQ6IlwyMUJCICAiO2NvbG9yOnZhcigtLXByaW1hcnkpO2ZvbnQtd2VpZ2h0OjcwMH0KQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOnJlZHVjZSl7I3JvdyAubm9kZXt0cmFuc2l0aW9uOm5vbmV9fQo8L3N0eWxlPgo8c2NyaXB0Pgp2YXIgc3RlcHM9W1siQXNrIiwieW91ciBxdWVzdGlvbiJdLFsic2VhcmNoIC8gZ3JlcCAvIGxzIiwib3ZlciBsaXZlIGZpbGVzIl0sWyJyZWFkIGEgZmlsZSIsIndpdGggZ3JhcGggY29udGV4dCJdLFsiZGVjaWRlIiwiZW5vdWdoIHRvIGFuc3dlcj8iXSxbImFuc3dlciIsIndpdGggY2l0YXRpb25zIl1dOwp2YXIgcm93PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyb3ciKSxub2Rlcz1bXTsKc3RlcHMuZm9yRWFjaChmdW5jdGlvbihzLGkpewogIGlmKGkpe3ZhciBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2EuY2xhc3NOYW1lPSJhcnJvdyI7YS50ZXh0Q29udGVudD0i4oaSIjtyb3cuYXBwZW5kQ2hpbGQoYSk7fQogIHZhciBkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2QuY2xhc3NOYW1lPSJub2RlIjsKICB2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0LmNsYXNzTmFtZT0idCI7dC50ZXh0Q29udGVudD1zWzBdOwogIHZhciBzdWI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7c3ViLmNsYXNzTmFtZT0icyI7c3ViLnRleHRDb250ZW50PXNbMV07CiAgZC5hcHBlbmRDaGlsZCh0KTtkLmFwcGVuZENoaWxkKHN1Yik7CiAgZC5vbmNsaWNrPWZ1bmN0aW9uKCl7cGlubmVkPXRydWU7c2V0KGkpO307CiAgcm93LmFwcGVuZENoaWxkKGQpO25vZGVzLnB1c2goZCk7Cn0pOwp2YXIgY3VyPTAscGlubmVkPWZhbHNlOwpmdW5jdGlvbiBzZXQoaSl7Y3VyPWk7bm9kZXMuZm9yRWFjaChmdW5jdGlvbihuLGope24uY2xhc3NMaXN0LnRvZ2dsZSgib24iLGo9PT1pKTt9KTt9CnNldCgwKTsKaWYoIW1hdGNoTWVkaWEoIihwcmVmZXJzLXJlZHVjZWQtbW90aW9uOnJlZHVjZSkiKS5tYXRjaGVzKXtzZXRJbnRlcnZhbChmdW5jdGlvbigpe2lmKCFwaW5uZWQpc2V0KChjdXIrMSklbm9kZXMubGVuZ3RoKTt9LDE0MDApO30KPC9zY3JpcHQ+" />

Classic RAG embeds your question once and pastes in the nearest chunks; if they are wrong, so is the answer. Here each step is an MCP tool call and the model picks the next one: search, read, follow a backlink, reformulate. A wrong first hit costs one more step, not the whole answer.

## Every read is a briefing

A `cat` through OpenKnowledge returns more than the bytes on disk: the file, frontmatter and all, plus its place in the graph: the backlinks pointing at it, its outbound links, and its version history.

<HtmlPreview code="PGRpdiBzdHlsZT0icGFkZGluZzoxOHB4Ij4KICA8ZGl2IGNsYXNzPSJzZWciPgogICAgPGJ1dHRvbiBkYXRhLXY9InJhdyI+cmF3IGRpc2sgJm1pZGRvdDsgY2F0PC9idXR0b24+CiAgICA8YnV0dG9uIGRhdGEtdj0ib2siIGNsYXNzPSJvbiI+T3Blbktub3dsZWRnZSAmbWlkZG90OyBleGVjPC9idXR0b24+CiAgPC9kaXY+CiAgPHByZSBpZD0iY29kZSI+PC9wcmU+CiAgPGRpdiBpZD0icmljaCI+PGRpdiBjbGFzcz0iaW5uZXIiPjwvZGl2PjwvZGl2Pgo8L2Rpdj4KPHN0eWxlPgouc2Vne2Rpc3BsYXk6aW5saW5lLWZsZXg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6OXB4O3BhZGRpbmc6MnB4O2JhY2tncm91bmQ6dmFyKC0tbXV0ZWQpO21hcmdpbi1ib3R0b206MTJweH0KLnNlZyBidXR0b257Ym9yZGVyOjA7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjp2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKTtmb250OmluaGVyaXQ7Zm9udC1zaXplOjEyLjVweDtwYWRkaW5nOjZweCAxMnB4O2JvcmRlci1yYWRpdXM6N3B4O2N1cnNvcjpwb2ludGVyfQouc2VnIGJ1dHRvbi5vbntiYWNrZ3JvdW5kOnZhcigtLWNhcmQpO2NvbG9yOnZhcigtLWZvcmVncm91bmQpO2JveC1zaGFkb3c6MCAxcHggMnB4IHJnYmEoMCwwLDAsLjEpfQojY29kZXttYXJnaW46MDtiYWNrZ3JvdW5kOnZhcigtLW11dGVkKTtib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoxMnB4IDE0cHg7Zm9udDoxMi41cHggdWktbW9ub3NwYWNlLE1lbmxvLG1vbm9zcGFjZTtjb2xvcjp2YXIoLS1mb3JlZ3JvdW5kKTt3aGl0ZS1zcGFjZTpwcmUtd3JhcH0KLmZte2NvbG9yOnZhcigtLW11dGVkLWZvcmVncm91bmQpfQouZGlte2NvbG9yOnZhcigtLW11dGVkLWZvcmVncm91bmQpfQojcmljaHtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1yb3dzOjBmcjtvcGFjaXR5OjA7dHJhbnNpdGlvbjpncmlkLXRlbXBsYXRlLXJvd3MgLjQ1cyBlYXNlLG9wYWNpdHkgLjQ1cyBlYXNlfQojcmljaC5zaG93e2dyaWQtdGVtcGxhdGUtcm93czoxZnI7b3BhY2l0eToxO21hcmdpbi10b3A6MTJweH0KI3JpY2ggLmlubmVye292ZXJmbG93OmhpZGRlbn0KLmNhcmR7Ym9yZGVyOjFweCBkYXNoZWQgdmFyKC0tcHJpbWFyeSk7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MTNweH0KLmhke2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjcwMDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7bGV0dGVyLXNwYWNpbmc6LjA0ZW07Y29sb3I6dmFyKC0tYWNjZW50LWluayk7bWFyZ2luLWJvdHRvbToxMHB4fQoucm93a3tkaXNwbGF5OmZsZXg7Z2FwOjlweDtmbGV4LXdyYXA6d3JhcDthbGlnbi1pdGVtczpjZW50ZXI7bWFyZ2luLWJvdHRvbTo5cHg7Zm9udC1zaXplOjEyLjVweH0KLmt7d2lkdGg6ODBweDtmbGV4Om5vbmU7Y29sb3I6dmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCk7Zm9udC1mYW1pbHk6dWktbW9ub3NwYWNlLG1vbm9zcGFjZX0KLmNoaXB7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JhY2tncm91bmQ6dmFyKC0tY2FyZCk7Ym9yZGVyLXJhZGl1czo3cHg7cGFkZGluZzoxcHggN3B4O2ZvbnQtZmFtaWx5OnVpLW1vbm9zcGFjZSxtb25vc3BhY2U7Zm9udC1zaXplOjExLjVweH0KLnZlcntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDozcHg7Zm9udC1mYW1pbHk6dWktbW9ub3NwYWNlLG1vbm9zcGFjZTtmb250LXNpemU6MTEuNXB4fQoudmVyIGJ7Y29sb3I6dmFyKC0tZm9yZWdyb3VuZCl9Cjwvc3R5bGU+CjxzY3JpcHQ+CnZhciBjb2RlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb2RlIikscmljaD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmljaCIpLGJ0bnM9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLnNlZyBidXR0b24iKTsKdmFyIGZpbGU9JzxzcGFuIGNsYXNzPSJmbSI+LS0tXG50aXRsZTogQXV0aGVudGljYXRpb25cbnN0YXR1czogY2Fub25pY2FsXG4tLS08L3NwYW4+XG4jIEF1dGhlbnRpY2F0aW9uXG4uLi50aGUgZmlsZS4uLic7CnJpY2gucXVlcnlTZWxlY3RvcigiLmlubmVyIikuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJjYXJkIj48ZGl2IGNsYXNzPSJoZCI+YXR0YWNoZWQgYnkgZXhlYyAmbWlkZG90OyBncmFwaCArIGhpc3Rvcnk8L2Rpdj4nCisnPGRpdiBjbGFzcz0icm93ayI+PHNwYW4gY2xhc3M9ImsiPmdyYXBoPC9zcGFuPjxzcGFuIGNsYXNzPSJjaGlwIj5odWI8L3NwYW4+IDxzcGFuIGNsYXNzPSJkaW0iPm1hbnkgZG9jcyBsaW5rIGhlcmU8L3NwYW4+PC9kaXY+JworJzxkaXYgY2xhc3M9InJvd2siPjxzcGFuIGNsYXNzPSJrIj5iYWNrbGlua3M8L3NwYW4+PHNwYW4gY2xhc3M9ImNoaXAiPmxvZ2luLm1kPC9zcGFuPjxzcGFuIGNsYXNzPSJjaGlwIj5zZXNzaW9ucy5tZDwvc3Bhbj48c3BhbiBjbGFzcz0iY2hpcCI+c3NvLm1kPC9zcGFuPjxzcGFuIGNsYXNzPSJkaW0iPndobyBwb2ludHMgaGVyZTwvc3Bhbj48L2Rpdj4nCisnPGRpdiBjbGFzcz0icm93ayI+PHNwYW4gY2xhc3M9ImsiPmxpbmtzIHRvPC9zcGFuPjxzcGFuIGNsYXNzPSJjaGlwIj50b2tlbnMubWQ8L3NwYW4+PHNwYW4gY2xhc3M9ImNoaXAiPm9hdXRoLm1kPC9zcGFuPjwvZGl2PicKKyc8ZGl2IGNsYXNzPSJyb3drIj48c3BhbiBjbGFzcz0iayI+aGlzdG9yeTwvc3Bhbj48c3BhbiBjbGFzcz0idmVyIj48c3Bhbj48Yj55b3U8L2I+ICZtaWRkb3Q7IGFkZCBTU08gc2VjdGlvbjwvc3Bhbj48c3Bhbj48Yj5jbGF1ZGUtY29kZTwvYj4gJm1pZGRvdDsgdGlnaHRlbiB0b2tlbiByZWZyZXNoPC9zcGFuPjwvc3Bhbj48L2Rpdj4nCisnPC9kaXY+JzsKZnVuY3Rpb24gc2V0KHYpewogIGNvZGUuaW5uZXJIVE1MPSh2PT09Im9rIj8nPHNwYW4gY2xhc3M9ImRpbSI+ZXhlYygiY2F0IGFyY2hpdGVjdHVyZS9hdXRoLm1kIik8L3NwYW4+JzonPHNwYW4gY2xhc3M9ImRpbSI+JCBjYXQgYXJjaGl0ZWN0dXJlL2F1dGgubWQ8L3NwYW4+JykrIlxuIitmaWxlOwogIHJpY2guY2xhc3NMaXN0LnRvZ2dsZSgic2hvdyIsdj09PSJvayIpOwogIGJ0bnMuZm9yRWFjaChmdW5jdGlvbihiKXtiLmNsYXNzTGlzdC50b2dnbGUoIm9uIixiLmRhdGFzZXQudj09PXYpO30pOwp9CmJ0bnMuZm9yRWFjaChmdW5jdGlvbihiKXtiLm9uY2xpY2s9ZnVuY3Rpb24oKXtzZXQoYi5kYXRhc2V0LnYpO307fSk7CnNldCgib2siKTsKPC9zY3JpcHQ+" />

The same holds for a whole folder. A raw `ls` is a list of filenames; through OpenKnowledge it comes back as a map, so the agent knows where to look next without opening anything.

<HtmlPreview code="PGRpdiBzdHlsZT0icGFkZGluZzoxOHB4Ij4KICA8ZGl2IGNsYXNzPSJzZWciPgogICAgPGJ1dHRvbiBkYXRhLXY9InJhdyI+cmF3IGRpc2sgJm1pZGRvdDsgbHM8L2J1dHRvbj4KICAgIDxidXR0b24gZGF0YS12PSJvayIgY2xhc3M9Im9uIj5PcGVuS25vd2xlZGdlICZtaWRkb3Q7IGV4ZWM8L2J1dHRvbj4KICA8L2Rpdj4KICA8cHJlIGlkPSJjb2RlIj48L3ByZT4KICA8ZGl2IGlkPSJyaWNoIj48ZGl2IGNsYXNzPSJpbm5lciI+PC9kaXY+PC9kaXY+CjwvZGl2Pgo8c3R5bGU+Ci5zZWd7ZGlzcGxheTppbmxpbmUtZmxleDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7Ym9yZGVyLXJhZGl1czo5cHg7cGFkZGluZzoycHg7YmFja2dyb3VuZDp2YXIoLS1tdXRlZCk7bWFyZ2luLWJvdHRvbToxMnB4fQouc2VnIGJ1dHRvbntib3JkZXI6MDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOnZhcigtLW11dGVkLWZvcmVncm91bmQpO2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTIuNXB4O3BhZGRpbmc6NnB4IDEycHg7Ym9yZGVyLXJhZGl1czo3cHg7Y3Vyc29yOnBvaW50ZXJ9Ci5zZWcgYnV0dG9uLm9ue2JhY2tncm91bmQ6dmFyKC0tY2FyZCk7Y29sb3I6dmFyKC0tZm9yZWdyb3VuZCk7Ym94LXNoYWRvdzowIDFweCAycHggcmdiYSgwLDAsMCwuMSl9CiNjb2Rle21hcmdpbjowO2JhY2tncm91bmQ6dmFyKC0tbXV0ZWQpO2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjEycHggMTRweDtmb250OjEyLjVweCB1aS1tb25vc3BhY2UsTWVubG8sbW9ub3NwYWNlO2NvbG9yOnZhcigtLWZvcmVncm91bmQpO3doaXRlLXNwYWNlOnByZS13cmFwfQouZGlte2NvbG9yOnZhcigtLW11dGVkLWZvcmVncm91bmQpfQojcmljaHtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1yb3dzOjBmcjtvcGFjaXR5OjA7dHJhbnNpdGlvbjpncmlkLXRlbXBsYXRlLXJvd3MgLjQ1cyBlYXNlLG9wYWNpdHkgLjQ1cyBlYXNlfQojcmljaC5zaG93e2dyaWQtdGVtcGxhdGUtcm93czoxZnI7b3BhY2l0eToxO21hcmdpbi10b3A6MTJweH0KI3JpY2ggLmlubmVye292ZXJmbG93OmhpZGRlbn0KLmNhcmR7Ym9yZGVyOjFweCBkYXNoZWQgdmFyKC0tcHJpbWFyeSk7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MTNweH0KLmhke2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjcwMDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7bGV0dGVyLXNwYWNpbmc6LjA0ZW07Y29sb3I6dmFyKC0tYWNjZW50LWluayk7bWFyZ2luLWJvdHRvbToxMHB4fQoucm93a3tkaXNwbGF5OmZsZXg7Z2FwOjlweDtmbGV4LXdyYXA6d3JhcDthbGlnbi1pdGVtczpiYXNlbGluZTttYXJnaW4tYm90dG9tOjlweDtmb250LXNpemU6MTIuNXB4fQoua3t3aWR0aDo5NHB4O2ZsZXg6bm9uZTtjb2xvcjp2YXIoLS1mb3JlZ3JvdW5kKTtmb250LWZhbWlseTp1aS1tb25vc3BhY2UsbW9ub3NwYWNlfQouY2hpcHtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7YmFja2dyb3VuZDp2YXIoLS1jYXJkKTtib3JkZXItcmFkaXVzOjdweDtwYWRkaW5nOjFweCA3cHg7Zm9udC1zaXplOjExLjVweH0KPC9zdHlsZT4KPHNjcmlwdD4KdmFyIGNvZGU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvZGUiKSxyaWNoPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyaWNoIiksYnRucz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuc2VnIGJ1dHRvbiIpOwpyaWNoLnF1ZXJ5U2VsZWN0b3IoIi5pbm5lciIpLmlubmVySFRNTD0nPGRpdiBjbGFzcz0iY2FyZCI+PGRpdiBjbGFzcz0iaGQiPmFkZGVkIGJ5IE9wZW5Lbm93bGVkZ2UgJm1pZGRvdDsgYmV5b25kIHRoZSBmaWxlbmFtZXM8L2Rpdj4nCisnPGRpdiBjbGFzcz0icm93ayI+PHNwYW4gY2xhc3M9ImsiPmRlc2NyaXB0aW9uPC9zcGFuPjxzcGFuPmhvdyBhdXRoLCBzZXNzaW9ucywgYW5kIHRva2VucyBmaXQgdG9nZXRoZXI8L3NwYW4+PC9kaXY+JworJzxkaXYgY2xhc3M9InJvd2siPjxzcGFuIGNsYXNzPSJrIj50YWdzPC9zcGFuPjxzcGFuIGNsYXNzPSJkaW0iPmF1dGgsIHNlY3VyaXR5PC9zcGFuPjwvZGl2PicKKyc8ZGl2IGNsYXNzPSJyb3drIj48c3BhbiBjbGFzcz0iayI+dGVtcGxhdGVzPC9zcGFuPjxzcGFuIGNsYXNzPSJjaGlwIj5hZHI8L3NwYW4+PHNwYW4gY2xhc3M9ImRpbSI+QXJjaGl0ZWN0dXJlIGRlY2lzaW9uIHJlY29yZDwvc3Bhbj48L2Rpdj4nCisnPGRpdiBjbGFzcz0icm93ayI+PHNwYW4gY2xhc3M9ImsiPmNvbnRhaW5zPC9zcGFuPjxzcGFuIGNsYXNzPSJkaW0iPjggbWQgZmlsZXMgJm1pZGRvdDsgMSBzdWJkaXIgKHByb3ZpZGVycy8pPC9zcGFuPjwvZGl2PicKKyc8ZGl2IGNsYXNzPSJyb3drIj48c3BhbiBjbGFzcz0iayI+YXV0aC5tZDwvc3Bhbj48c3BhbiBjbGFzcz0iY2hpcCI+QXV0aGVudGljYXRpb248L3NwYW4+PHNwYW4gY2xhc3M9ImRpbSI+c3RhdHVzOiBjYW5vbmljYWwgJm1pZGRvdDsgNCBiYWNrbGlua3M8L3NwYW4+PC9kaXY+JworJzxkaXYgY2xhc3M9InJvd2siPjxzcGFuIGNsYXNzPSJrIj5zZXNzaW9ucy5tZDwvc3Bhbj48c3BhbiBjbGFzcz0iY2hpcCI+U2Vzc2lvbiBsaWZlY3ljbGU8L3NwYW4+PHNwYW4gY2xhc3M9ImRpbSI+MiBiYWNrbGlua3M8L3NwYW4+PC9kaXY+JworJzxkaXYgY2xhc3M9InJvd2siPjxzcGFuIGNsYXNzPSJrIj5tb3N0IHJlY2VudDwvc3Bhbj48c3BhbiBjbGFzcz0iY2hpcCI+YXV0aC5tZDwvc3Bhbj48L2Rpdj4nCisnPC9kaXY+JzsKdmFyIGZpbGVzPSJhdXRoLm1kICAgIGxvZ2luLm1kICAgIG9hdXRoLm1kICAgIHNlc3Npb25zLm1kICAgIHNzby5tZCAgICB0b2tlbnMubWQgICAgcHJvdmlkZXJzLyI7CmZ1bmN0aW9uIHNldCh2KXsKICBjb2RlLmlubmVySFRNTD0odj09PSJvayI/JzxzcGFuIGNsYXNzPSJkaW0iPmV4ZWMoImxzIGFyY2hpdGVjdHVyZS8iKTwvc3Bhbj4nOic8c3BhbiBjbGFzcz0iZGltIj4kIGxzIGFyY2hpdGVjdHVyZS88L3NwYW4+JykrIlxuIitmaWxlczsKICByaWNoLmNsYXNzTGlzdC50b2dnbGUoInNob3ciLHY9PT0ib2siKTsKICBidG5zLmZvckVhY2goZnVuY3Rpb24oYil7Yi5jbGFzc0xpc3QudG9nZ2xlKCJvbiIsYi5kYXRhc2V0LnY9PT12KTt9KTsKfQpidG5zLmZvckVhY2goZnVuY3Rpb24oYil7Yi5vbmNsaWNrPWZ1bmN0aW9uKCl7c2V0KGIuZGF0YXNldC52KTt9O30pOwpzZXQoIm9rIik7Cjwvc2NyaXB0Pg==" />

And a `grep` returns more than matching lines: each hit carries its file's title, status, and backlink count, so the agent can tell a well-connected hub from a stray mention before opening either.

<HtmlPreview code="PGRpdiBzdHlsZT0icGFkZGluZzoxOHB4Ij4KICA8ZGl2IGNsYXNzPSJzZWciPgogICAgPGJ1dHRvbiBkYXRhLXY9InJhdyI+cmF3IGRpc2sgJm1pZGRvdDsgZ3JlcDwvYnV0dG9uPgogICAgPGJ1dHRvbiBkYXRhLXY9Im9rIiBjbGFzcz0ib24iPk9wZW5Lbm93bGVkZ2UgJm1pZGRvdDsgZXhlYzwvYnV0dG9uPgogIDwvZGl2PgogIDxwcmUgaWQ9ImNvZGUiPjwvcHJlPgogIDxkaXYgaWQ9InJpY2giPjxkaXYgY2xhc3M9ImlubmVyIj48L2Rpdj48L2Rpdj4KPC9kaXY+CjxzdHlsZT4KLnNlZ3tkaXNwbGF5OmlubGluZS1mbGV4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjlweDtwYWRkaW5nOjJweDtiYWNrZ3JvdW5kOnZhcigtLW11dGVkKTttYXJnaW4tYm90dG9tOjEycHh9Ci5zZWcgYnV0dG9ue2JvcmRlcjowO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6dmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCk7Zm9udDppbmhlcml0O2ZvbnQtc2l6ZToxMi41cHg7cGFkZGluZzo2cHggMTJweDtib3JkZXItcmFkaXVzOjdweDtjdXJzb3I6cG9pbnRlcn0KLnNlZyBidXR0b24ub257YmFja2dyb3VuZDp2YXIoLS1jYXJkKTtjb2xvcjp2YXIoLS1mb3JlZ3JvdW5kKTtib3gtc2hhZG93OjAgMXB4IDJweCByZ2JhKDAsMCwwLC4xKX0KI2NvZGV7bWFyZ2luOjA7YmFja2dyb3VuZDp2YXIoLS1tdXRlZCk7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MTJweCAxNHB4O2ZvbnQ6MTIuNXB4IHVpLW1vbm9zcGFjZSxNZW5sbyxtb25vc3BhY2U7Y29sb3I6dmFyKC0tZm9yZWdyb3VuZCk7d2hpdGUtc3BhY2U6cHJlLXdyYXA7bGluZS1oZWlnaHQ6MS43fQouZGlte2NvbG9yOnZhcigtLW11dGVkLWZvcmVncm91bmQpfQoubXtjb2xvcjp2YXIoLS1hY2NlbnQtaW5rKTtiYWNrZ3JvdW5kOnZhcigtLWFjY2VudC1zb2Z0KTtib3JkZXItcmFkaXVzOjNweDtwYWRkaW5nOjAgMnB4O2ZvbnQtd2VpZ2h0OjYwMH0KI3JpY2h7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtcm93czowZnI7b3BhY2l0eTowO3RyYW5zaXRpb246Z3JpZC10ZW1wbGF0ZS1yb3dzIC40NXMgZWFzZSxvcGFjaXR5IC40NXMgZWFzZX0KI3JpY2guc2hvd3tncmlkLXRlbXBsYXRlLXJvd3M6MWZyO29wYWNpdHk6MTttYXJnaW4tdG9wOjEycHh9CiNyaWNoIC5pbm5lcntvdmVyZmxvdzpoaWRkZW59Ci5jYXJke2JvcmRlcjoxcHggZGFzaGVkIHZhcigtLXByaW1hcnkpO2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjEzcHh9Ci5oZHtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo3MDA7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2xldHRlci1zcGFjaW5nOi4wNGVtO2NvbG9yOnZhcigtLWFjY2VudC1pbmspO21hcmdpbi1ib3R0b206MTBweH0KLnJvd2t7ZGlzcGxheTpmbGV4O2dhcDo5cHg7ZmxleC13cmFwOndyYXA7YWxpZ24taXRlbXM6YmFzZWxpbmU7bWFyZ2luLWJvdHRvbTo5cHg7Zm9udC1zaXplOjEyLjVweH0KLmt7d2lkdGg6OTRweDtmbGV4Om5vbmU7Y29sb3I6dmFyKC0tZm9yZWdyb3VuZCk7Zm9udC1mYW1pbHk6dWktbW9ub3NwYWNlLG1vbm9zcGFjZX0KLmNoaXB7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JhY2tncm91bmQ6dmFyKC0tY2FyZCk7Ym9yZGVyLXJhZGl1czo3cHg7cGFkZGluZzoxcHggN3B4O2ZvbnQtc2l6ZToxMS41cHh9Cjwvc3R5bGU+CjxzY3JpcHQ+CnZhciBjb2RlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb2RlIikscmljaD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmljaCIpLGJ0bnM9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLnNlZyBidXR0b24iKTsKdmFyIGhsPWZ1bmN0aW9uKHMpe3JldHVybiBzLnJlcGxhY2UoL3Rva2VuIHJlZnJlc2gvZywnPHNwYW4gY2xhc3M9Im0iPnRva2VuIHJlZnJlc2g8L3NwYW4+Jyk7fTsKdmFyIGxpbmVzPWhsKCdhcmNoaXRlY3R1cmUvYXV0aC5tZDo0MjogIHRoZSB0b2tlbiByZWZyZXNoIGZsb3cgcmUtaXNzdWVzIGEgc2hvcnQtbGl2ZWQgdG9rZW5cbmFyY2hpdGVjdHVyZS9zZXNzaW9ucy5tZDo4ODogIGEgdG9rZW4gcmVmcmVzaCBleHRlbmRzIHRoZSBzZXNzaW9uIHNpbGVudGx5Jyk7CnJpY2gucXVlcnlTZWxlY3RvcigiLmlubmVyIikuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJjYXJkIj48ZGl2IGNsYXNzPSJoZCI+YWRkZWQgYnkgT3Blbktub3dsZWRnZSAmbWlkZG90OyBjb250ZXh0IG9uIGVhY2ggaGl0PC9kaXY+JworJzxkaXYgY2xhc3M9InJvd2siPjxzcGFuIGNsYXNzPSJrIj5hdXRoLm1kPC9zcGFuPjxzcGFuIGNsYXNzPSJjaGlwIj5BdXRoZW50aWNhdGlvbjwvc3Bhbj48c3BhbiBjbGFzcz0iZGltIj40IGJhY2tsaW5rczwvc3Bhbj48L2Rpdj4nCisnPGRpdiBjbGFzcz0icm93ayI+PHNwYW4gY2xhc3M9ImsiPnNlc3Npb25zLm1kPC9zcGFuPjxzcGFuIGNsYXNzPSJjaGlwIj5TZXNzaW9uIGxpZmVjeWNsZTwvc3Bhbj48c3BhbiBjbGFzcz0iZGltIj4yIGJhY2tsaW5rczwvc3Bhbj48L2Rpdj4nCisnPC9kaXY+JzsKZnVuY3Rpb24gc2V0KHYpewogIHZhciBjbWQ9dj09PSJvayI/JzxzcGFuIGNsYXNzPSJkaW0iPmV4ZWMoImdyZXAgLXJuIFwndG9rZW4gcmVmcmVzaFwnIGFyY2hpdGVjdHVyZS8iKTwvc3Bhbj4nOic8c3BhbiBjbGFzcz0iZGltIj4kIGdyZXAgLXJuICJ0b2tlbiByZWZyZXNoIiBhcmNoaXRlY3R1cmUvPC9zcGFuPic7CiAgY29kZS5pbm5lckhUTUw9Y21kKyJcbiIrbGluZXM7CiAgcmljaC5jbGFzc0xpc3QudG9nZ2xlKCJzaG93Iix2PT09Im9rIik7CiAgYnRucy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IuY2xhc3NMaXN0LnRvZ2dsZSgib24iLGIuZGF0YXNldC52PT09dik7fSk7Cn0KYnRucy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2Iub25jbGljaz1mdW5jdGlvbigpe3NldChiLmRhdGFzZXQudik7fTt9KTsKc2V0KCJvayIpOwo8L3NjcmlwdD4=" />

That folder briefing is why the loop stays short: the backlinks are what it follows, and the purpose plus recency tell it where to look next.

Three read tools ride this layer: ranked **search** (BM25 and recency, the same index as cmd-K), **`exec`** (sandboxed `grep`/`ls`/`cat`, straight off disk, works with the server down), and the **link graph** (`dead`, `orphans`, `hubs`, `suggest`).

## Writing talks back too

A `cat >>` or a vim save drops bytes on disk and goes quiet. A `write` or `edit` through OpenKnowledge validates what you wrote and hands back what it found, so mistakes surface at write time instead of rotting in the graph.

<HtmlPreview code="PGRpdiBzdHlsZT0icGFkZGluZzoxOHB4Ij4KICA8ZGl2IGNsYXNzPSJzZWciPgogICAgPGJ1dHRvbiBkYXRhLXY9InJhdyI+cmF3IHNoZWxsICZtaWRkb3Q7IGNhdCAmZ3Q7Jmd0OzwvYnV0dG9uPgogICAgPGJ1dHRvbiBkYXRhLXY9Im9rIiBjbGFzcz0ib24iPk9wZW5Lbm93bGVkZ2UgJm1pZGRvdDsgd3JpdGU8L2J1dHRvbj4KICA8L2Rpdj4KICA8cHJlIGlkPSJjb2RlIj48L3ByZT4KICA8ZGl2IGlkPSJyaWNoIj48ZGl2IGNsYXNzPSJpbm5lciI+PC9kaXY+PC9kaXY+CjwvZGl2Pgo8c3R5bGU+Ci5zZWd7ZGlzcGxheTppbmxpbmUtZmxleDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7Ym9yZGVyLXJhZGl1czo5cHg7cGFkZGluZzoycHg7YmFja2dyb3VuZDp2YXIoLS1tdXRlZCk7bWFyZ2luLWJvdHRvbToxMnB4fQouc2VnIGJ1dHRvbntib3JkZXI6MDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOnZhcigtLW11dGVkLWZvcmVncm91bmQpO2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTIuNXB4O3BhZGRpbmc6NnB4IDEycHg7Ym9yZGVyLXJhZGl1czo3cHg7Y3Vyc29yOnBvaW50ZXJ9Ci5zZWcgYnV0dG9uLm9ue2JhY2tncm91bmQ6dmFyKC0tY2FyZCk7Y29sb3I6dmFyKC0tZm9yZWdyb3VuZCk7Ym94LXNoYWRvdzowIDFweCAycHggcmdiYSgwLDAsMCwuMSl9CiNjb2Rle21hcmdpbjowO2JhY2tncm91bmQ6dmFyKC0tbXV0ZWQpO2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjEycHggMTRweDtmb250OjEyLjVweCB1aS1tb25vc3BhY2UsTWVubG8sbW9ub3NwYWNlO2NvbG9yOnZhcigtLWZvcmVncm91bmQpO3doaXRlLXNwYWNlOnByZS13cmFwfQouZGlte2NvbG9yOnZhcigtLW11dGVkLWZvcmVncm91bmQpfQojcmljaHtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1yb3dzOjBmcjtvcGFjaXR5OjA7dHJhbnNpdGlvbjpncmlkLXRlbXBsYXRlLXJvd3MgLjQ1cyBlYXNlLG9wYWNpdHkgLjQ1cyBlYXNlfQojcmljaC5zaG93e2dyaWQtdGVtcGxhdGUtcm93czoxZnI7b3BhY2l0eToxO21hcmdpbi10b3A6MTJweH0KI3JpY2ggLmlubmVye292ZXJmbG93OmhpZGRlbn0KLmNhcmR7Ym9yZGVyOjFweCBkYXNoZWQgdmFyKC0tcHJpbWFyeSk7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MTNweH0KLmhke2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjcwMDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7bGV0dGVyLXNwYWNpbmc6LjA0ZW07Y29sb3I6dmFyKC0tYWNjZW50LWluayk7bWFyZ2luLWJvdHRvbToxMHB4fQoucm93a3tkaXNwbGF5OmZsZXg7Z2FwOjlweDtmbGV4LXdyYXA6d3JhcDthbGlnbi1pdGVtczpiYXNlbGluZTttYXJnaW4tYm90dG9tOjlweDtmb250LXNpemU6MTIuNXB4fQoua3t3aWR0aDo3NHB4O2ZsZXg6bm9uZTtjb2xvcjp2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKTtmb250LWZhbWlseTp1aS1tb25vc3BhY2UsbW9ub3NwYWNlfQoud2Fybntjb2xvcjp2YXIoLS1jaGFydC01KTtmb250LXdlaWdodDo2MDB9Ci5nb29ke2NvbG9yOnZhcigtLWNoYXJ0LTIpO2ZvbnQtd2VpZ2h0OjYwMH0KPC9zdHlsZT4KPHNjcmlwdD4KdmFyIGNvZGU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvZGUiKSxyaWNoPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyaWNoIiksYnRucz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuc2VnIGJ1dHRvbiIpOwpyaWNoLnF1ZXJ5U2VsZWN0b3IoIi5pbm5lciIpLmlubmVySFRNTD0nPGRpdiBjbGFzcz0iY2FyZCI+PGRpdiBjbGFzcz0iaGQiPndoYXQgdGhlIHdyaXRlIGNoZWNrZWQgJm1pZGRvdDsgYSByYXcgY2F0ICZndDsmZ3Q7IGNhbm5vdDwvZGl2PicKKyc8ZGl2IGNsYXNzPSJyb3drIj48c3BhbiBjbGFzcz0iayI+bGlua3M8L3NwYW4+PHNwYW4+PHNwYW4gY2xhc3M9Imdvb2QiPjMgcmVzb2x2ZTwvc3Bhbj4gJm1pZGRvdDsgPHNwYW4gY2xhc3M9Indhcm4iPjEgYnJva2VuPC9zcGFuPjogb2F1dGgtdjIubWQgJnJhcnI7IG5vdCBmb3VuZDwvc3Bhbj48L2Rpdj4nCisnPGRpdiBjbGFzcz0icm93ayI+PHNwYW4gY2xhc3M9ImsiPm9ycGhhbjwvc3Bhbj48c3Bhbj5ub3RoaW5nIGxpbmtzIGhlcmUgeWV0ICZyYXJyOyBsaW5rIGZyb20gYXJjaGl0ZWN0dXJlL0lOREVYPC9zcGFuPjwvZGl2PicKKyc8ZGl2IGNsYXNzPSJyb3drIj48c3BhbiBjbGFzcz0iayI+cmVuZGVyczwvc3Bhbj48c3Bhbj5tZXJtYWlkIDxzcGFuIGNsYXNzPSJnb29kIj5PSzwvc3Bhbj48L3NwYW4+PC9kaXY+JworJzxkaXYgY2xhc3M9InJvd2siPjxzcGFuIGNsYXNzPSJrIj5zYXZlZDwvc3Bhbj48c3Bhbj52ZXJzaW9uZWQgJm1pZGRvdDsgYXR0cmlidXRlZCB0byB5b3UgJm1pZGRvdDsgbGl2ZSBpbiB0aGUgZWRpdG9yPC9zcGFuPjwvZGl2PicKKyc8L2Rpdj4nOwpmdW5jdGlvbiBzZXQodil7CiAgY29kZS5pbm5lckhUTUw9KHY9PT0ib2siPyc8c3BhbiBjbGFzcz0iZGltIj53cml0ZSgiYXJjaGl0ZWN0dXJlL2F1dGgubWQiLCAuLi4pPC9zcGFuPlxud3JpdHRlbi4nOic8c3BhbiBjbGFzcz0iZGltIj4kIGNhdCAmZ3Q7Jmd0OyBhcmNoaXRlY3R1cmUvYXV0aC5tZDwvc3Bhbj5cbmJ5dGVzIGFwcGVuZGVkLiBzaWxlbmNlLicpOwogIHJpY2guY2xhc3NMaXN0LnRvZ2dsZSgic2hvdyIsdj09PSJvayIpOwogIGJ0bnMuZm9yRWFjaChmdW5jdGlvbihiKXtiLmNsYXNzTGlzdC50b2dnbGUoIm9uIixiLmRhdGFzZXQudj09PXYpO30pOwp9CmJ0bnMuZm9yRWFjaChmdW5jdGlvbihiKXtiLm9uY2xpY2s9ZnVuY3Rpb24oKXtzZXQoYi5kYXRhc2V0LnYpO307fSk7CnNldCgib2siKTsKPC9zY3JpcHQ+" />

`brokenLinks` comes back on every write and edit (empty when they all resolve), so the agent never needs a follow-up dead-link check. A brand-new doc nothing points to comes back flagged as an orphan with a hub to link it from. Every write and edit is versioned, attributed, and the preview updates as it lands. None of that happens when you append to a file by hand. [Skills](../features/skills.mdx) teach the conventions, and the write path enforces the connective tissue.

## The index is authored, not extracted

No vector store means no second copy to rebuild, mis-chunk, or drift. Your links, folders, titles, and folder descriptions *are* the index. Other tools extract structure with an embedding model or an entity-guessing LLM; OpenKnowledge reads the structure you already wrote, so the agent traverses the source of truth. A well-linked base retrieves better because good links shorten the loop. [Folder templates](../advanced/folders-and-templates.mdx) keep that structure consistent as it grows: a folder can carry a template, so every new doc the agent creates starts with the same frontmatter and shape, and the fields search ranks on stay uniform.

## Semantic search (optional)

Off by default. Enable it per project and an embeddings signal blends into the ranking; it never replaces lexical search. Vectors sit in a local cache. Turning it on sends your query and matching text to your configured provider. See [Configuration](./configuration.mdx).
