orc-ai 0.1.35 → 0.1.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/README.md +61 -41
  2. package/dist/index.js +1263 -544
  3. package/dist/skills/orc-bugfix/SKILL.md +2 -2
  4. package/dist/skills/orc-gateway/SKILL.md +2 -2
  5. package/dist/skills/orc-knowledge/SKILL.md +68 -109
  6. package/dist/skills/orc-main-base/SKILL.md +2 -2
  7. package/dist/skills/orc-memory/SKILL.md +66 -139
  8. package/dist/skills/orc-memory-review/SKILL.md +12 -12
  9. package/dist/skills/orc-planner/SKILL.md +1 -1
  10. package/dist/skills/orc-report/SKILL.md +1 -1
  11. package/dist/skills/orc-requirements/SKILL.md +3 -3
  12. package/dist/skills/orc-reviewer/SKILL.md +4 -4
  13. package/dist/skills/orc-session/SKILL.md +28 -9
  14. package/dist/skills/orc-tasks/SKILL.md +1 -1
  15. package/dist/skills/orc-worker-base/SKILL.md +6 -6
  16. package/dist/web/assets/{Agents-B0SalmRs.js → Agents-BCgZS9yM.js} +2 -2
  17. package/dist/web/assets/Audit-PGckH0vM.js +1 -0
  18. package/dist/web/assets/Dashboard-Dt96DD5F.js +1 -0
  19. package/dist/web/assets/DocumentWorkspace-BHbUy7ic.js +1 -0
  20. package/dist/web/assets/FileEditor-DCslTjES.js +1 -0
  21. package/dist/web/assets/{Jobs-CbEveAwk.js → Jobs-CXU4KM7g.js} +3 -3
  22. package/dist/web/assets/Knowledge-Dl4SueEz.js +38 -0
  23. package/dist/web/assets/PackageCatalog-Dch8MV9_.js +18 -0
  24. package/dist/web/assets/{Pager-Dq380YIX.js → Pager-DP4jbc0w.js} +1 -1
  25. package/dist/web/assets/Rules-CoMlVvUV.js +26 -0
  26. package/dist/web/assets/Sessions-B5wUetrc.js +1 -0
  27. package/dist/web/assets/Settings-CrMlCCF0.js +12 -0
  28. package/dist/web/assets/Skills-p8PK9QQh.js +1 -0
  29. package/dist/web/assets/{SourceEditor-C-ORhKmn.js → SourceEditor-DPHhZVrM.js} +5 -5
  30. package/dist/web/assets/{Tasks-Bqm_Sw0w.js → Tasks-rgOphGCq.js} +1 -1
  31. package/dist/web/assets/Terminals-krsRcQI9.js +43 -0
  32. package/dist/web/assets/abnfDiagram-VCTEODGH-Comk2Rw4.js +1 -0
  33. package/dist/web/assets/{arc-7YeQrVvw.js → arc-Bvi_lKMF.js} +1 -1
  34. package/dist/web/assets/architectureDiagram-5GKGNRK7-BTnv8TEv.js +36 -0
  35. package/dist/web/assets/{blockDiagram-I7D4REHJ-DuwUAwPZ.js → blockDiagram-I7D4REHJ-DeeC122Z.js} +3 -3
  36. package/dist/web/assets/{c4Diagram-7LVT6UL2-B-AydoFZ.js → c4Diagram-7LVT6UL2-BgW5C1aW.js} +2 -2
  37. package/dist/web/assets/channel-DEfxPxY-.js +1 -0
  38. package/dist/web/assets/{chunk-2Q5K7J3B-Cxxn21e3.js → chunk-2Q5K7J3B-DNjz7yJz.js} +1 -1
  39. package/dist/web/assets/{chunk-5VM5RSS4-BmHgdUXz.js → chunk-5VM5RSS4-JLiAXzlU.js} +1 -1
  40. package/dist/web/assets/{chunk-F27PBJKO-CP_Ga5JG.js → chunk-F27PBJKO-4rWBzZDo.js} +1 -1
  41. package/dist/web/assets/{chunk-IMKFNOWR-DCCMGBrG.js → chunk-IMKFNOWR-D4mPRcFe.js} +1 -1
  42. package/dist/web/assets/{chunk-JWPE2WC7-Jf1gochR.js → chunk-JWPE2WC7-BgD0K5Ez.js} +1 -1
  43. package/dist/web/assets/{chunk-POPQ4Y6H-DttO_02r.js → chunk-POPQ4Y6H-ClQOYSty.js} +1 -1
  44. package/dist/web/assets/{chunk-SVP7TREG-BvMBeF4B.js → chunk-SVP7TREG-D3Cn_lvd.js} +1 -1
  45. package/dist/web/assets/{chunk-TICWLB2K-BEDb9Qnt.js → chunk-TICWLB2K-DPn2znfA.js} +1 -1
  46. package/dist/web/assets/{chunk-XXDRQBXY-CsfHMr9_.js → chunk-XXDRQBXY-2xXr8EXw.js} +1 -1
  47. package/dist/web/assets/classDiagram-ZZMXUADV-AHd3Z06u.js +1 -0
  48. package/dist/web/assets/classDiagram-v2-VYDZK3BY-AHd3Z06u.js +1 -0
  49. package/dist/web/assets/cose-bilkent-JH36ORCC-CHqRRPA_.js +1 -0
  50. package/dist/web/assets/{cynefin-OW5HDTMX-D4hXpO9D.js → cynefin-OW5HDTMX-Bu5NPO95.js} +1 -1
  51. package/dist/web/assets/cynefinDiagram-5FMLGOSQ-BI3nxgnD.js +62 -0
  52. package/dist/web/assets/{dagre-GXQ25YYZ-DWF1W6uI.js → dagre-GXQ25YYZ-B7lINgif.js} +2 -2
  53. package/dist/web/assets/{diagram-S7CK7UJ4-BAdX2XSr.js → diagram-S7CK7UJ4-C-D6efep.js} +2 -2
  54. package/dist/web/assets/diagram-UQ7AKVKN-BLuEz09b.js +41 -0
  55. package/dist/web/assets/{diagram-VSXAHHWV-DwrlCNqJ.js → diagram-VSXAHHWV-CUPoEtgr.js} +2 -2
  56. package/dist/web/assets/diagram-VX7I27RA-CSSKOhYt.js +24 -0
  57. package/dist/web/assets/diagram-Z3DM3KII-DPn5bqOq.js +24 -0
  58. package/dist/web/assets/download-CM6xWttS.js +6 -0
  59. package/dist/web/assets/ebnfDiagram-PWID7BFC-MFXoS-Jz.js +1 -0
  60. package/dist/web/assets/{erDiagram-RLTQ6QDP-resERPoL.js → erDiagram-RLTQ6QDP-4HM-oT_n.js} +2 -2
  61. package/dist/web/assets/{flowDiagram-HODETNUW-269od26p.js → flowDiagram-HODETNUW-C4Fh3QeO.js} +1 -1
  62. package/dist/web/assets/{folder-open-DQV_HFPJ.js → folder-open-B4mla76J.js} +2 -2
  63. package/dist/web/assets/ganttDiagram-EL5Y4UJY-BB0_ZKN6.js +292 -0
  64. package/dist/web/assets/gitGraphDiagram-WWUBYQGX-BmQ3vg7J.js +106 -0
  65. package/dist/web/assets/highlighted-body-KPVGNVTW-oCX1KOoZ.js +1 -0
  66. package/dist/web/assets/index-1DuOwIVM.css +1 -0
  67. package/dist/web/assets/index-C8LK_ZGr.js +379 -0
  68. package/dist/web/assets/infoDiagram-27XIBGKW-BTPkoR3C.js +2 -0
  69. package/dist/web/assets/{ishikawaDiagram-5VMMS53U-HS3tPzt7.js → ishikawaDiagram-5VMMS53U-CiHd2ebW.js} +2 -2
  70. package/dist/web/assets/{journeyDiagram-3NMN7TZE-Dc3Uhk6f.js → journeyDiagram-3NMN7TZE-CxaySxDn.js} +2 -2
  71. package/dist/web/assets/{kanban-definition-UXKFOSKX-C7l1XX6r.js → kanban-definition-UXKFOSKX-BOX0YIRw.js} +2 -2
  72. package/dist/web/assets/{layout-DEgz8GgK.js → layout-BhNFpPPe.js} +1 -1
  73. package/dist/web/assets/{linear-DhmYDpoB.js → linear-DHq-y1s_.js} +1 -1
  74. package/dist/web/assets/{mermaid-HWGCJPDP-BSvASSLS.js → mermaid-HWGCJPDP-DJNeD_0S.js} +121 -116
  75. package/dist/web/assets/{mindmap-definition-YA3MSWOX-D0dHafwi.js → mindmap-definition-YA3MSWOX-DZGpGSz5.js} +2 -2
  76. package/dist/web/assets/pegDiagram-XKGWAZYB-BxMh-_51.js +1 -0
  77. package/dist/web/assets/{pencil-CMmJBoOk.js → pencil-B6dqJ9w4.js} +2 -2
  78. package/dist/web/assets/pieDiagram-E7YTZNPT-CS3y4-9p.js +39 -0
  79. package/dist/web/assets/{quadrantDiagram-AXDQQJYC-BTdszDQL.js → quadrantDiagram-AXDQQJYC-CpI43lZu.js} +2 -2
  80. package/dist/web/assets/railroadDiagram-O6MQD6OU-DjJq4i95.js +1 -0
  81. package/dist/web/assets/{refresh-cw-BFntit-s.js → refresh-cw-DlrGbI-a.js} +2 -2
  82. package/dist/web/assets/{requirementDiagram-BXWQKSXE-BVP2xYtV.js → requirementDiagram-BXWQKSXE-s2eQx2yN.js} +2 -2
  83. package/dist/web/assets/{sankeyDiagram-P5KCCOFB-D-X3TW62.js → sankeyDiagram-P5KCCOFB-D_Vdp4pK.js} +2 -2
  84. package/dist/web/assets/{save-UXRnToPZ.js → save-C9B3YcwG.js} +1 -1
  85. package/dist/web/assets/schemas-Cwl03S4d.js +57 -0
  86. package/dist/web/assets/{scroll-area-BoNnJDMN.js → scroll-area-BlQvOdJP.js} +1 -1
  87. package/dist/web/assets/{sequenceDiagram-WJ2MYXX4-7_HUy4Mr.js → sequenceDiagram-WJ2MYXX4-CQHywZuE.js} +2 -2
  88. package/dist/web/assets/sizeCapture-INFHLROL-BInl5f7-.js +1 -0
  89. package/dist/web/assets/stateDiagram-D77RDMKH-DzvPlBSY.js +1 -0
  90. package/dist/web/assets/stateDiagram-v2-MP3YSRHH-BiG6-goP.js +1 -0
  91. package/dist/web/assets/swimlanes-42K2YHIH-Dg2ec7U4.js +1 -0
  92. package/dist/web/assets/swimlanesDiagram-VR7AAH4N-CGOOp6ap.js +8 -0
  93. package/dist/web/assets/{timeline-definition-24CTP7MA-DQD5x4b2.js → timeline-definition-24CTP7MA-CIv5WXwQ.js} +2 -2
  94. package/dist/web/assets/upload-Bj7E30a8.js +6 -0
  95. package/dist/web/assets/useJobs-5iAiSyqW.js +1 -0
  96. package/dist/web/assets/useKnowledge-D0_usn9_.js +1 -0
  97. package/dist/web/assets/useMemories-8BpYi3YI.js +1 -0
  98. package/dist/web/assets/useProjectScope-CRW39JH-.js +1 -0
  99. package/dist/web/assets/{vennDiagram-4TSXK5OY-C7G0HRYM.js → vennDiagram-4TSXK5OY-XAHw4n3M.js} +2 -2
  100. package/dist/web/assets/{wardleyDiagram-VM6X3IG4-D0q7Irz9.js → wardleyDiagram-VM6X3IG4-BIEdfrsN.js} +2 -2
  101. package/dist/web/assets/wiki-links-Y6CQL1QZ.js +1 -0
  102. package/dist/web/assets/{xychartDiagram-S5SC5T6Z-DWdMDa4h.js → xychartDiagram-S5SC5T6Z-BaNxlHBC.js} +2 -2
  103. package/dist/web/favicon.svg +6 -0
  104. package/dist/web/index.html +3 -2
  105. package/package.json +4 -3
  106. package/dist/web/assets/Audit-D3dBaCoN.js +0 -1
  107. package/dist/web/assets/Dashboard-CJ3KiCyu.js +0 -1
  108. package/dist/web/assets/DocumentWorkspace-O0ez-i13.js +0 -1
  109. package/dist/web/assets/FileEditor-Ch6e0hEv.js +0 -1
  110. package/dist/web/assets/Knowledge-vreYJPaX.js +0 -3
  111. package/dist/web/assets/PackageCatalog-BvxcvnLY.js +0 -23
  112. package/dist/web/assets/Rules-CcDAoIt6.js +0 -82
  113. package/dist/web/assets/Sessions-CMlxfa9p.js +0 -1
  114. package/dist/web/assets/Settings-DNQy_ZxV.js +0 -11
  115. package/dist/web/assets/Skills-FeFqT9z_.js +0 -6
  116. package/dist/web/assets/Terminals-BMLLQPoh.js +0 -43
  117. package/dist/web/assets/Wiki-CljmD-o3.js +0 -9
  118. package/dist/web/assets/abnfDiagram-VCTEODGH-DrtWnK_p.js +0 -1
  119. package/dist/web/assets/architectureDiagram-5GKGNRK7-B_XpUAdd.js +0 -36
  120. package/dist/web/assets/channel-DZP1_EO2.js +0 -1
  121. package/dist/web/assets/classDiagram-ZZMXUADV-CJY6LvNT.js +0 -1
  122. package/dist/web/assets/classDiagram-v2-VYDZK3BY-CJY6LvNT.js +0 -1
  123. package/dist/web/assets/cose-bilkent-JH36ORCC-DrtWlmbR.js +0 -1
  124. package/dist/web/assets/cynefinDiagram-5FMLGOSQ-Cd_bq103.js +0 -62
  125. package/dist/web/assets/diagram-UQ7AKVKN-Crzux2nr.js +0 -41
  126. package/dist/web/assets/diagram-VX7I27RA-BOeX6Wvt.js +0 -24
  127. package/dist/web/assets/diagram-Z3DM3KII-hNSyc7-M.js +0 -24
  128. package/dist/web/assets/ebnfDiagram-PWID7BFC-BRqoglai.js +0 -1
  129. package/dist/web/assets/ganttDiagram-EL5Y4UJY-CCeV9WK6.js +0 -292
  130. package/dist/web/assets/gitGraphDiagram-WWUBYQGX-BN4ha9TV.js +0 -106
  131. package/dist/web/assets/highlighted-body-KPVGNVTW-DO7C4FwV.js +0 -1
  132. package/dist/web/assets/index-BiQylL9N.js +0 -378
  133. package/dist/web/assets/index-CaCVuTzo.css +0 -1
  134. package/dist/web/assets/infoDiagram-27XIBGKW-BRN-weEs.js +0 -2
  135. package/dist/web/assets/pegDiagram-XKGWAZYB-DxUE96Rq.js +0 -1
  136. package/dist/web/assets/pieDiagram-E7YTZNPT-CS82gfYC.js +0 -39
  137. package/dist/web/assets/railroadDiagram-O6MQD6OU-Cp9wkvOx.js +0 -1
  138. package/dist/web/assets/sizeCapture-INFHLROL-CTXMBoIC.js +0 -1
  139. package/dist/web/assets/stateDiagram-D77RDMKH-DIy25Pdw.js +0 -1
  140. package/dist/web/assets/stateDiagram-v2-MP3YSRHH-Fhuap5B_.js +0 -1
  141. package/dist/web/assets/swimlanes-42K2YHIH-DCMqF0Po.js +0 -1
  142. package/dist/web/assets/swimlanesDiagram-VR7AAH4N-wD6u-_Xx.js +0 -8
  143. package/dist/web/assets/useJobs-DDAgZxMS.js +0 -1
  144. package/dist/web/assets/useMemories-CJnbuyKh.js +0 -1
  145. package/dist/web/assets/useProjectScope-nq9kbnAP.js +0 -1
package/README.md CHANGED
@@ -28,14 +28,14 @@ ORC fixes this. Shared memory across every session. A task board where agents su
28
28
  | ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
29
29
  | **Agent orchestration** | Task loop spawns workers across backends (Claude Code, Codex, Gemini, Copilot, A2A), manages concurrency and review cycles |
30
30
  | **Human-in-the-loop** | Agents submit work for your approval via CLI, Telegram, or Slack before anything lands |
31
- | **Shared memory** | Decisions, rules, and discoveries stored once, searchable by any session via ranked full-text search |
31
+ | **Shared memory** | Short project facts (ports, conventions, gotchas, decisions), ranked by priority and loaded into every session's context |
32
32
  | **Task board** | `todo → queued → doing → review → done` with dependency tracking, priority, and automatic unblocking |
33
33
  | **Multi-backend routing** | Route to Claude (in-process, nothing to install), ACPX (14+ agents), agentapi, or remote A2A endpoints — with `orc doctor` reporting which are usable |
34
34
  | **Job runner** | Cron, file-watch, webhook, or manual triggers with full run history |
35
- | **MCP server** | 34 tools connect any [Model Context Protocol](https://modelcontextprotocol.io) (MCP) compatible agent — stdio or Streamable HTTP |
35
+ | **MCP server** | 54 tools connect any [Model Context Protocol](https://modelcontextprotocol.io) (MCP) compatible agent — stdio or Streamable HTTP |
36
36
  | **Session continuity** | Snapshots survive context compaction so agents resume where they left off |
37
37
  | **Gateway** | Approve work, search memory, and chat with live agents from Telegram or Slack |
38
- | **Knowledge search** | Index document collections (markdown, notes, wikis) and search them via BM25 or hybrid (vector + reranking) |
38
+ | **Knowledge bases** | Upload PDFs, Office files and Markdown or copy in local folders; hybrid full-text + vector search with cited passages |
39
39
  | **Skill library** | Discoverable workflow templates (coder, reviewer, planner, bugfix) that encode your standards |
40
40
  | **Task flows** | Per-task graphs: conditional edges, bounded loops, parallel fan-out with joins, and human gates — with hard termination rails |
41
41
 
@@ -112,7 +112,7 @@ orc project use my-app
112
112
 
113
113
  # 3. Add tasks and memories - everything auto-scopes to my-app
114
114
  orc task add "Fix the auth bug" --priority high
115
- orc mem add "Use RWMutex for token refresh" --type decision
115
+ orc mem add token-refresh-lock -d "Check before touching token refresh" -c "Use RWMutex for token refresh" --priority 60
116
116
  orc job add nightly --command "bun run test" --trigger cron --cron "0 22 * * *"
117
117
 
118
118
  # 4. See everything
@@ -138,6 +138,8 @@ The web dashboard ships inside the `orc` binary and is served by the API process
138
138
  | `GET /mcp` | MCP server (streamable HTTP) |
139
139
  | `GET /tasks/<id>`, `/knowledge`, … | `index.html` again - a navigation request matching no static file falls back to the SPA shell, so dashboard links are shareable |
140
140
 
141
+ `/mcp?mode=meta` serves three meta-tools (`tool_search`, `tool_describe`, `tool_invoke`) instead of the full tool list, which keeps client context small; the model finds a tool, reads its schema, then calls it through `tool_invoke` with the same validation as a direct call. Stdio parity: `orc mcp --mode meta`. Any other `mode` value returns HTTP 400.
142
+
141
143
  Override the served dist directory with `ORC_WEB_DIST=/path/to/web/dist` if you want to host a custom build (e.g. a fork). If no dist is found, the server runs in pure-API mode.
142
144
 
143
145
  ### Desktop app
@@ -204,7 +206,7 @@ Add to `~/.claude/settings.json`:
204
206
  "hooks": {
205
207
  "PostToolUse": [
206
208
  {
207
- "matcher": "Write|Edit|MultiEdit|StrReplace|EditNotebook|Bash|Shell|Agent|EnterPlanMode|ExitPlanMode|mcp__orc__task_|mcp__orc__memory_store|mcp__orc__memory_delete|mcp__orc__job_run|mcp__orc__job_create|mcp__orc__job_update",
209
+ "matcher": "Write|Edit|MultiEdit|StrReplace|EditNotebook|Bash|Shell|Agent|EnterPlanMode|ExitPlanMode|mcp__orc__task_|mcp__orc__memory_create|mcp__orc__memory_delete|mcp__orc__job_run|mcp__orc__job_create|mcp__orc__job_update",
208
210
  "hooks": [
209
211
  {
210
212
  "type": "command",
@@ -374,7 +376,7 @@ orc project add my-app -d "Main application"
374
376
  orc project use my-app # set active
375
377
 
376
378
  orc task list # scoped to my-app
377
- orc mem search "auth" # scoped to my-app
379
+ orc mem list -q auth # scoped to my-app
378
380
  orc task list -p infra # override to different project
379
381
  orc task list --no-project # see everything
380
382
  ```
@@ -385,45 +387,55 @@ MCP tools follow the same logic - pass `project: "name"` to scope, or omit to us
385
387
 
386
388
  ### Memory
387
389
 
388
- Store decisions, conventions, and discoveries that persist across all sessions:
390
+ A memory is a short project fact worth knowing next session: ports, conventions, gotchas,
391
+ decisions, pointers. Each has a lowercase-hyphenated `name` (unique per project), a
392
+ `description` saying when it matters, `content` (up to 800 characters by default) and an
393
+ optional `priority` from 0 to 100. `context` loads the top 30 memories by priority; agents
394
+ then read the ones they need. Procedures and long guidance belong in skills.
389
395
 
390
396
  ```bash
391
- orc mem add "All IDs are ULIDs" --type rule
392
- orc mem add "Use PostgreSQL for concurrent writes" --type decision
393
- orc mem search "authentication"
397
+ orc mem add ulid-ids -d "Check before adding a table or ID field" -c "All IDs are ULIDs" --priority 90
398
+ orc mem list -q ids # search names and descriptions
399
+ orc mem show ulid-ids
400
+ orc mem edit ulid-ids --priority 80 -r "Narrower than we thought"
401
+ orc mem history ulid-ids # every change, with before/after
402
+ orc mem revert ulid-ids <change-id> --expected-change-id <latest-change-id> -r "Undo mistaken edit"
394
403
  ```
395
404
 
396
- | Type | Weight | Use for |
397
- | ----------- | ------ | ----------------------------------------------- |
398
- | `rule` | High | Conventions: "all IDs are ULIDs" |
399
- | `decision` | High | Choices: "use PostgreSQL for concurrent writes" |
400
- | `discovery` | Medium | Findings: "token refresh has a race condition" |
401
- | `event` | Low | Things that happened: "deployed v1.0" |
402
- | `fact` | Low | General knowledge (default) |
403
-
404
- ### Knowledge
405
+ ### Knowledge bases
405
406
 
406
- Index existing document collections (markdown, notes, code docs) and make them searchable by any agent. Unlike memory (short agent-authored notes), knowledge searches pre-existing files on disk.
407
+ Knowledge bases hold human reference documents for agents to search and cite. A knowledge base belongs to a project or is global. Add documents by uploading files (PDF, Word, PowerPoint, Excel, HTML, CSV, Markdown, text), writing Markdown in the dashboard, or registering a folder whose files are copied in. ORC never writes the folder: a copy follows its file on each scan until it is edited in ORC, and a file deleted from the folder keeps its copy. Documents have folders, labels and `[[links]]` with backlinks.
407
408
 
408
409
  ```bash
409
- # Add a document collection
410
- orc knowledge add my-docs --path ~/projects/docs --pattern "**/*.md"
410
+ orc kb create Runbooks --project my-app
411
+ orc kb add Runbooks ./docs/*.pdf # upload and parse
412
+ orc kb sources add Runbooks ./handbook # copy a folder in, rescanned periodically
413
+ orc kb editable-by Runbooks ui,cli,api # agents (mcp) may read but not edit
414
+ orc kb search "rollback procedure" # cited passages
415
+ orc kb evidence "how do we rotate keys" # budgeted evidence pack
416
+ orc kb usage Runbooks # reads by source (mcp, api, cli, ui)
417
+ ```
411
418
 
412
- # Search across indexed documents
413
- orc knowledge search "authentication flow"
419
+ Comments on a knowledge base or one of its documents ask for a change: a correction, a source to digest, a lesson to record. Each has an author and source, a status (open, resolved, dismissed) and one closing reply.
414
420
 
415
- # List collections
416
- orc knowledge list
421
+ Any knowledge base can have a digest: an agent (Claude, Codex, ...) that follows the knowledge base's own instructions on a schedule, handling open comments first and then reading memories, session summaries and audit records to add, correct and clean up documents. The schedule is an ordinary ORC job (cron or manual) with run history. In the dashboard choose **Add digest** on a knowledge base; it starts from a generic template. Scheduled runs are skipped when nothing new happened. Each active project gets a starter **Learnings** knowledge base with a daily 03:00 digest.
417
422
 
418
- # Re-index after files change
419
- orc knowledge update
423
+ ```bash
424
+ orc kb comment add Learnings "Digest https://example.com/postmortem"
425
+ orc kb digest template > digest.md # edit, then:
426
+ orc kb digest set Runbooks -b codex --cron "0 3 * * *" -i digest.md
427
+ orc kb digest run Runbooks
420
428
  ```
421
429
 
422
- Knowledge uses [QMD](https://github.com/nicholasgriffintn/qmd) as the search engine. By default it runs BM25 full-text search (no LLM needed). Set `search_mode: "hybrid"` in config for vector search with reranking - embeddings are generated automatically when documents are indexed.
430
+ Search combines title/path matches, SQLite full-text search and, when embeddings are configured (Ollama or an OpenAI-compatible API), vectors stored with sqlite-vec. Set the embedding URL, model and API key or token in Settings or with `orc kb settings`; the key is stored encrypted and never returned by the API. Results cite passages as `kb:<doc>@<rev>#<n>`. Every read is counted per document and source.
431
+
432
+ The built-in parser handles all formats without extra installs. For better PDF layout, tables and OCR, install the optional [Docling](https://github.com/docling-project/docling) parser from Settings or with `orc kb docling install` (about 2 GB); in `auto` mode it is then used for PDFs and images. Each knowledge base can override the parser.
433
+
434
+ Each knowledge base lists the call sources that may change its documents (`editable_by`: `ui`, `cli`, `api`, `mcp`; all four by default). Agents write with `kb_write` and `kb_document` (partial edits by exact text or line range) where `mcp` is allowed; every change is a revision recording its source and session. Knowledge base settings and knowledge settings cannot be changed over MCP, so an agent cannot widen its own access. Rendered Markdown shows remote images as links instead of loading them.
423
435
 
424
- Collections can be scoped to projects. When scoped, searches and listing filter to only that project's collections.
436
+ To back up knowledge bases, stop ORC and copy `~/.orc/orc.db` (with its `-wal` and `-shm` files) and `~/.orc/knowledge/originals/`, plus `~/.orc/secret.key`, without which a saved embedding API key cannot be decrypted and must be entered again. The search index, parse results and Markdown copies are rebuilt on the next start.
425
437
 
426
- **MCP tools:** `knowledge_search`, `knowledge_get`, `knowledge_collections`, `knowledge_collection_add`, `knowledge_collection_remove`, `knowledge_update`
438
+ **MCP tools:** `kb_list`, `kb_search`, `kb_evidence`, `kb_read`, `kb_documents`, `kb_write`, `kb_document`, `kb_comment`, `kb_manage`, `kb_digest`, `kb_maintenance`
427
439
 
428
440
  ### Task status flow
429
441
 
@@ -560,7 +572,8 @@ npx skills add niradler/orc --all -g
560
572
  | --------------- | -------------------------------------------------------------------------- |
561
573
  | `orc-session` | Session start, context compaction, resuming work |
562
574
  | `orc-tasks` | Task creation, status updates, HITL review, task decomposition |
563
- | `orc-knowledge` | Storing decisions, searching memory, "remember this", "what did we decide" |
575
+ | `orc-memory` | Short project facts, "remember this", "what did we decide" |
576
+ | `orc-knowledge` | Searching indexed docs, managing knowledge collections |
564
577
  | `orc-gateway` | Telegram/Slack setup, remote approval, live agent sessions |
565
578
 
566
579
  ### Built-in skill templates
@@ -662,12 +675,12 @@ Tools are available to any connected agent. Start every session with `context`.
662
675
  | Category | Tools |
663
676
  | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
664
677
  | **Project** | `project_list` |
665
- | **Memory** | `context`, `memory_search`, `memory_get`, `memory_store`, `memory_update` |
678
+ | **Memory** | `context`, `memory_list`, `memory_read`, `memory_create`, `memory_update`, `memory_delete`, `memory_history`, `memory_revert` |
666
679
  | **Task** | `task_list`, `task_get`, `task_create`, `task_update`, `task_batch_create` |
667
680
  | **Skill** | `skill_list`, `skill_read`, `skill_create` |
668
681
  | **Agent** | `agent_list`, `agent_read`, `agent_create`, `agent_package_list`, `agent_package_read`, `agent_package_import` |
669
682
  | **Flow** | `flow_report`, `flow_status`, `flow_list`, `flow_read`, `flow_create`, `flow_attach` |
670
- | **Knowledge** | `knowledge_search`, `knowledge_get`, `knowledge_collections`, `knowledge_collection_add`, `knowledge_collection_remove`, `knowledge_update` |
683
+ | **Knowledge** | `kb_list`, `kb_search`, `kb_evidence`, `kb_read`, `kb_documents`, `kb_write`, `kb_maintenance` |
671
684
  | **Search** | `search` |
672
685
  | **Job** | `job_list`, `job_run`, `job_status` |
673
686
  | **Session** | `session_event`, `session_snapshot`, `session_restore`, `session_log` |
@@ -691,8 +704,10 @@ Runs on port 7700 with auto-generated OpenAPI spec.
691
704
  | `GET/POST/PATCH/DELETE` | `/tasks` | CRUD tasks |
692
705
  | `GET/POST` | `/tasks/{id}/notes` | Task notes |
693
706
  | `GET/POST/DELETE` | `/tasks/{id}/links` | Task dependencies |
694
- | `GET/POST/DELETE` | `/memories` | CRUD memories |
695
- | `GET` | `/memories/search` | BM25 search |
707
+ | `GET/POST` | `/memories` | List (`q`, `sort`) / create |
708
+ | `GET/PATCH/DELETE` | `/memories/{name}` | Read / update / delete by name |
709
+ | `GET` | `/memories/{name}/history` | Change history |
710
+ | `POST` | `/memories/{name}/revert` | Revert a change |
696
711
  | `GET` | `/knowledge/search` | Search documents (BM25/hybrid) |
697
712
  | `GET` | `/knowledge/documents/{id}` | Get document by docid |
698
713
  | `GET/POST/DELETE` | `/knowledge/collections` | CRUD collections |
@@ -728,7 +743,7 @@ orc doctor Check which agent backends are usable here
728
743
 
729
744
  orc project list|add|show|use|update|archive
730
745
  orc task list|add|show|update|done|review|approve|reject|delete
731
- orc mem list|add|search
746
+ orc mem list|show|add|edit|delete|history|revert
732
747
  orc job list|add|run|runs
733
748
  orc session list|show|log
734
749
  orc skill list|show
@@ -771,8 +786,13 @@ ORC merges config in priority order (later wins):
771
786
  | `ORC_AGENT_LOOP_DEFAULT_BACKEND` | `claude` | Default agent backend |
772
787
  | `ORC_AGENT_LOOP_IDLE_TIMEOUT` | `20` | Session idle timeout (minutes) |
773
788
  | `ORC_AGENT_LOOP_AUTO_APPROVE` | `true` | Auto-approve worker tool permissions |
774
- | `ORC_KNOWLEDGE_DB_PATH` | `~/.orc/knowledge.db` | Knowledge search database path |
775
- | `ORC_KNOWLEDGE_SEARCH_MODE` | `lexical` | `lexical` (BM25) or `hybrid` (vector + reranking) |
789
+ | `ORC_KNOWLEDGE_ROOT` | beside `orc.db` | Knowledge base storage (files, index) |
790
+ | `ORC_KNOWLEDGE_PARSER` | `auto` | `auto`, `basic` or `docling` |
791
+ | `ORC_KNOWLEDGE_EMBEDDING_PROVIDER` | `none` | `none`, `ollama` or `openai` |
792
+ | `ORC_KNOWLEDGE_EMBEDDING_URL` | provider default | Embedding endpoint |
793
+ | `ORC_KNOWLEDGE_EMBEDDING_MODEL` | provider default | Embedding model |
794
+ | `ORC_KNOWLEDGE_EMBEDDING_API_KEY` | - | API key for OpenAI-compatible embeddings |
795
+ | `ORC_SQLITE_VEC_PATH` | bundled | Path to a sqlite-vec `vec0` library |
776
796
 
777
797
  </details>
778
798
 
@@ -852,7 +872,7 @@ See [AGENTS.md](./AGENTS.md) for the full development guide and coding conventio
852
872
 
853
873
  ## Learn more
854
874
 
855
- - [Evolving Wiki](./docs/evolving-wiki.md) - cited retrieval, automatic session consolidation, evaluated skill promotion, and human revert
875
+ - [Knowledge learning loop](./docs/knowledge-loop.md) - memories, knowledge base digests and comments, skill edits, and human revert
856
876
  - [Agent Rules](./docs/agent-rules.md) - opt-in tool protection, revision history, deterministic job actions, and evidence-based skill evaluation
857
877
  - [Usage Guide](./docs/usage-guide.md) - best practices for memory, tasks, multi-agent workflows, and configuration
858
878
  - [Vision](./docs/vision.md) - why ORC exists and the problem it solves
@@ -862,4 +882,4 @@ See [AGENTS.md](./AGENTS.md) for the full development guide and coding conventio
862
882
 
863
883
  ### Knowledge learning
864
884
 
865
- Session review and a daily digest compile verified notes into wiki lessons and edited skills. Reuse them through ordinary wiki/KB search and skill reads. The dashboard shows learning history, audit records and manual skill revert. See [Knowledge learning loop](docs/knowledge-loop.md) for scopes, scheduling and validation limits.
885
+ Session review records verified lessons, and each project's Learnings knowledge base has a daily digest that turns memories, session summaries and comments into documents. Reuse them through ordinary KB search and skill reads. The dashboard shows learning history, audit records and manual skill revert. See [Knowledge learning loop](docs/knowledge-loop.md) for scopes, scheduling and validation limits.