@jonathangu/openclawbrain 0.3.0 → 0.3.1

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 (56) hide show
  1. package/README.md +140 -290
  2. package/docs/END_STATE.md +106 -94
  3. package/docs/EVIDENCE.md +71 -23
  4. package/docs/RELEASE_CONTRACT.md +46 -32
  5. package/docs/agent-tools.md +65 -34
  6. package/docs/architecture.md +128 -142
  7. package/docs/configuration.md +62 -25
  8. package/docs/evidence/2026-03-16/1fc8ee6fd7892e3deb27d111434df948bca2a66b/channels-status.txt +20 -0
  9. package/docs/evidence/2026-03-16/1fc8ee6fd7892e3deb27d111434df948bca2a66b/config-snapshot.json +94 -0
  10. package/docs/evidence/2026-03-16/1fc8ee6fd7892e3deb27d111434df948bca2a66b/doctor.json +14 -0
  11. package/docs/evidence/2026-03-16/1fc8ee6fd7892e3deb27d111434df948bca2a66b/gateway-probe.txt +24 -0
  12. package/docs/evidence/2026-03-16/1fc8ee6fd7892e3deb27d111434df948bca2a66b/gateway-status.txt +31 -0
  13. package/docs/evidence/2026-03-16/1fc8ee6fd7892e3deb27d111434df948bca2a66b/init-capture.json +15 -0
  14. package/docs/evidence/2026-03-16/1fc8ee6fd7892e3deb27d111434df948bca2a66b/logs.txt +357 -0
  15. package/docs/evidence/2026-03-16/1fc8ee6fd7892e3deb27d111434df948bca2a66b/status-all.txt +61 -0
  16. package/docs/evidence/2026-03-16/1fc8ee6fd7892e3deb27d111434df948bca2a66b/status.json +275 -0
  17. package/docs/evidence/2026-03-16/1fc8ee6fd7892e3deb27d111434df948bca2a66b/summary.md +18 -0
  18. package/docs/evidence/2026-03-16/1fc8ee6fd7892e3deb27d111434df948bca2a66b/trace.json +222 -0
  19. package/docs/evidence/2026-03-16/1fc8ee6fd7892e3deb27d111434df948bca2a66b/validation-report.json +1515 -0
  20. package/docs/evidence/2026-03-16/1fc8ee6fd7892e3deb27d111434df948bca2a66b/workspace-inventory.json +4 -0
  21. package/docs/evidence/2026-03-16/4ccd71a22418b9170128b8d948f5a95801a10380/channels-status.txt +20 -0
  22. package/docs/evidence/2026-03-16/4ccd71a22418b9170128b8d948f5a95801a10380/config-snapshot.json +94 -0
  23. package/docs/evidence/2026-03-16/4ccd71a22418b9170128b8d948f5a95801a10380/doctor.json +14 -0
  24. package/docs/evidence/2026-03-16/4ccd71a22418b9170128b8d948f5a95801a10380/gateway-probe.txt +24 -0
  25. package/docs/evidence/2026-03-16/4ccd71a22418b9170128b8d948f5a95801a10380/gateway-status.txt +31 -0
  26. package/docs/evidence/2026-03-16/4ccd71a22418b9170128b8d948f5a95801a10380/init-capture.json +15 -0
  27. package/docs/evidence/2026-03-16/4ccd71a22418b9170128b8d948f5a95801a10380/logs.txt +362 -0
  28. package/docs/evidence/2026-03-16/4ccd71a22418b9170128b8d948f5a95801a10380/status-all.txt +61 -0
  29. package/docs/evidence/2026-03-16/4ccd71a22418b9170128b8d948f5a95801a10380/status.json +275 -0
  30. package/docs/evidence/2026-03-16/4ccd71a22418b9170128b8d948f5a95801a10380/summary.md +21 -0
  31. package/docs/evidence/2026-03-16/4ccd71a22418b9170128b8d948f5a95801a10380/trace.json +222 -0
  32. package/docs/evidence/2026-03-16/4ccd71a22418b9170128b8d948f5a95801a10380/validation-report.json +4400 -0
  33. package/docs/evidence/2026-03-16/4ccd71a22418b9170128b8d948f5a95801a10380/workspace-inventory.json +4 -0
  34. package/docs/evidence/2026-03-16/d93f09feea123a08d020fcad8a4523b6c1d26507/channels-status.txt +31 -0
  35. package/docs/evidence/2026-03-16/d93f09feea123a08d020fcad8a4523b6c1d26507/config-snapshot.json +94 -0
  36. package/docs/evidence/2026-03-16/d93f09feea123a08d020fcad8a4523b6c1d26507/doctor.json +14 -0
  37. package/docs/evidence/2026-03-16/d93f09feea123a08d020fcad8a4523b6c1d26507/gateway-probe.txt +34 -0
  38. package/docs/evidence/2026-03-16/d93f09feea123a08d020fcad8a4523b6c1d26507/gateway-status.txt +41 -0
  39. package/docs/evidence/2026-03-16/d93f09feea123a08d020fcad8a4523b6c1d26507/logs.txt +441 -0
  40. package/docs/evidence/2026-03-16/d93f09feea123a08d020fcad8a4523b6c1d26507/status-all.txt +60 -0
  41. package/docs/evidence/2026-03-16/d93f09feea123a08d020fcad8a4523b6c1d26507/status.json +276 -0
  42. package/docs/evidence/2026-03-16/d93f09feea123a08d020fcad8a4523b6c1d26507/summary.md +13 -0
  43. package/docs/evidence/2026-03-16/d93f09feea123a08d020fcad8a4523b6c1d26507/trace.json +4 -0
  44. package/docs/evidence/2026-03-16/d93f09feea123a08d020fcad8a4523b6c1d26507/validation-report.json +387 -0
  45. package/docs/tui.md +11 -4
  46. package/index.ts +194 -1
  47. package/package.json +1 -1
  48. package/src/brain-cli.ts +12 -1
  49. package/src/brain-harvest/scanner.ts +286 -16
  50. package/src/brain-harvest/self.ts +134 -6
  51. package/src/brain-runtime/evidence-detectors.ts +3 -1
  52. package/src/brain-runtime/harvester-extension.ts +3 -0
  53. package/src/brain-runtime/service.ts +2 -0
  54. package/src/brain-store/embedding.ts +29 -8
  55. package/src/brain-worker/worker.ts +40 -0
  56. package/src/engine.ts +1 -0
@@ -0,0 +1,387 @@
1
+ {
2
+ "validationRoot": "/Users/cormorantai/.openclaw-ocbphase1",
3
+ "validationHome": "/Users/cormorantai",
4
+ "validationStateDir": "/Users/cormorantai/.openclaw-ocbphase1",
5
+ "fixtureWorkspace": "/Users/cormorantai/.openclaw/workspace-ocbphase1",
6
+ "configPath": "/Users/cormorantai/.openclaw-ocbphase1/openclaw.json",
7
+ "artifactDir": "/Users/cormorantai/openclawbrain/docs/evidence/2026-03-16/d93f09feea123a08d020fcad8a4523b6c1d26507",
8
+ "gitSha": "d93f09feea123a08d020fcad8a4523b6c1d26507",
9
+ "diagnostics": {
10
+ "status": {
11
+ "command": "openclaw",
12
+ "args": [
13
+ "status",
14
+ "--json",
15
+ "--timeout",
16
+ "10000"
17
+ ],
18
+ "cwd": "/Users/cormorantai/openclawbrain",
19
+ "exitCode": 0,
20
+ "signal": null,
21
+ "ok": true,
22
+ "stdout": "[plugins] [openclawbrain] Plugin loaded (enabled=true, db=/Users/cormorantai/.openclaw-ocbphase1/lcm.db, threshold=0.75)\n{\n \"runtimeVersion\": \"2026.3.13\",\n \"heartbeat\": {\n \"defaultAgentId\": \"main\",\n \"agents\": [\n {\n \"agentId\": \"main\",\n \"enabled\": true,\n \"every\": \"30m\",\n \"everyMs\": 1800000\n }\n ]\n },\n \"channelSummary\": [],\n \"queuedSystemEvents\": [],\n \"sessions\": {\n \"paths\": [\n \"/Users/cormorantai/.openclaw-ocbphase1/agents/main/sessions/sessions.json\"\n ],\n \"count\": 1,\n \"defaults\": {\n \"model\": \"qwen2.5:7b-instruct\",\n \"contextTokens\": 262144\n },\n \"recent\": [\n {\n \"agentId\": \"main\",\n \"key\": \"agent:main:main\",\n \"kind\": \"direct\",\n \"sessionId\": \"475abd74-ed4f-4334-a896-8ffd7d81eec7\",\n \"updatedAt\": 1773635277472,\n \"age\": 16057669,\n \"abortedLastRun\": false,\n \"inputTokens\": 15733,\n \"outputTokens\": 280,\n \"cacheRead\": 0,\n \"cacheWrite\": 0,\n \"totalTokens\": 15733,\n \"totalTokensFresh\": true,\n \"remainingTokens\": 246411,\n \"percentUsed\": 6,\n \"model\": \"qwen2.5:7b-instruct\",\n \"contextTokens\": 262144,\n \"flags\": [\n \"id:475abd74-ed4f-4334-a896-8ffd7d81eec7\"\n ]\n }\n ],\n \"byAgent\": [\n {\n \"agentId\": \"main\",\n \"path\": \"/Users/cormorantai/.openclaw-ocbphase1/agents/main/sessions/sessions.json\",\n \"count\": 1,\n \"recent\": [\n {\n \"agentId\": \"main\",\n \"key\": \"agent:main:main\",\n \"kind\": \"direct\",\n \"sessionId\": \"475abd74-ed4f-4334-a896-8ffd7d81eec7\",\n \"updatedAt\": 1773635277472,\n \"age\": 16057669,\n \"abortedLastRun\": false,\n \"inputTokens\": 15733,\n \"outputTokens\": 280,\n \"cacheRead\": 0,\n \"cacheWrite\": 0,\n \"totalTokens\": 15733,\n \"totalTokensFresh\": true,\n \"remainingTokens\": 246411,\n \"percentUsed\": 6,\n \"model\": \"qwen2.5:7b-instruct\",\n \"contextTokens\": 262144,\n \"flags\": [\n \"id:475abd74-ed4f-4334-a896-8ffd7d81eec7\"\n ]\n }\n ]\n }\n ]\n },\n \"os\": {\n \"platform\": \"darwin\",\n \"arch\": \"arm64\",\n \"release\": \"25.3.0\",\n \"label\": \"macos 26.3 (arm64)\"\n },\n \"update\": {\n \"root\": \"/Users/cormorantai/opencormorant\",\n \"installKind\": \"git\",\n \"packageManager\": \"pnpm\",\n \"git\": {\n \"root\": \"/Users/cormorantai/opencormorant\",\n \"sha\": \"66e02b296fa7c18c04dc94fe071d916042a30137\",\n \"tag\": null,\n \"branch\": \"main\",\n \"upstream\": \"origin/main\",\n \"dirty\": false,\n \"ahead\": 0,\n \"behind\": 544,\n \"fetchOk\": true\n },\n \"deps\": {\n \"manager\": \"pnpm\",\n \"status\": \"stale\",\n \"lockfilePath\": \"/Users/cormorantai/opencormorant/pnpm-lock.yaml\",\n \"markerPath\": \"/Users/cormorantai/opencormorant/node_modules/.modules.yaml\",\n \"reason\": \"lockfile newer than install marker\"\n },\n \"registry\": {\n \"latestVersion\": \"2026.3.13\"\n }\n },\n \"updateChannel\": \"dev\",\n \"updateChannelSource\": \"git-branch\",\n \"memory\": {\n \"agentId\": \"main\",\n \"backend\": \"builtin\",\n \"files\": 0,\n \"chunks\": 0,\n \"dirty\": true,\n \"workspaceDir\": \"/Users/cormorantai/.openclaw/workspace-ocbphase1\",\n \"dbPath\": \"/Users/cormorantai/.openclaw-ocbphase1/memory/main.sqlite\",\n \"provider\": \"gemini\",\n \"model\": \"gemini-embedding-001\",\n \"requestedProvider\": \"auto\",\n \"sources\": [\n \"memory\"\n ],\n \"extraPaths\": [],\n \"sourceCounts\": [\n {\n \"source\": \"memory\",\n \"files\": 0,\n \"chunks\": 0\n }\n ],\n \"cache\": {\n \"enabled\": true,\n \"entries\": 0\n },\n \"fts\": {\n \"enabled\": true,\n \"available\": true\n },\n \"vector\": {\n \"enabled\": true,\n \"available\": true,\n \"extensionPath\": \"/Users/cormorantai/opencormorant/node_modules/.pnpm/sqlite-vec@0.1.7-alpha.2/node_modules/sqlite-vec-darwin-arm64/vec0.dylib\"\n },\n \"batch\": {\n \"enabled\": false,\n \"failures\": 0,\n \"limit\": 2,\n \"wait\": true,\n \"concurrency\": 2,\n \"pollIntervalMs\": 2000,\n \"timeoutMs\": 3600000\n },\n \"custom\": {\n \"searchMode\": \"hybrid\",\n \"readonlyRecovery\": {\n \"attempts\": 0,\n \"successes\": 0,\n \"failures\": 0\n }\n }\n },\n \"memoryPlugin\": {\n \"enabled\": true,\n \"slot\": \"memory-core\"\n },\n \"gateway\": {\n \"mode\": \"local\",\n \"url\": \"ws://127.0.0.1:19031\",\n \"urlSource\": \"local loopback\",\n \"misconfigured\": false,\n \"reachable\": false,\n \"connectLatencyMs\": null,\n \"self\": null,\n \"error\": \"connect failed: connect ECONNREFUSED 127.0.0.1:19031\",\n \"authWarning\": null\n },\n \"gatewayService\": {\n \"label\": \"LaunchAgent\",\n \"installed\": false,\n \"managedByOpenClaw\": false,\n \"externallyManaged\": false,\n \"loadedText\": \"not loaded\",\n \"runtimeShort\": \"unknown\"\n },\n \"nodeService\": {\n \"label\": \"LaunchAgent\",\n \"installed\": false,\n \"managedByOpenClaw\": false,\n \"externallyManaged\": false,\n \"loadedText\": \"not loaded\",\n \"runtimeShort\": \"unknown\"\n },\n \"agents\": {\n \"defaultId\": \"main\",\n \"agents\": [\n {\n \"id\": \"main\",\n \"workspaceDir\": \"/Users/cormorantai/.openclaw/workspace-ocbphase1\",\n \"bootstrapPending\": true,\n \"sessionsPath\": \"/Users/cormorantai/.openclaw-ocbphase1/agents/main/sessions/sessions.json\",\n \"sessionsCount\": 1,\n \"lastUpdatedAt\": 1773635277472,\n \"lastActiveAgeMs\": 16057665\n }\n ],\n \"totalSessions\": 1,\n \"bootstrapPendingCount\": 1\n },\n \"securityAudit\": {\n \"ts\": 1773651337689,\n \"summary\": {\n \"critical\": 3,\n \"warn\": 1,\n \"info\": 1\n },\n \"findings\": [\n {\n \"checkId\": \"summary.attack_surface\",\n \"severity\": \"info\",\n \"title\": \"Attack surface summary\",\n \"detail\": \"groups: open=0, allowlist=0\\ntools.elevated: enabled\\nhooks.webhooks: disabled\\nhooks.internal: disabled\\nbrowser control: enabled\\ntrust model: personal assistant (one trusted operator boundary), not hostile multi-tenant on one shared gateway\"\n },\n {\n \"checkId\": \"gateway.trusted_proxies_missing\",\n \"severity\": \"warn\",\n \"title\": \"Reverse proxy headers are not trusted\",\n \"detail\": \"gateway.bind is loopback and gateway.trustedProxies is empty. If you expose the Control UI through a reverse proxy, configure trusted proxies so local-client checks cannot be spoofed.\",\n \"remediation\": \"Set gateway.trustedProxies to your proxy IPs or keep the Control UI local-only.\"\n },\n {\n \"checkId\": \"gateway.loopback_no_auth\",\n \"severity\": \"critical\",\n \"title\": \"Gateway auth missing on loopback\",\n \"detail\": \"gateway.bind is loopback but no gateway auth secret is configured. If the Control UI is exposed through a reverse proxy, unauthenticated access is possible.\",\n \"remediation\": \"Set gateway.auth (token recommended) or keep the Control UI local-only.\"\n },\n {\n \"checkId\": \"browser.control_no_auth\",\n \"severity\": \"critical\",\n \"title\": \"Browser control has no auth\",\n \"detail\": \"Browser control HTTP routes are enabled but no gateway.auth token/password is configured. Any local process (or SSRF to loopback) can call browser control endpoints.\",\n \"remediation\": \"Set gateway.auth.token (recommended) or gateway.auth.password so browser control HTTP routes require authentication. Restarting the gateway will auto-generate gateway.auth.token when browser control is enabled.\"\n },\n {\n \"checkId\": \"models.small_params\",\n \"severity\": \"critical\",\n \"title\": \"Small models require sandboxing and web tools disabled\",\n \"detail\": \"Small models (<=300B params) detected:\\n- ollama/qwen2.5:7b-instruct (7B) @ agents.defaults.model.primary (unsafe; sandbox=off; web=[web_search, web_fetch, browser])\\nUncontrolled input tools allowed: web_search, web_fetch, browser.\\nSmall models are not recommended for untrusted inputs.\",\n \"remediation\": \"If you must use small models, enable sandboxing for all sessions (agents.defaults.sandbox.mode=\\\"all\\\") and disable web_search/web_fetch/browser (tools.deny=[\\\"group:web\\\",\\\"browser\\\"]).\"\n }\n ]\n },\n \"secretDiagnostics\": []\n}\n",
23
+ "stderr": "Config warnings:\\n- plugins.entries.ollama: plugin ollama: plugin id mismatch (manifest uses \"ollama\", entry hints \"ollama-provider\")\n- plugins.entries.sglang: plugin sglang: plugin id mismatch (manifest uses \"sglang\", entry hints \"sglang-provider\")\n- plugins.entries.vllm: plugin vllm: plugin id mismatch (manifest uses \"vllm\", entry hints \"vllm-provider\")\n[plugins] plugins.allow is empty; discovered non-bundled plugins may auto-load: openclawbrain (/Users/cormorantai/openclawbrain/index.ts). Set plugins.allow to explicit trusted ids.\n[plugins] [brain] Embedding model is unset; learned retrieval is disabled until init/configuration is complete\nConfig warnings:\\n- plugins.entries.ollama: plugin ollama: plugin id mismatch (manifest uses \"ollama\", entry hints \"ollama-provider\")\n- plugins.entries.sglang: plugin sglang: plugin id mismatch (manifest uses \"sglang\", entry hints \"sglang-provider\")\n- plugins.entries.vllm: plugin vllm: plugin id mismatch (manifest uses \"vllm\", entry hints \"vllm-provider\")\n",
24
+ "error": null,
25
+ "parsed": {
26
+ "runtimeVersion": "2026.3.13",
27
+ "heartbeat": {
28
+ "defaultAgentId": "main",
29
+ "agents": [
30
+ {
31
+ "agentId": "main",
32
+ "enabled": true,
33
+ "every": "30m",
34
+ "everyMs": 1800000
35
+ }
36
+ ]
37
+ },
38
+ "channelSummary": [],
39
+ "queuedSystemEvents": [],
40
+ "sessions": {
41
+ "paths": [
42
+ "/Users/cormorantai/.openclaw-ocbphase1/agents/main/sessions/sessions.json"
43
+ ],
44
+ "count": 1,
45
+ "defaults": {
46
+ "model": "qwen2.5:7b-instruct",
47
+ "contextTokens": 262144
48
+ },
49
+ "recent": [
50
+ {
51
+ "agentId": "main",
52
+ "key": "agent:main:main",
53
+ "kind": "direct",
54
+ "sessionId": "475abd74-ed4f-4334-a896-8ffd7d81eec7",
55
+ "updatedAt": 1773635277472,
56
+ "age": 16057669,
57
+ "abortedLastRun": false,
58
+ "inputTokens": 15733,
59
+ "outputTokens": 280,
60
+ "cacheRead": 0,
61
+ "cacheWrite": 0,
62
+ "totalTokens": 15733,
63
+ "totalTokensFresh": true,
64
+ "remainingTokens": 246411,
65
+ "percentUsed": 6,
66
+ "model": "qwen2.5:7b-instruct",
67
+ "contextTokens": 262144,
68
+ "flags": [
69
+ "id:475abd74-ed4f-4334-a896-8ffd7d81eec7"
70
+ ]
71
+ }
72
+ ],
73
+ "byAgent": [
74
+ {
75
+ "agentId": "main",
76
+ "path": "/Users/cormorantai/.openclaw-ocbphase1/agents/main/sessions/sessions.json",
77
+ "count": 1,
78
+ "recent": [
79
+ {
80
+ "agentId": "main",
81
+ "key": "agent:main:main",
82
+ "kind": "direct",
83
+ "sessionId": "475abd74-ed4f-4334-a896-8ffd7d81eec7",
84
+ "updatedAt": 1773635277472,
85
+ "age": 16057669,
86
+ "abortedLastRun": false,
87
+ "inputTokens": 15733,
88
+ "outputTokens": 280,
89
+ "cacheRead": 0,
90
+ "cacheWrite": 0,
91
+ "totalTokens": 15733,
92
+ "totalTokensFresh": true,
93
+ "remainingTokens": 246411,
94
+ "percentUsed": 6,
95
+ "model": "qwen2.5:7b-instruct",
96
+ "contextTokens": 262144,
97
+ "flags": [
98
+ "id:475abd74-ed4f-4334-a896-8ffd7d81eec7"
99
+ ]
100
+ }
101
+ ]
102
+ }
103
+ ]
104
+ },
105
+ "os": {
106
+ "platform": "darwin",
107
+ "arch": "arm64",
108
+ "release": "25.3.0",
109
+ "label": "macos 26.3 (arm64)"
110
+ },
111
+ "update": {
112
+ "root": "/Users/cormorantai/opencormorant",
113
+ "installKind": "git",
114
+ "packageManager": "pnpm",
115
+ "git": {
116
+ "root": "/Users/cormorantai/opencormorant",
117
+ "sha": "66e02b296fa7c18c04dc94fe071d916042a30137",
118
+ "tag": null,
119
+ "branch": "main",
120
+ "upstream": "origin/main",
121
+ "dirty": false,
122
+ "ahead": 0,
123
+ "behind": 544,
124
+ "fetchOk": true
125
+ },
126
+ "deps": {
127
+ "manager": "pnpm",
128
+ "status": "stale",
129
+ "lockfilePath": "/Users/cormorantai/opencormorant/pnpm-lock.yaml",
130
+ "markerPath": "/Users/cormorantai/opencormorant/node_modules/.modules.yaml",
131
+ "reason": "lockfile newer than install marker"
132
+ },
133
+ "registry": {
134
+ "latestVersion": "2026.3.13"
135
+ }
136
+ },
137
+ "updateChannel": "dev",
138
+ "updateChannelSource": "git-branch",
139
+ "memory": {
140
+ "agentId": "main",
141
+ "backend": "builtin",
142
+ "files": 0,
143
+ "chunks": 0,
144
+ "dirty": true,
145
+ "workspaceDir": "/Users/cormorantai/.openclaw/workspace-ocbphase1",
146
+ "dbPath": "/Users/cormorantai/.openclaw-ocbphase1/memory/main.sqlite",
147
+ "provider": "gemini",
148
+ "model": "gemini-embedding-001",
149
+ "requestedProvider": "auto",
150
+ "sources": [
151
+ "memory"
152
+ ],
153
+ "extraPaths": [],
154
+ "sourceCounts": [
155
+ {
156
+ "source": "memory",
157
+ "files": 0,
158
+ "chunks": 0
159
+ }
160
+ ],
161
+ "cache": {
162
+ "enabled": true,
163
+ "entries": 0
164
+ },
165
+ "fts": {
166
+ "enabled": true,
167
+ "available": true
168
+ },
169
+ "vector": {
170
+ "enabled": true,
171
+ "available": true,
172
+ "extensionPath": "/Users/cormorantai/opencormorant/node_modules/.pnpm/sqlite-vec@0.1.7-alpha.2/node_modules/sqlite-vec-darwin-arm64/vec0.dylib"
173
+ },
174
+ "batch": {
175
+ "enabled": false,
176
+ "failures": 0,
177
+ "limit": 2,
178
+ "wait": true,
179
+ "concurrency": 2,
180
+ "pollIntervalMs": 2000,
181
+ "timeoutMs": 3600000
182
+ },
183
+ "custom": {
184
+ "searchMode": "hybrid",
185
+ "readonlyRecovery": {
186
+ "attempts": 0,
187
+ "successes": 0,
188
+ "failures": 0
189
+ }
190
+ }
191
+ },
192
+ "memoryPlugin": {
193
+ "enabled": true,
194
+ "slot": "memory-core"
195
+ },
196
+ "gateway": {
197
+ "mode": "local",
198
+ "url": "ws://127.0.0.1:19031",
199
+ "urlSource": "local loopback",
200
+ "misconfigured": false,
201
+ "reachable": false,
202
+ "connectLatencyMs": null,
203
+ "self": null,
204
+ "error": "connect failed: connect ECONNREFUSED 127.0.0.1:19031",
205
+ "authWarning": null
206
+ },
207
+ "gatewayService": {
208
+ "label": "LaunchAgent",
209
+ "installed": false,
210
+ "managedByOpenClaw": false,
211
+ "externallyManaged": false,
212
+ "loadedText": "not loaded",
213
+ "runtimeShort": "unknown"
214
+ },
215
+ "nodeService": {
216
+ "label": "LaunchAgent",
217
+ "installed": false,
218
+ "managedByOpenClaw": false,
219
+ "externallyManaged": false,
220
+ "loadedText": "not loaded",
221
+ "runtimeShort": "unknown"
222
+ },
223
+ "agents": {
224
+ "defaultId": "main",
225
+ "agents": [
226
+ {
227
+ "id": "main",
228
+ "workspaceDir": "/Users/cormorantai/.openclaw/workspace-ocbphase1",
229
+ "bootstrapPending": true,
230
+ "sessionsPath": "/Users/cormorantai/.openclaw-ocbphase1/agents/main/sessions/sessions.json",
231
+ "sessionsCount": 1,
232
+ "lastUpdatedAt": 1773635277472,
233
+ "lastActiveAgeMs": 16057665
234
+ }
235
+ ],
236
+ "totalSessions": 1,
237
+ "bootstrapPendingCount": 1
238
+ },
239
+ "securityAudit": {
240
+ "ts": 1773651337689,
241
+ "summary": {
242
+ "critical": 3,
243
+ "warn": 1,
244
+ "info": 1
245
+ },
246
+ "findings": [
247
+ {
248
+ "checkId": "summary.attack_surface",
249
+ "severity": "info",
250
+ "title": "Attack surface summary",
251
+ "detail": "groups: open=0, allowlist=0\ntools.elevated: enabled\nhooks.webhooks: disabled\nhooks.internal: disabled\nbrowser control: enabled\ntrust model: personal assistant (one trusted operator boundary), not hostile multi-tenant on one shared gateway"
252
+ },
253
+ {
254
+ "checkId": "gateway.trusted_proxies_missing",
255
+ "severity": "warn",
256
+ "title": "Reverse proxy headers are not trusted",
257
+ "detail": "gateway.bind is loopback and gateway.trustedProxies is empty. If you expose the Control UI through a reverse proxy, configure trusted proxies so local-client checks cannot be spoofed.",
258
+ "remediation": "Set gateway.trustedProxies to your proxy IPs or keep the Control UI local-only."
259
+ },
260
+ {
261
+ "checkId": "gateway.loopback_no_auth",
262
+ "severity": "critical",
263
+ "title": "Gateway auth missing on loopback",
264
+ "detail": "gateway.bind is loopback but no gateway auth secret is configured. If the Control UI is exposed through a reverse proxy, unauthenticated access is possible.",
265
+ "remediation": "Set gateway.auth (token recommended) or keep the Control UI local-only."
266
+ },
267
+ {
268
+ "checkId": "browser.control_no_auth",
269
+ "severity": "critical",
270
+ "title": "Browser control has no auth",
271
+ "detail": "Browser control HTTP routes are enabled but no gateway.auth token/password is configured. Any local process (or SSRF to loopback) can call browser control endpoints.",
272
+ "remediation": "Set gateway.auth.token (recommended) or gateway.auth.password so browser control HTTP routes require authentication. Restarting the gateway will auto-generate gateway.auth.token when browser control is enabled."
273
+ },
274
+ {
275
+ "checkId": "models.small_params",
276
+ "severity": "critical",
277
+ "title": "Small models require sandboxing and web tools disabled",
278
+ "detail": "Small models (<=300B params) detected:\n- ollama/qwen2.5:7b-instruct (7B) @ agents.defaults.model.primary (unsafe; sandbox=off; web=[web_search, web_fetch, browser])\nUncontrolled input tools allowed: web_search, web_fetch, browser.\nSmall models are not recommended for untrusted inputs.",
279
+ "remediation": "If you must use small models, enable sandboxing for all sessions (agents.defaults.sandbox.mode=\"all\") and disable web_search/web_fetch/browser (tools.deny=[\"group:web\",\"browser\"])."
280
+ }
281
+ ]
282
+ },
283
+ "secretDiagnostics": []
284
+ }
285
+ },
286
+ "statusAll": {
287
+ "command": "openclaw",
288
+ "args": [
289
+ "status",
290
+ "--all",
291
+ "--timeout",
292
+ "10000"
293
+ ],
294
+ "cwd": "/Users/cormorantai/openclawbrain",
295
+ "exitCode": 0,
296
+ "signal": null,
297
+ "ok": true,
298
+ "stdout": "[plugins] [openclawbrain] Plugin loaded (enabled=true, db=/Users/cormorantai/.openclaw-ocbphase1/lcm.db, threshold=0.75)\nOpenClaw status --all\n\nOverview\n┌─────────────────┬────────────────────────────────────────────────────────────────────────────────────────────────────┐\n│ Item │ Value │\n├─────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤\n│ Version │ 2026.3.13 │\n│ OS │ macos 26.3 (arm64) │\n│ Node │ 22.22.0 │\n│ Config │ ~/.openclaw-ocbphase1/openclaw.json │\n│ Dashboard │ http://127.0.0.1:19031/ │\n│ Tailscale │ off · Running · cormorantais-mac-mini.tail499c70.ts.net │\n│ Channel │ dev (main) │\n│ Git │ main · @ 66e02b29 │\n│ Update │ git main · ↔ origin/main · behind 544 · npm latest 2026.3.13 · deps stale │\n│ Gateway │ local · ws://127.0.0.1:19031 (local loopback) · unreachable (connect failed: connect ECONNREFUSED │\n│ │ 127.0.0.1:19031) │\n│ Security │ Run: openclaw security audit --deep │\n│ Gateway self │ unknown │\n│ Gateway service │ LaunchAgent not installed │\n│ Node service │ LaunchAgent not installed │\n│ Agents │ 1 total · 1 bootstrapping · 0 active · 1 sessions │\n└─────────────────┴────────────────────────────────────────────────────────────────────────────────────────────────────┘\n\nChannels\n┌──────────┬─────────┬────────┬────────────────────────────────────────────────────────────────────────────────────────┐\n│ Channel │ Enabled │ State │ Detail │\n├──────────┼─────────┼────────┼────────────────────────────────────────────────────────────────────────────────────────┤\n└──────────┴─────────┴────────┴────────────────────────────────────────────────────────────────────────────────────────┘\n\nAgents\n┌────────────┬────────────────┬──────────┬──────────┬──────────────────────────────────────────────────────────────────┐\n│ Agent │ Bootstrap file │ Sessions │ Active │ Store │\n├────────────┼────────────────┼──────────┼──────────┼──────────────────────────────────────────────────────────────────┤\n│ main │ PRESENT │ 1 │ 4h ago │ ~/.openclaw-ocbphase1/agents/main/sessions/sessions.json │\n└────────────┴────────────────┴──────────┴──────────┴──────────────────────────────────────────────────────────────────┘\n\nDiagnosis (read-only)\n\nGateway connection details:\n Gateway target: ws://127.0.0.1:19031\n Source: local loopback\n Config: /Users/cormorantai/.openclaw-ocbphase1/openclaw.json\n Bind: loopback\n\n✓ Config: /Users/cormorantai/.openclaw-ocbphase1/openclaw.json\n✓ Restart sentinel: none\n✓ Port 19031\n✓ Tailscale: off · Running · cormorantais-mac-mini.tail499c70.ts.net\n ips: 100.73.247.26, fd7a:115c:a1e0::e932:f71a\n✓ Skills: 9 eligible · 0 missing · /Users/cormorantai/.openclaw/workspace-ocbphase1\n! Channel issues skipped (gateway unreachable)\n\nGateway health:\n connect failed: connect ECONNREFUSED 127.0.0.1:19031\n\nPasteable debug report. Auth tokens redacted.\nTroubleshooting: https://docs.openclaw.ai/troubleshooting\n\n",
299
+ "stderr": "Config warnings:\\n- plugins.entries.ollama: plugin ollama: plugin id mismatch (manifest uses \"ollama\", entry hints \"ollama-provider\")\n- plugins.entries.sglang: plugin sglang: plugin id mismatch (manifest uses \"sglang\", entry hints \"sglang-provider\")\n- plugins.entries.vllm: plugin vllm: plugin id mismatch (manifest uses \"vllm\", entry hints \"vllm-provider\")\n[plugins] plugins.allow is empty; discovered non-bundled plugins may auto-load: openclawbrain (/Users/cormorantai/openclawbrain/index.ts). Set plugins.allow to explicit trusted ids.\n[plugins] [brain] Embedding model is unset; learned retrieval is disabled until init/configuration is complete\nConfig warnings:\\n- plugins.entries.ollama: plugin ollama: plugin id mismatch (manifest uses \"ollama\", entry hints \"ollama-provider\")\n- plugins.entries.sglang: plugin sglang: plugin id mismatch (manifest uses \"sglang\", entry hints \"sglang-provider\")\n- plugins.entries.vllm: plugin vllm: plugin id mismatch (manifest uses \"vllm\", entry hints \"vllm-provider\")\n",
300
+ "error": null
301
+ },
302
+ "gatewayProbe": {
303
+ "command": "openclaw",
304
+ "args": [
305
+ "gateway",
306
+ "probe"
307
+ ],
308
+ "cwd": "/Users/cormorantai/openclawbrain",
309
+ "exitCode": 1,
310
+ "signal": null,
311
+ "ok": false,
312
+ "stdout": "│\n◇ Config warnings ────────────────────────────────────────────────────────╮\n│ │\n│ - plugins.entries.ollama: plugin ollama: plugin id mismatch (manifest │\n│ uses \"ollama\", entry hints \"ollama-provider\") │\n│ - plugins.entries.sglang: plugin sglang: plugin id mismatch (manifest │\n│ uses \"sglang\", entry hints \"sglang-provider\") │\n│ - plugins.entries.vllm: plugin vllm: plugin id mismatch (manifest uses │\n│ \"vllm\", entry hints \"vllm-provider\") │\n│ │\n├──────────────────────────────────────────────────────────────────────────╯\n│\n◇ Doctor changes ──────────────────────────────╮\n│ │\n│ Telegram configured, enabled automatically. │\n│ │\n├───────────────────────────────────────────────╯\n│\n◇ Doctor ──────────────────────────────────────────────╮\n│ │\n│ Run \"openclaw doctor --fix\" to apply these changes. │\n│ │\n├───────────────────────────────────────────────────────╯\nGateway Status\nReachable: no\nProbe budget: 3000ms\n\nDiscovery (this machine)\nFound 4 gateway(s) via Bonjour (local.)\n\nTargets\nLocal loopback ws://127.0.0.1:19031\n Connect: failed - connect failed: connect ECONNREFUSED 127.0.0.1:19031\n\n",
313
+ "stderr": "Config warnings:\\n- plugins.entries.ollama: plugin ollama: plugin id mismatch (manifest uses \"ollama\", entry hints \"ollama-provider\")\n- plugins.entries.sglang: plugin sglang: plugin id mismatch (manifest uses \"sglang\", entry hints \"sglang-provider\")\n- plugins.entries.vllm: plugin vllm: plugin id mismatch (manifest uses \"vllm\", entry hints \"vllm-provider\")\nConfig warnings:\\n- plugins.entries.ollama: plugin ollama: plugin id mismatch (manifest uses \"ollama\", entry hints \"ollama-provider\")\n- plugins.entries.sglang: plugin sglang: plugin id mismatch (manifest uses \"sglang\", entry hints \"sglang-provider\")\n- plugins.entries.vllm: plugin vllm: plugin id mismatch (manifest uses \"vllm\", entry hints \"vllm-provider\")\n",
314
+ "error": null
315
+ },
316
+ "gatewayStatus": {
317
+ "command": "openclaw",
318
+ "args": [
319
+ "gateway",
320
+ "status"
321
+ ],
322
+ "cwd": "/Users/cormorantai/openclawbrain",
323
+ "exitCode": 0,
324
+ "signal": null,
325
+ "ok": true,
326
+ "stdout": "│\n◇ Config warnings ────────────────────────────────────────────────────────╮\n│ │\n│ - plugins.entries.ollama: plugin ollama: plugin id mismatch (manifest │\n│ uses \"ollama\", entry hints \"ollama-provider\") │\n│ - plugins.entries.sglang: plugin sglang: plugin id mismatch (manifest │\n│ uses \"sglang\", entry hints \"sglang-provider\") │\n│ - plugins.entries.vllm: plugin vllm: plugin id mismatch (manifest uses │\n│ \"vllm\", entry hints \"vllm-provider\") │\n│ │\n├──────────────────────────────────────────────────────────────────────────╯\n│\n◇ Doctor changes ──────────────────────────────╮\n│ │\n│ Telegram configured, enabled automatically. │\n│ │\n├───────────────────────────────────────────────╯\n│\n◇ Doctor ──────────────────────────────────────────────╮\n│ │\n│ Run \"openclaw doctor --fix\" to apply these changes. │\n│ │\n├───────────────────────────────────────────────────────╯\nService: LaunchAgent (not loaded)\nFile logs: /tmp/openclaw/openclaw-2026-03-16.log\n\nConfig (cli): ~/.openclaw-ocbphase1/openclaw.json\nConfig (service): ~/.openclaw-ocbphase1/openclaw.json\n\nGateway: bind=loopback (127.0.0.1), port=19031 (env/config)\nProbe target: ws://127.0.0.1:19031\nDashboard: http://127.0.0.1:19031/\nProbe note: Loopback-only gateway; only local clients can connect.\n\nRuntime: unknown (Bad request.\nCould not find service \"ai.openclaw.gateway\" in domain for user gui: 501)\n\n\n\nTroubles: run openclaw status\nTroubleshooting: https://docs.openclaw.ai/troubleshooting\n",
327
+ "stderr": "Config warnings:\\n- plugins.entries.ollama: plugin ollama: plugin id mismatch (manifest uses \"ollama\", entry hints \"ollama-provider\")\n- plugins.entries.sglang: plugin sglang: plugin id mismatch (manifest uses \"sglang\", entry hints \"sglang-provider\")\n- plugins.entries.vllm: plugin vllm: plugin id mismatch (manifest uses \"vllm\", entry hints \"vllm-provider\")\nConfig warnings:\\n- plugins.entries.ollama: plugin ollama: plugin id mismatch (manifest uses \"ollama\", entry hints \"ollama-provider\")\n- plugins.entries.sglang: plugin sglang: plugin id mismatch (manifest uses \"sglang\", entry hints \"sglang-provider\")\n- plugins.entries.vllm: plugin vllm: plugin id mismatch (manifest uses \"vllm\", entry hints \"vllm-provider\")\nConfig warnings:\\n- plugins.entries.ollama: plugin ollama: plugin id mismatch (manifest uses \"ollama\", entry hints \"ollama-provider\")\n- plugins.entries.sglang: plugin sglang: plugin id mismatch (manifest uses \"sglang\", entry hints \"sglang-provider\")\n- plugins.entries.vllm: plugin vllm: plugin id mismatch (manifest uses \"vllm\", entry hints \"vllm-provider\")\nConfig warnings:\\n- plugins.entries.ollama: plugin ollama: plugin id mismatch (manifest uses \"ollama\", entry hints \"ollama-provider\")\n- plugins.entries.sglang: plugin sglang: plugin id mismatch (manifest uses \"sglang\", entry hints \"sglang-provider\")\n- plugins.entries.vllm: plugin vllm: plugin id mismatch (manifest uses \"vllm\", entry hints \"vllm-provider\")\nService config looks out of date or non-standard.\nService config issue: Gateway service PATH is not set; the daemon should use a minimal PATH.\nRecommendation: run \"openclaw doctor\" (or \"openclaw doctor --repair\").\nRPC probe: failed\nRPC target: ws://127.0.0.1:19031\n gateway url override requires explicit credentials\n Fix: pass --token or --password (or gatewayToken in tools).\n Config: /Users/cormorantai/.openclaw-ocbphase1/openclaw.json\nService unit not found.\nService not installed. Run: openclaw gateway install\nFile logs: /tmp/openclaw/openclaw-2026-03-16.log\nOther gateway-like services detected (best effort):\n- com.openclawbrain.daemon.activation.0ec88212fa7d (user, plist: /Users/cormorantai/Library/LaunchAgents/com.openclawbrain.daemon.activation.0ec88212fa7d.plist)\n- com.openclawbrain.daemon.activation.546e84bf06ac (user, plist: /Users/cormorantai/Library/LaunchAgents/com.openclawbrain.daemon.activation.546e84bf06ac.plist)\n- com.openclawbrain.daemon.activation.b3eeb450ca08 (user, plist: /Users/cormorantai/Library/LaunchAgents/com.openclawbrain.daemon.activation.b3eeb450ca08.plist)\nCleanup hint: launchctl bootout gui/$UID/ai.openclaw.gateway\nCleanup hint: rm ~/Library/LaunchAgents/ai.openclaw.gateway.plist\nRecommendation: run a single gateway per machine for most setups. One gateway supports multiple agents (see docs: /gateway#multiple-gateways-same-host).\nIf you need multiple gateways (e.g., a rescue bot on the same host), isolate ports + config/state (see docs: /gateway#multiple-gateways-same-host).\n",
328
+ "error": null
329
+ },
330
+ "doctor": {
331
+ "command": "openclaw",
332
+ "args": [
333
+ "doctor",
334
+ "--non-interactive"
335
+ ],
336
+ "cwd": "/Users/cormorantai/openclawbrain",
337
+ "exitCode": 0,
338
+ "signal": null,
339
+ "ok": true,
340
+ "stdout": "▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄\n██░▄▄▄░██░▄▄░██░▄▄▄██░▀██░██░▄▄▀██░████░▄▄▀██░███░██\n██░███░██░▀▀░██░▄▄▄██░█░█░██░█████░████░▀▀░██░█░█░██\n██░▀▀▀░██░█████░▀▀▀██░██▄░██░▀▀▄██░▀▀░█░██░██▄▀▄▀▄██\n▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀\n 🦞 OPENCLAW 🦞 \n \n┌ OpenClaw doctor\n│\n◇ Install ─────────────────────────────────────────────────────────╮\n│ │\n│ - package-lock.json present in a pnpm workspace. If you ran npm │\n│ install, remove it and reinstall with pnpm. │\n│ │\n├───────────────────────────────────────────────────────────────────╯\n│\n◇ Config warnings ────────────────────────────────────────────────────────╮\n│ │\n│ - plugins.entries.ollama: plugin ollama: plugin id mismatch (manifest │\n│ uses \"ollama\", entry hints \"ollama-provider\") │\n│ - plugins.entries.sglang: plugin sglang: plugin id mismatch (manifest │\n│ uses \"sglang\", entry hints \"sglang-provider\") │\n│ - plugins.entries.vllm: plugin vllm: plugin id mismatch (manifest uses │\n│ \"vllm\", entry hints \"vllm-provider\") │\n│ │\n├──────────────────────────────────────────────────────────────────────────╯\n│\n◇ Doctor changes ──────────────────────────────╮\n│ │\n│ Telegram configured, enabled automatically. │\n│ │\n├───────────────────────────────────────────────╯\n│\n◇ Doctor ──────────────────────────────────────────────╮\n│ │\n│ Run \"openclaw doctor --fix\" to apply these changes. │\n│ │\n├───────────────────────────────────────────────────────╯\n│\n◇ Gateway auth ──────────────────────────────────────────────────╮\n│ │\n│ Gateway auth is off or missing a token. Token auth is now the │\n│ recommended default (including loopback). │\n│ │\n├─────────────────────────────────────────────────────────────────╯\n│\n◇ State integrity ────────────────────────────────────────────────────────╮\n│ │\n│ - OAuth dir not present (~/.openclaw-ocbphase1/credentials). Skipping │\n│ create because no WhatsApp/pairing channel config is active. │\n│ - Multiple state directories detected. This can split session history. │\n│ - ~/.openclaw │\n│ Active state dir: ~/.openclaw-ocbphase1 │\n│ │\n├──────────────────────────────────────────────────────────────────────────╯\n│\n◇ Other gateway-like services detected ───────────────────────────────────────╮\n│ │\n│ - com.openclawbrain.daemon.activation.0ec88212fa7d (user, plist: │\n│ /Users/cormorantai/Library/LaunchAgents/com.openclawbrain.daemon.activat │\n│ ion.0ec88212fa7d.plist) │\n│ - com.openclawbrain.daemon.activation.546e84bf06ac (user, plist: │\n│ /Users/cormorantai/Library/LaunchAgents/com.openclawbrain.daemon.activat │\n│ ion.546e84bf06ac.plist) │\n│ - com.openclawbrain.daemon.activation.b3eeb450ca08 (user, plist: │\n│ /Users/cormorantai/Library/LaunchAgents/com.openclawbrain.daemon.activat │\n│ ion.b3eeb450ca08.plist) │\n│ │\n├──────────────────────────────────────────────────────────────────────────────╯\n│\n◇ Cleanup hints ─────────────────────────────────────────╮\n│ │\n│ - launchctl bootout gui/$UID/ai.openclaw.gateway │\n│ - rm ~/Library/LaunchAgents/ai.openclaw.gateway.plist │\n│ │\n├─────────────────────────────────────────────────────────╯\n│\n◇ Gateway recommendation ───────────────────────────────────────────────╮\n│ │\n│ Recommendation: run a single gateway per machine for most setups. │\n│ One gateway supports multiple agents. │\n│ If you need multiple gateways (e.g., a rescue bot on the same host), │\n│ isolate ports + config/state (see docs: │\n│ /gateway#multiple-gateways-same-host). │\n│ │\n├────────────────────────────────────────────────────────────────────────╯\n│\n◇ Security ─────────────────────────────────╮\n│ │\n│ - No channel security warnings detected. │\n│ - Run: openclaw security audit --deep │\n│ │\n├────────────────────────────────────────────╯\n│\n◇ Skills status ────────────╮\n│ │\n│ Eligible: 9 │\n│ Missing requirements: 43 │\n│ Blocked by allowlist: 0 │\n│ │\n├────────────────────────────╯\n│\n◇ Plugins ──────╮\n│ │\n│ Loaded: 5 │\n│ Disabled: 37 │\n│ Errors: 0 │\n│ │\n├────────────────╯\n│\n◇ Plugin diagnostics ─────────────────────────────────────────────────────╮\n│ │\n│ - WARN ollama: plugin id mismatch (manifest uses \"ollama\", entry hints │\n│ \"ollama-provider\") │\n│ (/Users/cormorantai/opencormorant/extensions/ollama/index.ts) │\n│ - WARN sglang: plugin id mismatch (manifest uses \"sglang\", entry hints │\n│ \"sglang-provider\") │\n│ (/Users/cormorantai/opencormorant/extensions/sglang/index.ts) │\n│ - WARN vllm: plugin id mismatch (manifest uses \"vllm\", entry hints │\n│ \"vllm-provider\") │\n│ (/Users/cormorantai/opencormorant/extensions/vllm/index.ts) │\n│ │\n├──────────────────────────────────────────────────────────────────────────╯\n│\n◇ Gateway ──────────────╮\n│ │\n│ Gateway not running. │\n│ │\n├────────────────────────╯\n│\n◇ Gateway connection ───────────────────────────────────────────╮\n│ │\n│ Gateway target: ws://127.0.0.1:19031 │\n│ Source: local loopback │\n│ Config: /Users/cormorantai/.openclaw-ocbphase1/openclaw.json │\n│ Bind: loopback │\n│ │\n├────────────────────────────────────────────────────────────────╯\n│\n◇ Gateway ────────────────────────╮\n│ │\n│ Gateway service not installed. │\n│ │\n├──────────────────────────────────╯\nRun \"openclaw doctor --fix\" to apply changes.\n│\n└ Doctor complete.\n\n",
341
+ "stderr": "Config warnings:\\n- plugins.entries.ollama: plugin ollama: plugin id mismatch (manifest uses \"ollama\", entry hints \"ollama-provider\")\n- plugins.entries.sglang: plugin sglang: plugin id mismatch (manifest uses \"sglang\", entry hints \"sglang-provider\")\n- plugins.entries.vllm: plugin vllm: plugin id mismatch (manifest uses \"vllm\", entry hints \"vllm-provider\")\n",
342
+ "error": null
343
+ },
344
+ "channelsStatus": {
345
+ "command": "openclaw",
346
+ "args": [
347
+ "channels",
348
+ "status",
349
+ "--probe"
350
+ ],
351
+ "cwd": "/Users/cormorantai/openclawbrain",
352
+ "exitCode": 0,
353
+ "signal": null,
354
+ "ok": true,
355
+ "stdout": "│\n◇ Config warnings ────────────────────────────────────────────────────────╮\n│ │\n│ - plugins.entries.ollama: plugin ollama: plugin id mismatch (manifest │\n│ uses \"ollama\", entry hints \"ollama-provider\") │\n│ - plugins.entries.sglang: plugin sglang: plugin id mismatch (manifest │\n│ uses \"sglang\", entry hints \"sglang-provider\") │\n│ - plugins.entries.vllm: plugin vllm: plugin id mismatch (manifest uses │\n│ \"vllm\", entry hints \"vllm-provider\") │\n│ │\n├──────────────────────────────────────────────────────────────────────────╯\n│\n◇ Doctor changes ──────────────────────────────╮\n│ │\n│ Telegram configured, enabled automatically. │\n│ │\n├───────────────────────────────────────────────╯\n│\n◇ Doctor ──────────────────────────────────────────────╮\n│ │\n│ Run \"openclaw doctor --fix\" to apply these changes. │\n│ │\n├───────────────────────────────────────────────────────╯\n[plugins] [openclawbrain] Plugin loaded (enabled=true, db=/Users/cormorantai/.openclaw-ocbphase1/lcm.db, threshold=0.75)\nChecking channel status (probe)…\nGateway not reachable; showing config-only status.\nConfig: /Users/cormorantai/.openclaw-ocbphase1/openclaw.json\nMode: local\n\n\nTip: https://docs.openclaw.ai/cli#status adds gateway health probes to status output (requires a reachable gateway).\n",
356
+ "stderr": "Config warnings:\\n- plugins.entries.ollama: plugin ollama: plugin id mismatch (manifest uses \"ollama\", entry hints \"ollama-provider\")\n- plugins.entries.sglang: plugin sglang: plugin id mismatch (manifest uses \"sglang\", entry hints \"sglang-provider\")\n- plugins.entries.vllm: plugin vllm: plugin id mismatch (manifest uses \"vllm\", entry hints \"vllm-provider\")\nConfig warnings:\\n- plugins.entries.ollama: plugin ollama: plugin id mismatch (manifest uses \"ollama\", entry hints \"ollama-provider\")\n- plugins.entries.sglang: plugin sglang: plugin id mismatch (manifest uses \"sglang\", entry hints \"sglang-provider\")\n- plugins.entries.vllm: plugin vllm: plugin id mismatch (manifest uses \"vllm\", entry hints \"vllm-provider\")\n[plugins] plugins.allow is empty; discovered non-bundled plugins may auto-load: openclawbrain (/Users/cormorantai/openclawbrain/index.ts). Set plugins.allow to explicit trusted ids.\n[plugins] [brain] Embedding model is unset; learned retrieval is disabled until init/configuration is complete\nConfig warnings:\\n- plugins.entries.ollama: plugin ollama: plugin id mismatch (manifest uses \"ollama\", entry hints \"ollama-provider\")\n- plugins.entries.sglang: plugin sglang: plugin id mismatch (manifest uses \"sglang\", entry hints \"sglang-provider\")\n- plugins.entries.vllm: plugin vllm: plugin id mismatch (manifest uses \"vllm\", entry hints \"vllm-provider\")\nGateway not reachable: Error: gateway closed (1006 abnormal closure (no close frame)): no close reason\nGateway target: ws://127.0.0.1:19031\nSource: local loopback\nConfig: /Users/cormorantai/.openclaw-ocbphase1/openclaw.json\nBind: loopback\n",
357
+ "error": null
358
+ }
359
+ },
360
+ "trace": null,
361
+ "setup": {
362
+ "linkedPlugin": "/Users/cormorantai/openclawbrain",
363
+ "lcmDbPath": "/Users/cormorantai/.openclaw-ocbphase1/lcm.db",
364
+ "brainRoot": "/Users/cormorantai/.openclaw-ocbphase1/openclawbrain",
365
+ "manualContextEngineSlot": null,
366
+ "validationMode": "sterile-lane",
367
+ "validationLaneName": "ocbphase1",
368
+ "validationGatewayPort": 19031,
369
+ "validationModel": null,
370
+ "workerMode": "child",
371
+ "embeddingProvider": "openai",
372
+ "embeddingModel": null,
373
+ "agentTimeoutMs": 120000
374
+ },
375
+ "init": null,
376
+ "doctor": null,
377
+ "status": null,
378
+ "runtime": null,
379
+ "agent": {},
380
+ "assertions": {},
381
+ "skipped": [
382
+ {
383
+ "phase": "init-and-agent-checks",
384
+ "reason": "--setup-only was requested."
385
+ }
386
+ ]
387
+ }
package/docs/tui.md CHANGED
@@ -1,12 +1,18 @@
1
1
  # TUI Reference
2
2
 
3
- The OpenClawBrain TUI (`lcm-tui`) is an interactive terminal application for inspecting, debugging, and maintaining the inherited LCM substrate. It provides direct visibility into what the model sees (context assembly), how summaries are structured (DAG hierarchy), and tools for surgical repairs when things go wrong.
3
+ The OpenClawBrain TUI (`lcm-tui`) is an interactive terminal application for inspecting, debugging, and maintaining the inherited LCM substrate. It is still a substrate-level tool, which is why some internal naming and the Go module path still reflect the older lossless-claw origin.
4
+
5
+ What it is for:
6
+ - inspect what the model actually sees in context
7
+ - inspect summary DAG structure and quality
8
+ - repair or rewrite bad summaries surgically
9
+ - debug large-file interception and context assembly
4
10
 
5
11
  ## Installation
6
12
 
7
- **From GitHub releases:**
13
+ **From releases:**
8
14
 
9
- Download the latest binary for your platform from the OpenClawBrain release surface that ships this repo's TUI assets.
15
+ Download the latest binary for your platform from this repo's release surface when TUI assets are published there.
10
16
 
11
17
  **Build from source:**
12
18
 
@@ -14,7 +20,8 @@ Download the latest binary for your platform from the OpenClawBrain release surf
14
20
  cd tui
15
21
  go build -o lcm-tui .
16
22
  # or: make build
17
- # or: go install github.com/Martian-Engineering/lossless-claw/tui@latest
23
+ # historical module path, still current in go.mod:
24
+ # go install github.com/Martian-Engineering/lossless-claw/tui@latest
18
25
  ```
19
26
 
20
27
  Requires Go 1.24+.