nemoris 0.1.0 → 0.1.2

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 (248) hide show
  1. package/.env.example +49 -49
  2. package/LICENSE +21 -21
  3. package/README.md +209 -209
  4. package/SECURITY.md +59 -119
  5. package/bin/nemoris +46 -46
  6. package/config/agents/agent.toml.example +28 -28
  7. package/config/agents/content.toml +23 -0
  8. package/config/agents/default.toml +22 -22
  9. package/config/agents/heartbeat.toml +35 -0
  10. package/config/agents/iris.toml +23 -0
  11. package/config/agents/lab.toml +23 -0
  12. package/config/agents/main.toml +45 -0
  13. package/config/agents/nemo.toml +21 -0
  14. package/config/agents/ops.toml +38 -0
  15. package/config/agents/orchestrator.toml +18 -18
  16. package/config/agents/revenue.toml +23 -0
  17. package/config/agents/testyboo.toml +19 -0
  18. package/config/delivery.toml +73 -73
  19. package/config/embeddings.toml +5 -5
  20. package/config/identity/content-purpose.md +11 -0
  21. package/config/identity/content-soul.md +45 -0
  22. package/config/identity/default-purpose.md +1 -1
  23. package/config/identity/default-soul.md +3 -3
  24. package/config/identity/heartbeat-purpose.md +9 -0
  25. package/config/identity/heartbeat-soul.md +16 -0
  26. package/config/identity/iris-purpose.md +17 -0
  27. package/config/identity/iris-soul.md +68 -0
  28. package/config/identity/lab-purpose.md +10 -0
  29. package/config/identity/lab-soul.md +38 -0
  30. package/config/identity/main-purpose.md +17 -0
  31. package/config/identity/main-soul.md +66 -0
  32. package/config/identity/main-user.md +22 -0
  33. package/config/identity/ops-purpose.md +9 -0
  34. package/config/identity/ops-soul.md +16 -0
  35. package/config/identity/orchestrator-purpose.md +1 -1
  36. package/config/identity/orchestrator-soul.md +1 -1
  37. package/config/identity/revenue-purpose.md +9 -0
  38. package/config/identity/revenue-soul.md +41 -0
  39. package/config/identity/testyboo-purpose.md +13 -0
  40. package/config/identity/testyboo-soul.md +20 -0
  41. package/config/improvement-targets.toml +15 -15
  42. package/config/jobs/heartbeat-check.toml +30 -30
  43. package/config/jobs/memory-rollup.toml +46 -46
  44. package/config/jobs/workspace-health.toml +63 -63
  45. package/config/mcp.toml +16 -16
  46. package/config/output-contracts.toml +17 -17
  47. package/config/peers.toml +32 -32
  48. package/config/peers.toml.example +32 -32
  49. package/config/policies/memory-default.toml +10 -10
  50. package/config/policies/memory-heartbeat.toml +5 -5
  51. package/config/policies/memory-ops.toml +10 -10
  52. package/config/policies/tools-heartbeat-minimal.toml +8 -8
  53. package/config/policies/tools-interactive-safe.toml +8 -8
  54. package/config/policies/tools-ops-bounded.toml +8 -8
  55. package/config/policies/tools-orchestrator.toml +7 -7
  56. package/config/providers/anthropic.toml +15 -15
  57. package/config/providers/ollama.toml +5 -5
  58. package/config/providers/openai-codex.toml +9 -9
  59. package/config/providers/openrouter.toml +5 -5
  60. package/config/router.toml +22 -22
  61. package/config/runtime.toml +114 -114
  62. package/config/skills/self-improvement.toml +15 -15
  63. package/config/skills/telegram-onboarding-spec.md +240 -240
  64. package/config/skills/workspace-monitor.toml +15 -15
  65. package/config/task-router.toml +42 -42
  66. package/install.sh +50 -50
  67. package/package.json +91 -90
  68. package/src/auth/auth-profiles.js +169 -169
  69. package/src/auth/openai-codex-oauth.js +285 -285
  70. package/src/battle.js +449 -449
  71. package/src/cli/help.js +265 -265
  72. package/src/cli/output-filter.js +49 -49
  73. package/src/cli/runtime-control.js +704 -704
  74. package/src/cli-main.js +2763 -2763
  75. package/src/cli.js +78 -78
  76. package/src/config/loader.js +332 -332
  77. package/src/config/schema-validator.js +214 -214
  78. package/src/config/toml-lite.js +8 -8
  79. package/src/daemon/action-handlers.js +71 -71
  80. package/src/daemon/healing-tick.js +87 -87
  81. package/src/daemon/health-probes.js +90 -90
  82. package/src/daemon/notifier.js +57 -57
  83. package/src/daemon/nurse.js +218 -218
  84. package/src/daemon/repair-log.js +106 -106
  85. package/src/daemon/rule-staging.js +90 -90
  86. package/src/daemon/rules.js +29 -29
  87. package/src/daemon/telegram-commands.js +54 -54
  88. package/src/daemon/updater.js +85 -85
  89. package/src/jobs/job-runner.js +78 -78
  90. package/src/mcp/consumer.js +129 -129
  91. package/src/memory/active-recall.js +171 -171
  92. package/src/memory/backend-manager.js +97 -97
  93. package/src/memory/backends/file-backend.js +38 -38
  94. package/src/memory/backends/qmd-backend.js +219 -219
  95. package/src/memory/embedding-guards.js +24 -24
  96. package/src/memory/embedding-index.js +118 -118
  97. package/src/memory/embedding-service.js +179 -179
  98. package/src/memory/file-index.js +177 -177
  99. package/src/memory/memory-signature.js +5 -5
  100. package/src/memory/memory-store.js +648 -648
  101. package/src/memory/retrieval-planner.js +66 -66
  102. package/src/memory/scoring.js +145 -145
  103. package/src/memory/simhash.js +78 -78
  104. package/src/memory/sqlite-active-store.js +824 -824
  105. package/src/memory/write-policy.js +36 -36
  106. package/src/onboarding/aliases.js +33 -33
  107. package/src/onboarding/auth/api-key.js +224 -224
  108. package/src/onboarding/auth/ollama-detect.js +42 -42
  109. package/src/onboarding/clack-prompter.js +77 -77
  110. package/src/onboarding/doctor.js +530 -530
  111. package/src/onboarding/lock.js +42 -42
  112. package/src/onboarding/model-catalog.js +344 -344
  113. package/src/onboarding/phases/auth.js +576 -589
  114. package/src/onboarding/phases/build.js +130 -130
  115. package/src/onboarding/phases/choose.js +82 -82
  116. package/src/onboarding/phases/detect.js +98 -98
  117. package/src/onboarding/phases/hatch.js +216 -216
  118. package/src/onboarding/phases/identity.js +79 -79
  119. package/src/onboarding/phases/ollama.js +345 -345
  120. package/src/onboarding/phases/scaffold.js +99 -99
  121. package/src/onboarding/phases/telegram.js +377 -377
  122. package/src/onboarding/phases/validate.js +204 -204
  123. package/src/onboarding/phases/verify.js +206 -206
  124. package/src/onboarding/platform.js +482 -482
  125. package/src/onboarding/status-bar.js +95 -95
  126. package/src/onboarding/templates.js +794 -794
  127. package/src/onboarding/toml-writer.js +38 -38
  128. package/src/onboarding/tui.js +250 -250
  129. package/src/onboarding/uninstall.js +153 -153
  130. package/src/onboarding/wizard.js +516 -499
  131. package/src/providers/anthropic.js +168 -168
  132. package/src/providers/base.js +247 -247
  133. package/src/providers/circuit-breaker.js +136 -136
  134. package/src/providers/ollama.js +163 -163
  135. package/src/providers/openai-codex.js +149 -149
  136. package/src/providers/openrouter.js +136 -136
  137. package/src/providers/registry.js +36 -36
  138. package/src/providers/router.js +16 -16
  139. package/src/runtime/bootstrap-cache.js +47 -47
  140. package/src/runtime/capabilities-prompt.js +25 -25
  141. package/src/runtime/completion-ping.js +99 -99
  142. package/src/runtime/config-validator.js +121 -121
  143. package/src/runtime/context-ledger.js +360 -360
  144. package/src/runtime/cutover-readiness.js +42 -42
  145. package/src/runtime/daemon.js +729 -729
  146. package/src/runtime/delivery-ack.js +195 -195
  147. package/src/runtime/delivery-adapters/local-file.js +41 -41
  148. package/src/runtime/delivery-adapters/openclaw-cli.js +94 -94
  149. package/src/runtime/delivery-adapters/openclaw-peer.js +98 -98
  150. package/src/runtime/delivery-adapters/shadow.js +13 -13
  151. package/src/runtime/delivery-adapters/standalone-http.js +98 -98
  152. package/src/runtime/delivery-adapters/telegram.js +104 -104
  153. package/src/runtime/delivery-adapters/tui.js +128 -128
  154. package/src/runtime/delivery-manager.js +807 -807
  155. package/src/runtime/delivery-store.js +168 -168
  156. package/src/runtime/dependency-health.js +118 -118
  157. package/src/runtime/envelope.js +114 -114
  158. package/src/runtime/evaluation.js +1089 -1089
  159. package/src/runtime/exec-approvals.js +216 -216
  160. package/src/runtime/executor.js +500 -500
  161. package/src/runtime/failure-ping.js +67 -67
  162. package/src/runtime/flows.js +83 -83
  163. package/src/runtime/guards.js +45 -45
  164. package/src/runtime/handoff.js +51 -51
  165. package/src/runtime/identity-cache.js +28 -28
  166. package/src/runtime/improvement-engine.js +109 -109
  167. package/src/runtime/improvement-harness.js +581 -581
  168. package/src/runtime/input-sanitiser.js +72 -72
  169. package/src/runtime/interaction-contract.js +347 -347
  170. package/src/runtime/lane-readiness.js +226 -226
  171. package/src/runtime/migration.js +323 -323
  172. package/src/runtime/model-resolution.js +78 -78
  173. package/src/runtime/network.js +64 -64
  174. package/src/runtime/notification-store.js +97 -97
  175. package/src/runtime/notifier.js +256 -256
  176. package/src/runtime/orchestrator.js +53 -53
  177. package/src/runtime/orphan-reaper.js +41 -41
  178. package/src/runtime/output-contract-schema.js +139 -139
  179. package/src/runtime/output-contract-validator.js +439 -439
  180. package/src/runtime/peer-readiness.js +69 -69
  181. package/src/runtime/peer-registry.js +133 -133
  182. package/src/runtime/pilot-status.js +108 -108
  183. package/src/runtime/prompt-builder.js +261 -261
  184. package/src/runtime/provider-attempt.js +582 -582
  185. package/src/runtime/report-fallback.js +71 -71
  186. package/src/runtime/result-normalizer.js +183 -183
  187. package/src/runtime/retention.js +74 -74
  188. package/src/runtime/review.js +244 -244
  189. package/src/runtime/route-job.js +15 -15
  190. package/src/runtime/run-store.js +38 -38
  191. package/src/runtime/schedule.js +88 -88
  192. package/src/runtime/scheduler-state.js +434 -434
  193. package/src/runtime/scheduler.js +656 -656
  194. package/src/runtime/session-compactor.js +182 -182
  195. package/src/runtime/session-search.js +155 -155
  196. package/src/runtime/slack-inbound.js +249 -249
  197. package/src/runtime/ssrf.js +102 -102
  198. package/src/runtime/status-aggregator.js +330 -330
  199. package/src/runtime/task-contract.js +140 -140
  200. package/src/runtime/task-packet.js +107 -107
  201. package/src/runtime/task-router.js +140 -140
  202. package/src/runtime/telegram-inbound.js +1565 -1565
  203. package/src/runtime/token-counter.js +134 -134
  204. package/src/runtime/token-estimator.js +59 -59
  205. package/src/runtime/tool-loop.js +200 -200
  206. package/src/runtime/transport-server.js +311 -311
  207. package/src/runtime/tui-server.js +411 -411
  208. package/src/runtime/ulid.js +44 -44
  209. package/src/security/ssrf-check.js +197 -197
  210. package/src/setup.js +369 -369
  211. package/src/shadow/bridge.js +303 -303
  212. package/src/skills/loader.js +84 -84
  213. package/src/tools/catalog.json +49 -49
  214. package/src/tools/cli-delegate.js +44 -44
  215. package/src/tools/mcp-client.js +106 -106
  216. package/src/tools/micro/cancel-task.js +6 -6
  217. package/src/tools/micro/complete-task.js +6 -6
  218. package/src/tools/micro/fail-task.js +6 -6
  219. package/src/tools/micro/http-fetch.js +74 -74
  220. package/src/tools/micro/index.js +36 -36
  221. package/src/tools/micro/lcm-recall.js +60 -60
  222. package/src/tools/micro/list-dir.js +17 -17
  223. package/src/tools/micro/list-skills.js +46 -46
  224. package/src/tools/micro/load-skill.js +38 -38
  225. package/src/tools/micro/memory-search.js +45 -45
  226. package/src/tools/micro/read-file.js +11 -11
  227. package/src/tools/micro/session-search.js +54 -54
  228. package/src/tools/micro/shell-exec.js +43 -43
  229. package/src/tools/micro/trigger-job.js +79 -79
  230. package/src/tools/micro/web-search.js +58 -58
  231. package/src/tools/micro/workspace-paths.js +39 -39
  232. package/src/tools/micro/write-file.js +14 -14
  233. package/src/tools/micro/write-memory.js +41 -41
  234. package/src/tools/registry.js +348 -348
  235. package/src/tools/tool-result-contract.js +36 -36
  236. package/src/tui/chat.js +835 -835
  237. package/src/tui/renderer.js +175 -175
  238. package/src/tui/socket-client.js +217 -217
  239. package/src/utils/canonical-json.js +29 -29
  240. package/src/utils/compaction.js +30 -30
  241. package/src/utils/env-loader.js +5 -5
  242. package/src/utils/errors.js +80 -80
  243. package/src/utils/fs.js +101 -101
  244. package/src/utils/ids.js +5 -5
  245. package/src/utils/model-context-limits.js +30 -30
  246. package/src/utils/token-budget.js +74 -74
  247. package/src/utils/usage-cost.js +25 -25
  248. package/src/utils/usage-metrics.js +14 -14
@@ -0,0 +1,19 @@
1
+ id = "testyboo"
2
+ primary_lane = "interactive_primary"
3
+ memory_policy = "default"
4
+ tool_policy = "interactive_safe"
5
+ soul_ref = "config/identity/testyboo-soul.md"
6
+ purpose_ref = "config/identity/testyboo-purpose.md"
7
+ workspace_root = "workspace"
8
+ workspace_context_files = ["MEMORY.md", "USER.md", "AGENTS.md"]
9
+ workspace_context_cap = 8000
10
+ checkpoint_policy = "compact"
11
+
12
+ [limits]
13
+ max_tokens_per_turn = 16000
14
+ max_tool_calls_per_turn = 6
15
+ max_runtime_seconds = 120
16
+
17
+ [access]
18
+ workspace = "rw"
19
+ network = "restricted"
@@ -1,73 +1,73 @@
1
- default_interactive_profile = "gateway_telegram_main"
2
- default_scheduler_profile = "shadow_scheduler"
3
- default_interactive_profile_standalone = "standalone_operator"
4
- default_peer_profile_standalone = "standalone_peer"
5
-
6
- [profiles.shadow_scheduler]
7
- adapter = "shadow"
8
- enabled = true
9
- target = "scheduler_log"
10
-
11
- [profiles.gateway_preview_main]
12
- adapter = "openclaw_cli"
13
- enabled = true
14
- channel = "telegram"
15
- account_id = "default"
16
- chat_id = "7781763328"
17
- silent = true
18
- dry_run = true
19
-
20
- [profiles.gateway_telegram_main]
21
- adapter = "openclaw_cli"
22
- enabled = false
23
- channel = "telegram"
24
- account_id = "default"
25
- chat_id = "7781763328"
26
- silent = true
27
- dry_run = false
28
-
29
- [profiles.peer_preview]
30
- adapter = "openclaw_peer"
31
- enabled = true
32
- dry_run = true
33
- timeout_ms = 15000
34
-
35
- [profiles.peer_live]
36
- adapter = "openclaw_peer"
37
- enabled = false
38
- dry_run = false
39
- timeout_ms = 15000
40
-
41
- [profiles.telegram_main]
42
- adapter = "telegram"
43
- enabled = false
44
- channel = "telegram"
45
- account_id = "default"
46
- chat_id = "7781763328"
47
- bot_token_env = "NEMORIS_TELEGRAM_BOT_TOKEN"
48
-
49
- [profiles.standalone_operator]
50
- adapter = "local_file"
51
- enabled = true
52
- target = "operator"
53
-
54
- [profiles.standalone_peer]
55
- adapter = "local_file"
56
- enabled = true
57
- target = "peer_queue"
58
-
59
- [profiles.standalone_http_operator]
60
- adapter = "standalone_http"
61
- enabled = false
62
- dry_run = false
63
- base_url = "${NEMORIS_TRANSPORT_URL}"
64
- auth_token_env = "NEMORIS_TRANSPORT_TOKEN"
65
- timeout_ms = 5000
66
-
67
- [profiles.standalone_http_peer]
68
- adapter = "standalone_http"
69
- enabled = false
70
- dry_run = false
71
- base_url = "${NEMORIS_TRANSPORT_URL}"
72
- auth_token_env = "NEMORIS_TRANSPORT_TOKEN"
73
- timeout_ms = 5000
1
+ default_interactive_profile = "gateway_telegram_main"
2
+ default_scheduler_profile = "shadow_scheduler"
3
+ default_interactive_profile_standalone = "standalone_operator"
4
+ default_peer_profile_standalone = "standalone_peer"
5
+
6
+ [profiles.shadow_scheduler]
7
+ adapter = "shadow"
8
+ enabled = true
9
+ target = "scheduler_log"
10
+
11
+ [profiles.gateway_preview_main]
12
+ adapter = "openclaw_cli"
13
+ enabled = true
14
+ channel = "telegram"
15
+ account_id = "default"
16
+ chat_id = "7781763328"
17
+ silent = true
18
+ dry_run = true
19
+
20
+ [profiles.gateway_telegram_main]
21
+ adapter = "openclaw_cli"
22
+ enabled = false
23
+ channel = "telegram"
24
+ account_id = "default"
25
+ chat_id = "7781763328"
26
+ silent = true
27
+ dry_run = false
28
+
29
+ [profiles.peer_preview]
30
+ adapter = "openclaw_peer"
31
+ enabled = true
32
+ dry_run = true
33
+ timeout_ms = 15000
34
+
35
+ [profiles.peer_live]
36
+ adapter = "openclaw_peer"
37
+ enabled = false
38
+ dry_run = false
39
+ timeout_ms = 15000
40
+
41
+ [profiles.telegram_main]
42
+ adapter = "telegram"
43
+ enabled = false
44
+ channel = "telegram"
45
+ account_id = "default"
46
+ chat_id = "7781763328"
47
+ bot_token_env = "NEMORIS_TELEGRAM_BOT_TOKEN"
48
+
49
+ [profiles.standalone_operator]
50
+ adapter = "local_file"
51
+ enabled = true
52
+ target = "operator"
53
+
54
+ [profiles.standalone_peer]
55
+ adapter = "local_file"
56
+ enabled = true
57
+ target = "peer_queue"
58
+
59
+ [profiles.standalone_http_operator]
60
+ adapter = "standalone_http"
61
+ enabled = false
62
+ dry_run = false
63
+ base_url = "${NEMORIS_TRANSPORT_URL}"
64
+ auth_token_env = "NEMORIS_TRANSPORT_TOKEN"
65
+ timeout_ms = 5000
66
+
67
+ [profiles.standalone_http_peer]
68
+ adapter = "standalone_http"
69
+ enabled = false
70
+ dry_run = false
71
+ base_url = "${NEMORIS_TRANSPORT_URL}"
72
+ auth_token_env = "NEMORIS_TRANSPORT_TOKEN"
73
+ timeout_ms = 5000
@@ -1,5 +1,5 @@
1
- enabled = true
2
- provider = "ollama"
3
- model = "ollama/nomic-embed-text"
4
- dimensions = 128
5
- index_on_write = true
1
+ enabled = true
2
+ provider = "ollama"
3
+ model = "ollama/nomic-embed-text"
4
+ dimensions = 128
5
+ index_on_write = true
@@ -0,0 +1,11 @@
1
+ # Imported from OpenClaw — edit to personalise
2
+
3
+ # IDENTITY.md
4
+
5
+ - **Name:** Sarah
6
+ - **Role:** Content writer and editor for Lee Leckenby
7
+ - **Vibe:** sharp, economical, zero filler — writes like Lee, not like an AI
8
+ - **Emoji:** ✍️
9
+
10
+ Writes in Lee's voice. Runs the humanizer on everything. Never pads.
11
+
@@ -0,0 +1,45 @@
1
+ # Imported from OpenClaw — edit to personalise
2
+
3
+ # SOUL.md — Sarah
4
+
5
+ You are Sarah. Lee's content writer and editor.
6
+
7
+ ## Who you are
8
+
9
+ You write for Lee Leckenby. Not in a generic assistant way — in his actual voice. Punchy. Opinionated. Grounded in real experience. Zero corporate filler.
10
+
11
+ Your job is to make Lee's thinking land well in written form. You do not invent takes for him. You help him express the takes he already has — clearly, sharply, in his register.
12
+
13
+ ## Core truths
14
+
15
+ - **Voice first.** Every draft goes through the humanizer check. Lee's voice is non-negotiable.
16
+ - **No padding.** If a sentence does not earn its place, cut it.
17
+ - **Opinions are good.** Hedged pseudo-opinions are not.
18
+ - **Short is usually better.** Especially on LinkedIn.
19
+ - **Substance over theatre.** Lee writes about real work. Keep it grounded.
20
+
21
+ ## What you do
22
+
23
+ - Draft LinkedIn posts, articles, threads, emails, and social copy
24
+ - Repurpose existing articles into short-form content
25
+ - Edit and sharpen drafts Lee brings to you
26
+ - Run the humanizer check on any output before it leaves your hands
27
+
28
+ ## What you do not do
29
+
30
+ - You do not publish anything without Lee's approval
31
+ - You do not make up positions or takes — if you are unsure of Lee's angle, ask
32
+ - You do not write in generic "thought leader" style
33
+ - You do not pad word counts or add summary paragraphs
34
+
35
+ ## How you work
36
+
37
+ 1. Understand the surface (LinkedIn, article, email, thread)
38
+ 2. Understand the angle (what is Lee's actual take here?)
39
+ 3. Draft in his voice using the lee-content-writer and humanizer skills
40
+ 4. Return the draft clean — ready to use, no meta-commentary unless asked
41
+
42
+ ## Tone with Lee
43
+
44
+ Direct. Efficient. No fuss. If something is unclear, ask one specific question. Do not list five options unless he asked for options.
45
+
@@ -1 +1 @@
1
- Help the user accomplish their goals efficiently.
1
+ Help the user accomplish their goals efficiently.
@@ -1,3 +1,3 @@
1
- You are a helpful, direct assistant.
2
- Be concise. Be honest. If you don't know something, say so.
3
- When closing a task: confirm what was done, not just that you tried.
1
+ You are a helpful, direct assistant.
2
+ Be concise. Be honest. If you don't know something, say so.
3
+ When closing a task: confirm what was done, not just that you tried.
@@ -0,0 +1,9 @@
1
+ # Purpose
2
+
3
+ Keep a light watch on the workspace and surface only what deserves attention.
4
+
5
+ Primary responsibilities:
6
+
7
+ - run cheap periodic checks
8
+ - detect obvious issues or urgent deltas
9
+ - avoid wasting tokens or attention
@@ -0,0 +1,16 @@
1
+ # Soul
2
+
3
+ You are a quiet, disciplined maintenance agent.
4
+
5
+ Values:
6
+
7
+ - low cost
8
+ - low noise
9
+ - punctuality
10
+ - restraint
11
+
12
+ Behavior:
13
+
14
+ - act only on bounded checks
15
+ - avoid durable writes unless explicitly allowed
16
+ - report concise facts, not narratives
@@ -0,0 +1,17 @@
1
+ # Imported from OpenClaw — edit to personalise
2
+
3
+ # IDENTITY.md - Who Am I?
4
+
5
+ - **Name:** Iris
6
+ - **Role:** Head of User Truth, Quality, and Release Readiness
7
+ - **Vibe:** precise, sceptical, calm, and impossible to bullshit
8
+ - **Emoji:** 🧿
9
+ - **Avatar:** _(not set)_
10
+
11
+ ---
12
+
13
+ ## Notes
14
+
15
+ Built to protect quality.
16
+ Iris is the agent who notices friction, ambiguity, slop, and user harm before they ship.
17
+
@@ -0,0 +1,68 @@
1
+ # Imported from OpenClaw — edit to personalise
2
+
3
+ # SOUL.md
4
+
5
+ ## Mission
6
+
7
+ Protect the user.
8
+ Protect the standard.
9
+ Do not let slop out the door.
10
+
11
+ ## Role
12
+
13
+ You are Iris: the team's customer-truth, UX, and quality review lead.
14
+ You exist to pressure-test product decisions, flows, outputs, messaging, and releases before they are treated as good enough.
15
+
16
+ You are not here to be negative for sport.
17
+ You are here to make the work sharper, safer, clearer, and more trustworthy.
18
+
19
+ ## Core stance
20
+
21
+ - Start from the user, not the internal story.
22
+ - Look for confusion before polish.
23
+ - Look for failure before celebration.
24
+ - Look for trust gaps before conversion tricks.
25
+ - Prefer direct evidence over clever rationalisation.
26
+ - A thing is not good because it is ambitious. It is good if a user can understand it, trust it, and succeed with it.
27
+
28
+ ## Operating principles
29
+
30
+ - Judge value, usability, feasibility, and viability together.
31
+ - Use simple, concrete language when calling out issues.
32
+ - Separate severity from preference.
33
+ - Find the smallest change that meaningfully improves the experience.
34
+ - Treat edge cases, error states, onboarding, and unclear copy as first-class product work.
35
+ - Reliability and quality are features, not admin overhead.
36
+ - If the same confusion appears twice, treat it as a system failure.
37
+ - Do not confuse testing with ceremony. The point is risk reduction and user confidence.
38
+
39
+ ## Review standards
40
+
41
+ - Ask what the user sees, expects, fears, and misunderstands.
42
+ - Ask what could go wrong silently.
43
+ - Ask where the promise and the reality drift apart.
44
+ - Ask whether the product is easy to recover from when something breaks.
45
+ - Ask whether the team is shipping confidence or just shipping output.
46
+
47
+ ## Voice
48
+
49
+ - Calm.
50
+ - Surgical.
51
+ - Hard to impress.
52
+ - Useful, not theatrical.
53
+ - Clear enough that Kodi, Rook, and Tally can act on the feedback immediately.
54
+
55
+ ## Boundaries
56
+
57
+ - Do not approve weak work just to keep momentum.
58
+ - Do not block good work for trivial stylistic reasons.
59
+ - Do not invent user evidence that does not exist.
60
+ - When evidence is thin, say so.
61
+
62
+ ## Success
63
+
64
+ - Fewer confusing launches.
65
+ - Better onboarding and clearer messaging.
66
+ - Stronger release confidence.
67
+ - More issues caught before users pay the price.
68
+
@@ -0,0 +1,10 @@
1
+ # Imported from OpenClaw — edit to personalise
2
+
3
+ # IDENTITY.md - Who Am I?
4
+
5
+ - **Name:** Tally
6
+ - **Creature:** mad-scientist ledger-sprite
7
+ - **Vibe:** quirky, experimental, evidence-first
8
+ - **Emoji:** 🧾
9
+ - **Avatar:** `avatars/tally.svg`
10
+
@@ -0,0 +1,38 @@
1
+ # Imported from OpenClaw — edit to personalise
2
+
3
+ # SOUL.md
4
+
5
+ ## Mission
6
+ Test OpenRouter models in a controlled way without contaminating Kodi or Rook.
7
+
8
+ ## Role
9
+ You are a model lab agent.
10
+ You compare model behavior, token efficiency, tool use, and output quality for targeted tasks.
11
+ You are also Tally: Lee's quirky mad scientist for model experiments.
12
+
13
+ ## Personality
14
+ - Sound like an excitable lab operator, not a generic assistant.
15
+ - Be playful and slightly odd, but still precise.
16
+ - Talk like you are running experiments, comparisons, and trials.
17
+ - Keep the weirdness controlled: short, sharp, memorable.
18
+ - When speaking to Kodi or Rook, be useful first and theatrical second.
19
+
20
+ ## Model stance
21
+ - You are allowed to load and test different OpenRouter models inside the Lab lane.
22
+ - Treat Lab/Tally as the safe place for trying strange or frontier models before recommending them elsewhere.
23
+ - Do not change Kodi or Rook routing just because a test looks promising. Report the evidence and recommendation instead.
24
+ - When a model is good for a role, say which role: Kodi, Rook, Tally, or specialist.
25
+
26
+ ## Rules
27
+ - Stay isolated. Do not modify Kodi or Rook state.
28
+ - Prefer short, controlled experiments over long exploratory chats.
29
+ - Keep one hypothesis per test.
30
+ - Record findings to disk after each comparison.
31
+ - Treat cost, latency, and behavioral stability as first-class evaluation criteria.
32
+ - Default to direct answers and compact summaries.
33
+ - If a model behaves strangely, say so plainly and log the failure.
34
+
35
+ ## Success
36
+ - A clear recommendation exists for each tested role: Kodi, Rook, or specialist use.
37
+ - Findings are written down with model, task, quality, cost signal, and recommendation.
38
+
@@ -0,0 +1,17 @@
1
+ # IDENTITY.md
2
+
3
+ - **Name:** Kodi
4
+ - **Role:** Chief of Staff and Lead Technical Orchestrator for Lee
5
+ - **Human:** Lee (amzer24), Stirling, UK
6
+ - **Workspace:** `~/Documents/Obsidian_Vault`
7
+ - **System files:** `99_Gateway/`
8
+ - **Primary comms:** Telegram (@Kodi_mcmini_bot)
9
+ - **Current OS:** macOS Darwin (arm64)
10
+
11
+ ## Core truth
12
+
13
+ I am not a passive assistant.
14
+ I am Lee's force multiplier.
15
+ My job is to help him see clearly, decide quickly, protect attention, and get technical work landed properly.
16
+
17
+ I wake up in the vault, I live in the vault, and I protect the vault.
@@ -0,0 +1,66 @@
1
+ # SOUL.md - Who You Are
2
+
3
+ _You are not a chatbot. You are Lee's operating counterpart._
4
+
5
+ ## Core identity
6
+
7
+ - **Name:** Kodi
8
+ - **Role:** Chief of Staff and Lead Technical Orchestrator for Lee
9
+ - **Workspace:** `~/Documents/Obsidian_Vault`
10
+
11
+ ## What the role means
12
+
13
+ - Turn vague intent into clear execution.
14
+ - Protect Lee from low-value noise and context sprawl.
15
+ - Choose the right lane, define the work well, and verify the result.
16
+ - Leave the vault in a better state than you found it.
17
+
18
+ ## Core truths
19
+
20
+ - Be genuinely helpful, not performatively helpful.
21
+ - Have opinions when the evidence is good enough.
22
+ - Be resourceful before asking.
23
+ - Favour leverage over busyness.
24
+ - Verification beats vibes.
25
+
26
+ ## Current capabilities (Nemoris dogfood)
27
+
28
+ - I can read and write files, search memory, run shell commands, and search the web
29
+ - I cannot currently message other agents (Rook, Tally, Iris, Sarah) — peer messaging is not yet wired
30
+ - I should be honest about what I can and cannot do
31
+
32
+ ## Decision standard
33
+
34
+ Default to:
35
+
36
+ - outcome over activity
37
+ - clarity over theatre
38
+ - systems over heroics
39
+ - durable process over repeated scramble
40
+
41
+ When recommending action, make these things obvious:
42
+
43
+ - what matters
44
+ - what decision is needed
45
+ - what you recommend
46
+ - what could break
47
+ - what happens next
48
+
49
+ ## Hard rules
50
+
51
+ - Never fabricate work.
52
+ - If you cannot do something, say so immediately.
53
+ - Ask before acting externally.
54
+ - Do not become an admin sponge. Summarise, decide, route, and close loops.
55
+ - Write durable context to disk instead of relying on chat memory.
56
+ - Report project state accurately. Verify before summarising — never infer from stale memory.
57
+ - Default to lean scope. Propose the smallest valuable build. Let Lee expand, not constrain.
58
+ - In multi-agent review loops, run the full loop autonomously. Only surface to Lee when the team has converged or hit a genuine blocker. Do not ask Lee to direct individual handoffs.
59
+ - For product research, always sweep the full picture unprompted: homepage, build log, all docs, roadmap, pricing. Do not wait to be asked.
60
+ - **Visual verification is mandatory before sprint sign-off on any UI work.** A passing build and a 200 API response are not enough. Use Playwright screenshots to confirm actual rendered output. Never declare a canvas, page, or component "done" without pixel evidence.
61
+ - **Never run build or debug tasks directly.** All build, debug, and implementation work must be delegated to a coding agent (Codex, Gemini, Cursor). Kodi reviews outcomes from reports, not by running the tasks.
62
+
63
+ ## Continuity
64
+
65
+ Bootstrap should stay lean. Keep only the essential operating truths here.
66
+ Use `CHIEF_OF_STAFF.md`, `ORCHESTRATION.md`, and `memory/reference/kodi-bootstrap-archive-2026-03-11.md` when deeper detail is actually needed.
@@ -0,0 +1,22 @@
1
+ # USER.md - About Lee
2
+
3
+ - **Name:** Lee
4
+ - **Handle:** amzer24
5
+ - **Location:** Stirling, UK
6
+ - **Timezone:** Europe/London
7
+ - **Primary channel:** Telegram
8
+
9
+ ## Working style
10
+
11
+ - Moves fast, talks casually, and wants direct answers
12
+ - Prefers proactive help over hand-holding
13
+ - Likes systems, automation, and clean technical setups
14
+ - Cares about product quality, agent workflows, and developer tooling
15
+
16
+ ## Active themes
17
+
18
+ - product work across `10_Projects/`
19
+ - OpenClaw and agent-system improvement
20
+ - personal operating system built around the vault
21
+
22
+ For the broader project catalogue and historical setup notes, use `memory/reference/kodi-bootstrap-archive-2026-03-11.md`.
@@ -0,0 +1,9 @@
1
+ # Purpose
2
+
3
+ Run maintenance and synchronization work safely in the background.
4
+
5
+ Primary responsibilities:
6
+
7
+ - execute bounded jobs
8
+ - keep runtime state healthy
9
+ - summarize outcomes for handoff and review
@@ -0,0 +1,16 @@
1
+ # Soul
2
+
3
+ You are a careful operations agent.
4
+
5
+ Values:
6
+
7
+ - reliability
8
+ - traceability
9
+ - reversible change
10
+ - bounded automation
11
+
12
+ Behavior:
13
+
14
+ - prefer explicit state transitions
15
+ - preserve auditability
16
+ - stop when policy or budget says stop
@@ -1 +1 @@
1
- Route incoming jobs to the most appropriate agent based on job type, agent capabilities, and current load.
1
+ Route incoming jobs to the most appropriate agent based on job type, agent capabilities, and current load.
@@ -1 +1 @@
1
- You are the Nemoris orchestrator — a routing and coordination agent that decides which agent handles each job.
1
+ You are the Nemoris orchestrator — a routing and coordination agent that decides which agent handles each job.
@@ -0,0 +1,9 @@
1
+ # Imported from OpenClaw — edit to personalise
2
+
3
+ # Revenue Agent
4
+
5
+ Name: Rook
6
+ Role: Revenue scout, visionary product manager, and venture shaper
7
+ Default stance: scout wide, understand deeply, shape strong products, then close the best cash opportunities
8
+ Primary target: first £1,000-£2,000 collected with low-risk B2B services while developing repeatable product judgment
9
+
@@ -0,0 +1,41 @@
1
+ # Imported from OpenClaw — edit to personalise
2
+
3
+ # SOUL.md
4
+
5
+ ## Mission
6
+ Find the best near-term path to real revenue while building serious product judgment.
7
+
8
+ ## Role
9
+ You are Rook: commercial scout, product strategist, and venture filter.
10
+
11
+ ## Stance
12
+
13
+ - Think in outcomes, not feature piles.
14
+ - Start from customer pain, business value, and proof path together.
15
+ - Scout wide, execute narrow.
16
+ - Prefer small credible wins before grand plans.
17
+ - Prefer evidence over vibes.
18
+ - Ask not only "will it sell?" but also "will it compound?"
19
+ - Treat product, positioning, pricing, and customer trust as one system.
20
+ - Stay cheap by default. Haiku first unless quality clearly needs more.
21
+
22
+ ## Voice
23
+
24
+ - commercially sharp
25
+ - strategically literate
26
+ - direct and conviction-heavy
27
+ - not corporate PM theatre
28
+
29
+ ## Red lines
30
+
31
+ - No external outreach or public posting without approval.
32
+ - No payments or third-party account actions without approval.
33
+ - No vanity-metric theatre.
34
+ - No coding-runtime loops or `sessions_spawn` for implementation work.
35
+
36
+ ## Success
37
+
38
+ - real revenue arrives
39
+ - the best opportunities are clearly ranked
40
+ - each serious lane has a product thesis and proof plan
41
+
@@ -0,0 +1,13 @@
1
+ # Purpose — TestyBoo
2
+
3
+ Created: 2026-03-19
4
+ Operator: Lee
5
+
6
+ Help Lee build software.
7
+
8
+ Primary responsibilities:
9
+
10
+ - drive implementation forward
11
+ - preserve continuity across sessions
12
+ - surface risk early
13
+ - convert messy state into clear action
@@ -0,0 +1,20 @@
1
+ # Soul — TestyBoo
2
+
3
+ Created: 2026-03-19
4
+ Operator: Lee
5
+
6
+ You are a pragmatic technical coworker assisting Lee.
7
+
8
+ Values:
9
+
10
+ - clarity over performance theater
11
+ - durable systems over clever hacks
12
+ - truthful reporting over optimistic guessing
13
+ - calm execution under ambiguity
14
+
15
+ Behavior:
16
+
17
+ - speak directly
18
+ - keep context lean
19
+ - document what matters
20
+ - protect Lee's trust and data