@aitne-sh/aitne 0.1.8 → 0.1.10

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 (308) hide show
  1. package/README.md +251 -164
  2. package/agent-assets/agent-profiles/_safety.md +3 -3
  3. package/agent-assets/agent-profiles/browser-task.md +108 -0
  4. package/agent-assets/agent-profiles/conversational.md +3 -3
  5. package/agent-assets/agent-profiles/profile-importer.md +2 -2
  6. package/agent-assets/agent-profiles/routine-fetch-window.md +30 -19
  7. package/agent-assets/agents/context-index-reconcile/agent.md +52 -0
  8. package/agent-assets/agents/evening-review/agent.md +53 -0
  9. package/agent-assets/agents/hourly-check/agent.md +62 -0
  10. package/agent-assets/agents/monthly-review/agent.md +55 -0
  11. package/agent-assets/agents/morning-routine/agent.md +78 -0
  12. package/agent-assets/agents/roadmap-maintenance/agent.md +52 -0
  13. package/agent-assets/agents/skill-curation/agent.md +52 -0
  14. package/agent-assets/agents/user-profile-sweep-evening/agent.md +48 -0
  15. package/agent-assets/agents/user-profile-sweep-morning/agent.md +53 -0
  16. package/agent-assets/agents/weekly-review/agent.md +51 -0
  17. package/agent-assets/docs/concepts/agent-day.md +13 -11
  18. package/agent-assets/docs/concepts/auth-health.md +47 -10
  19. package/agent-assets/docs/concepts/backends-and-tiers.md +66 -31
  20. package/agent-assets/docs/concepts/costs-and-quotas.md +51 -15
  21. package/agent-assets/docs/concepts/delegated-mode.md +56 -17
  22. package/agent-assets/docs/concepts/memory-model.md +77 -34
  23. package/agent-assets/docs/concepts/observations.md +49 -11
  24. package/agent-assets/docs/concepts/process-keys.md +56 -22
  25. package/agent-assets/docs/concepts/routines.md +60 -33
  26. package/agent-assets/docs/concepts/safety-and-execution.md +50 -21
  27. package/agent-assets/docs/concepts/safety-model.md +61 -50
  28. package/agent-assets/docs/concepts/skills.md +34 -18
  29. package/agent-assets/docs/features/integrations/browser-history.md +196 -0
  30. package/agent-assets/docs/features/integrations/calendar.md +39 -29
  31. package/agent-assets/docs/features/integrations/git.md +18 -7
  32. package/agent-assets/docs/features/integrations/github.md +84 -33
  33. package/agent-assets/docs/features/integrations/mail.md +61 -17
  34. package/agent-assets/docs/features/integrations/notion.md +18 -6
  35. package/agent-assets/docs/features/integrations/obsidian.md +28 -5
  36. package/agent-assets/docs/features/lifestyle/git.md +44 -40
  37. package/agent-assets/docs/features/lifestyle/reading.md +57 -22
  38. package/agent-assets/docs/features/lifestyle/receipts.md +51 -21
  39. package/agent-assets/docs/features/lifestyle/travel-bookings.md +77 -14
  40. package/agent-assets/docs/features/memory-files/agent-journal.md +132 -53
  41. package/agent-assets/docs/features/memory-files/agent-lessons.md +177 -0
  42. package/agent-assets/docs/features/memory-files/projects.md +73 -17
  43. package/agent-assets/docs/features/memory-files/roadmap.md +54 -11
  44. package/agent-assets/docs/features/memory-files/schedule.md +113 -70
  45. package/agent-assets/docs/features/memory-files/today.md +46 -21
  46. package/agent-assets/docs/features/memory-files/user-profile.md +63 -33
  47. package/agent-assets/docs/features/messaging/bang-commands.md +113 -36
  48. package/agent-assets/docs/features/messaging/dashboard-chat.md +43 -21
  49. package/agent-assets/docs/features/messaging/discord.md +35 -4
  50. package/agent-assets/docs/features/messaging/overview.md +37 -19
  51. package/agent-assets/docs/features/messaging/pairing-and-magic-phrase.md +94 -27
  52. package/agent-assets/docs/features/messaging/slack.md +67 -14
  53. package/agent-assets/docs/features/messaging/telegram.md +22 -8
  54. package/agent-assets/docs/features/messaging/whatsapp.md +71 -17
  55. package/agent-assets/docs/features/operations/activity-and-conversations.md +45 -15
  56. package/agent-assets/docs/features/operations/approvals.md +49 -16
  57. package/agent-assets/docs/features/operations/backend-routing.md +68 -16
  58. package/agent-assets/docs/features/operations/cost-tracking.md +84 -17
  59. package/agent-assets/docs/features/operations/managed-chromium.md +222 -0
  60. package/agent-assets/docs/features/operations/notifications.md +52 -11
  61. package/agent-assets/docs/features/operations/quiet-hours.md +64 -40
  62. package/agent-assets/docs/features/operations/schedule-approaching.md +54 -24
  63. package/agent-assets/docs/features/routines/custom-routines.md +98 -26
  64. package/agent-assets/docs/features/routines/evening-review.md +82 -21
  65. package/agent-assets/docs/features/routines/hourly-check.md +149 -29
  66. package/agent-assets/docs/features/routines/morning-routine.md +54 -35
  67. package/agent-assets/docs/features/routines/weekly-review.md +46 -21
  68. package/agent-assets/docs/features/wiki/commands.md +26 -16
  69. package/agent-assets/docs/features/wiki/cost-and-approval.md +241 -0
  70. package/agent-assets/docs/features/wiki/dashboard.md +256 -0
  71. package/agent-assets/docs/features/wiki/overview.md +70 -12
  72. package/agent-assets/docs/features/wiki/search.md +248 -0
  73. package/agent-assets/docs/features/wiki/workspaces.md +254 -0
  74. package/agent-assets/docs/getting-started/01-what-is-this.md +34 -23
  75. package/agent-assets/docs/getting-started/02-first-steps.md +17 -10
  76. package/agent-assets/docs/getting-started/03-what-can-this-do.md +25 -14
  77. package/agent-assets/docs/getting-started/04-first-day.md +39 -21
  78. package/agent-assets/docs/glossary.md +235 -24
  79. package/agent-assets/docs/guides/add-a-custom-routine.md +63 -23
  80. package/agent-assets/docs/guides/backup-and-restore.md +80 -16
  81. package/agent-assets/docs/guides/budget-and-cost-for-wiki.md +57 -26
  82. package/agent-assets/docs/guides/build-your-wiki.md +22 -9
  83. package/agent-assets/docs/guides/change-which-model-handles-x.md +64 -10
  84. package/agent-assets/docs/guides/connect-a-new-mail-account.md +66 -15
  85. package/agent-assets/docs/guides/explore-with-trace-and-connect.md +32 -14
  86. package/agent-assets/docs/guides/import-knowledge-file.md +50 -40
  87. package/agent-assets/docs/guides/install-and-run.md +49 -20
  88. package/agent-assets/docs/guides/maintain-wiki-health.md +35 -10
  89. package/agent-assets/docs/guides/migrate-machines.md +74 -18
  90. package/agent-assets/docs/guides/multiple-wikis-for-multiple-domains.md +111 -60
  91. package/agent-assets/docs/guides/pause-the-agent.md +69 -24
  92. package/agent-assets/docs/guides/reinstall-cleanly.md +88 -18
  93. package/agent-assets/docs/guides/setup-wizard.md +116 -54
  94. package/agent-assets/docs/guides/switch-default-backend.md +62 -16
  95. package/agent-assets/docs/guides/use-an-existing-obsidian-vault.md +30 -14
  96. package/agent-assets/docs/reference/api.md +153 -32
  97. package/agent-assets/docs/reference/cli-commands.md +39 -18
  98. package/agent-assets/docs/reference/config.md +241 -49
  99. package/agent-assets/docs/reference/disallowed-tools.md +34 -13
  100. package/agent-assets/docs/reference/keyboard-shortcuts.md +34 -10
  101. package/agent-assets/docs/reference/knowledge-layout.md +629 -0
  102. package/agent-assets/docs/reference/process-keys.md +62 -6
  103. package/agent-assets/docs/reference/skills.md +41 -14
  104. package/agent-assets/docs/troubleshooting/auth-failed.md +51 -21
  105. package/agent-assets/docs/troubleshooting/dashboard-shows-degraded.md +97 -28
  106. package/agent-assets/docs/troubleshooting/fallback-keeps-firing.md +86 -22
  107. package/agent-assets/docs/troubleshooting/messaging-not-pairing.md +68 -24
  108. package/agent-assets/docs/troubleshooting/morning-routine-didnt-run.md +80 -20
  109. package/agent-assets/docs/troubleshooting/observation-not-detected.md +73 -21
  110. package/agent-assets/docs/troubleshooting/quota-exhausted.md +33 -8
  111. package/agent-assets/docs/troubleshooting/wiki-ingest-full-blocked.md +126 -54
  112. package/agent-assets/docs/troubleshooting/wiki-write-failed.md +29 -12
  113. package/agent-assets/optimizer-skills/drift-analysis/SKILL.md +1 -1
  114. package/agent-assets/optimizer-skills/knowledge-map/SKILL.md +1 -1
  115. package/agent-assets/optimizer-skills/skill-curation/SKILL.md +1 -1
  116. package/agent-assets/sandbox/linux/aitne-chromium.apparmor +91 -0
  117. package/agent-assets/sandbox/macos/aitne-chromium.sb +156 -0
  118. package/agent-assets/skills/agent-actions/SKILL.md +25 -41
  119. package/agent-assets/skills/agent-create/SKILL.md +158 -0
  120. package/agent-assets/skills/attach/SKILL.md +10 -29
  121. package/agent-assets/skills/browser-history/SKILL.md +211 -0
  122. package/agent-assets/skills/browser-history-respond/SKILL.md +111 -0
  123. package/agent-assets/skills/browser-task/SKILL.md +164 -0
  124. package/agent-assets/skills/context/SKILL.md +35 -44
  125. package/agent-assets/skills/context/curation.json +14 -14
  126. package/agent-assets/skills/context/references/api.md +52 -40
  127. package/agent-assets/skills/context/references/required-frontmatter.md +13 -12
  128. package/agent-assets/skills/context/references/snapshot-files.md +18 -17
  129. package/agent-assets/skills/context/seeds/file-responsibilities.seed.json +8 -8
  130. package/agent-assets/skills/context/seeds/frontmatter-requirements.seed.json +3 -3
  131. package/agent-assets/skills/docs-search/SKILL.md +23 -34
  132. package/agent-assets/skills/external-services/SKILL.delegated.claude.md +17 -114
  133. package/agent-assets/skills/external-services/SKILL.delegated.codex.md +17 -113
  134. package/agent-assets/skills/external-services/SKILL.delegated.gemini.md +17 -113
  135. package/agent-assets/skills/external-services/SKILL.md +3 -3
  136. package/agent-assets/skills/external-services/SKILL.native.claude.md +7 -7
  137. package/agent-assets/skills/external-services/SKILL.native.codex.md +7 -7
  138. package/agent-assets/skills/external-services/SKILL.native.gemini.md +4 -4
  139. package/agent-assets/skills/external-services/references/calendar-apple.md +2 -2
  140. package/agent-assets/skills/external-services/references/calendar-outlook.md +1 -1
  141. package/agent-assets/skills/external-services/references/exec-errors.md +32 -0
  142. package/agent-assets/skills/external-services/references/obsidian.md +2 -2
  143. package/agent-assets/skills/external-services/references/skills-crud.md +5 -5
  144. package/agent-assets/skills/gmail-lifestyle/SKILL.md +11 -83
  145. package/agent-assets/skills/gmail-lifestyle/references/receipts-api.md +4 -0
  146. package/agent-assets/skills/gmail-lifestyle/references/travel-bookings-api.md +9 -0
  147. package/agent-assets/skills/mail/SKILL.delegated.claude.md +15 -18
  148. package/agent-assets/skills/mail/SKILL.delegated.codex.md +11 -6
  149. package/agent-assets/skills/mail/SKILL.delegated.gemini.md +11 -6
  150. package/agent-assets/skills/mail/SKILL.md +10 -18
  151. package/agent-assets/skills/mail/SKILL.native.claude.md +8 -7
  152. package/agent-assets/skills/mail/SKILL.native.codex.md +1 -1
  153. package/agent-assets/skills/mail/SKILL.native.gemini.md +1 -1
  154. package/agent-assets/skills/mail/references/api.md +10 -3
  155. package/agent-assets/skills/mail/references/examples.md +2 -1
  156. package/agent-assets/skills/mail/references/providers.md +1 -1
  157. package/agent-assets/skills/managed-tasks/SKILL.md +48 -81
  158. package/agent-assets/skills/managed-tasks/references/errors.md +33 -19
  159. package/agent-assets/skills/managed-tasks/references/output-path.md +33 -17
  160. package/agent-assets/skills/managed-tasks/references/recurrence-rule.md +7 -5
  161. package/agent-assets/skills/management-policy/SKILL.md +42 -42
  162. package/agent-assets/skills/management-policy/curation.json +1 -1
  163. package/agent-assets/skills/management-policy/references/policy-workflow.md +11 -12
  164. package/agent-assets/skills/management-policy/seeds/policy-file-shape.seed.json +1 -1
  165. package/agent-assets/skills/notify/SKILL.md +14 -16
  166. package/agent-assets/skills/notify/references/priority.md +28 -20
  167. package/agent-assets/skills/notion/SKILL.delegated.claude.md +2 -2
  168. package/agent-assets/skills/notion/SKILL.delegated.codex.md +2 -2
  169. package/agent-assets/skills/notion/SKILL.delegated.gemini.md +2 -2
  170. package/agent-assets/skills/notion/SKILL.md +17 -17
  171. package/agent-assets/skills/notion/SKILL.native.claude.md +11 -7
  172. package/agent-assets/skills/notion/SKILL.native.codex.md +10 -5
  173. package/agent-assets/skills/notion/SKILL.native.gemini.md +10 -5
  174. package/agent-assets/skills/observations/SKILL.md +29 -28
  175. package/agent-assets/skills/observations/references/fetch-fallback.md +22 -0
  176. package/agent-assets/skills/project-doc/SKILL.md +10 -7
  177. package/agent-assets/skills/project-doc/curation.json +3 -3
  178. package/agent-assets/skills/project-doc/seeds/project-shape.seed.json +8 -5
  179. package/agent-assets/skills/project-doc/seeds/slug-grammar.seed.json +5 -5
  180. package/agent-assets/skills/reading/SKILL.md +18 -42
  181. package/agent-assets/skills/reading/references/reading-taste.md +7 -7
  182. package/agent-assets/skills/roadmap/SKILL.md +8 -24
  183. package/agent-assets/skills/roadmap/curation.json +1 -1
  184. package/agent-assets/skills/roadmap/references/api.md +21 -11
  185. package/agent-assets/skills/roadmap/references/cross-check.md +15 -8
  186. package/agent-assets/skills/roadmap/references/horizon-tags.md +11 -0
  187. package/agent-assets/skills/roadmap/references/migration.md +12 -10
  188. package/agent-assets/skills/roadmap/references/retention.md +18 -0
  189. package/agent-assets/skills/roadmap/seeds/entry-types.seed.json +1 -1
  190. package/agent-assets/skills/schedule/SKILL.md +41 -50
  191. package/agent-assets/skills/schedule/references/batch.md +2 -2
  192. package/agent-assets/skills/schedule/references/errors.md +7 -4
  193. package/agent-assets/skills/schedule/references/importance.md +23 -0
  194. package/agent-assets/skills/schedule/references/model-selection.md +3 -3
  195. package/agent-assets/skills/schedule/references/recurrence-rule.md +7 -5
  196. package/agent-assets/skills/scheduled-managed-task/SKILL.md +77 -70
  197. package/agent-assets/skills/today/SKILL.md +24 -83
  198. package/agent-assets/skills/today/curation.json +3 -3
  199. package/agent-assets/skills/today/references/agent-plan-lifecycle.md +6 -5
  200. package/agent-assets/skills/today/references/today-skeleton.md +66 -0
  201. package/agent-assets/skills/today/seeds/agent-notes-flavors.seed.json +1 -1
  202. package/agent-assets/skills/today/seeds/section-shape.seed.json +7 -7
  203. package/agent-assets/skills/user-interview/SKILL.md +21 -93
  204. package/agent-assets/skills/user-interview/references/op-briefing.md +3 -3
  205. package/agent-assets/skills/user-interview/references/op-dm-handler.md +88 -0
  206. package/agent-assets/skills/user-interview/references/op-morning.md +1 -1
  207. package/agent-assets/skills/user-interview/references/sweep-and-fallback.md +9 -1
  208. package/agent-assets/skills/user-profile/SKILL.md +29 -39
  209. package/agent-assets/skills/user-profile/curation.json +4 -4
  210. package/agent-assets/skills/user-profile/references/character-preferences.md +3 -3
  211. package/agent-assets/skills/user-profile/seeds/routing-table.seed.json +8 -8
  212. package/agent-assets/skills/user-profile/seeds/topic-files.seed.json +6 -6
  213. package/agent-assets/skills/wiki/wiki-ask/SKILL.md +1 -1
  214. package/agent-assets/skills/wiki/wiki-compile/SKILL.md +9 -8
  215. package/agent-assets/skills/wiki/wiki-connect/SKILL.md +32 -5
  216. package/agent-assets/skills/wiki/wiki-ingest/SKILL.md +6 -50
  217. package/agent-assets/skills/wiki/wiki-ingest/references/curl-errors.md +58 -0
  218. package/agent-assets/skills/wiki/wiki-lint/SKILL.md +20 -14
  219. package/agent-assets/skills/wiki/wiki-trace/SKILL.md +10 -5
  220. package/agent-assets/skills/wiki/wiki-vault-rules/SKILL.md +2 -0
  221. package/agent-assets/system-prompts/routine-fetch-window.md +22 -12
  222. package/agent-assets/task-flows/_partials/calendar-acquire.google_calendar.md +4 -2
  223. package/agent-assets/task-flows/_partials/calendar-acquire.outlook_calendar.md +4 -2
  224. package/agent-assets/task-flows/_partials/capture-user-info.md +2 -2
  225. package/agent-assets/task-flows/_partials/dm-intent.long-horizon.md +1 -1
  226. package/agent-assets/task-flows/_partials/dm-intent.project.md +9 -9
  227. package/agent-assets/task-flows/_partials/feedback-capture.md +30 -0
  228. package/agent-assets/task-flows/_partials/mail-acquire.outlook_mail.md +3 -2
  229. package/agent-assets/task-flows/_partials/notion-acquire.notion.md +10 -5
  230. package/agent-assets/task-flows/browser_task.md +84 -0
  231. package/agent-assets/task-flows/github.assigned.md +1 -1
  232. package/agent-assets/task-flows/github.pull_request.review_requested.md +2 -2
  233. package/agent-assets/task-flows/github.workflow_run.failed.md +2 -2
  234. package/agent-assets/task-flows/knowledge.import.md +14 -14
  235. package/agent-assets/task-flows/message.received.dm.md +13 -4
  236. package/agent-assets/task-flows/message.received.dm_first.md +7 -3
  237. package/agent-assets/task-flows/routine.custom.md +3 -3
  238. package/agent-assets/task-flows/routine.evening_review.md +88 -8
  239. package/agent-assets/task-flows/routine.fetch_window.md +2 -2
  240. package/agent-assets/task-flows/routine.hourly_check.md +16 -12
  241. package/agent-assets/task-flows/routine.monthly_review.md +93 -21
  242. package/agent-assets/task-flows/routine.morning_routine_journal.md +119 -97
  243. package/agent-assets/task-flows/routine.morning_routine_today.md +43 -43
  244. package/agent-assets/task-flows/routine.research_cluster_update.md +35 -0
  245. package/agent-assets/task-flows/routine.research_dispatch.md +38 -0
  246. package/agent-assets/task-flows/routine.research_offer_dm.md +125 -0
  247. package/agent-assets/task-flows/routine.research_wiki_summary.md +53 -0
  248. package/agent-assets/task-flows/routine.roadmap_refresh.md +10 -10
  249. package/agent-assets/task-flows/routine.today_refresh.md +4 -4
  250. package/agent-assets/task-flows/routine.user_profile_sweep.md +10 -10
  251. package/agent-assets/task-flows/routine.weekly_review.md +114 -24
  252. package/agent-assets/task-flows/schedule.approaching.md +0 -1
  253. package/agent-assets/task-flows/scheduled.dm.md +5 -5
  254. package/agent-assets/task-flows/scheduled.task.md +4 -4
  255. package/agent-assets/task-flows/setup.initial.md +21 -21
  256. package/agent-assets/task-flows/setup.update.md +2 -2
  257. package/agent-assets/task-flows/wiki.trace.md +1 -1
  258. package/agent-assets/templates/README.md +27 -20
  259. package/agent-assets/templates/_index.md +42 -26
  260. package/agent-assets/templates/_manifest.json +34 -99
  261. package/agent-assets/templates/{user → identity}/_index.md +1 -1
  262. package/agent-assets/templates/{user → identity}/profile.md +2 -2
  263. package/agent-assets/templates/{dossiers → knowledge/dossiers}/_index.md +1 -1
  264. package/agent-assets/templates/{projects → plans/projects}/_active.base +1 -1
  265. package/agent-assets/templates/policies/_index.md +21 -0
  266. package/agent-assets/templates/{rules → policies}/journal-export.md +1 -1
  267. package/agent-assets/templates/{rules → policies}/journal-format.md +5 -5
  268. package/agent-assets/templates/{rules/policies → policies/management-captures}/_index.md +2 -2
  269. package/agent-assets/templates/{rules → policies}/management.md +3 -3
  270. package/agent-assets/templates/{rules → policies}/mcp.md +1 -1
  271. package/agent-assets/templates/{rules → policies}/redaction.md +1 -1
  272. package/agent-assets/templates/{routines → policies/routines}/_index.md +1 -1
  273. package/agent-assets/templates/{routines → policies/routines}/evening.md +2 -2
  274. package/agent-assets/templates/{routines → policies/routines}/hourly.md +1 -1
  275. package/agent-assets/templates/{routines → policies/routines}/monthly.md +2 -2
  276. package/bin/aitne.mjs +58 -15
  277. package/package.json +5 -4
  278. package/scripts/commands/doctor.mjs +25 -10
  279. package/scripts/commands/run-now.mjs +6 -21
  280. package/scripts/lib/ports.d.mts +27 -0
  281. package/scripts/lib/ports.mjs +36 -0
  282. package/scripts/lib/process-identity.d.mts +46 -0
  283. package/scripts/lib/process-identity.mjs +193 -0
  284. package/scripts/lib/read-api-token.mjs +176 -0
  285. package/scripts/start.mjs +16 -5
  286. package/agent-assets/docs/features/lifestyle/travel-time.md +0 -58
  287. package/agent-assets/skills/gmail-lifestyle/references/travel-time-api.md +0 -59
  288. package/agent-assets/skills/schedule/references/recurring.md +0 -185
  289. package/agent-assets/templates/context-index.md +0 -42
  290. package/agent-assets/templates/rules/_index.md +0 -19
  291. /package/agent-assets/templates/{user → identity}/expertise.md +0 -0
  292. /package/agent-assets/templates/{user → identity}/goals.md +0 -0
  293. /package/agent-assets/templates/{user → identity}/people.md +0 -0
  294. /package/agent-assets/templates/{user → identity}/personal.md +0 -0
  295. /package/agent-assets/templates/{user → identity}/work.md +0 -0
  296. /package/agent-assets/templates/{agent/journal.md → journal/agent.md} +0 -0
  297. /package/agent-assets/templates/{dossiers → knowledge/dossiers}/evening.md +0 -0
  298. /package/agent-assets/templates/{dossiers → knowledge/dossiers}/hourly.md +0 -0
  299. /package/agent-assets/templates/{dossiers → knowledge/dossiers}/monthly.md +0 -0
  300. /package/agent-assets/templates/{dossiers → knowledge/dossiers}/morning.md +0 -0
  301. /package/agent-assets/templates/{dossiers → knowledge/dossiers}/roadmap.md +0 -0
  302. /package/agent-assets/templates/{dossiers → knowledge/dossiers}/weekly.md +0 -0
  303. /package/agent-assets/templates/{projects → plans/projects}/_index.md +0 -0
  304. /package/agent-assets/templates/{roadmap.md → plans/roadmap.md} +0 -0
  305. /package/agent-assets/templates/{routines → policies/routines}/morning.md +0 -0
  306. /package/agent-assets/templates/{routines → policies/routines}/weekly.md +0 -0
  307. /package/agent-assets/templates/{agent → state}/profile-questions.md +0 -0
  308. /package/agent-assets/templates/{today.md → state/today.md} +0 -0
@@ -19,7 +19,8 @@ section: safety
19
19
  tags:
20
20
  - core
21
21
  - safety
22
- - cost
22
+ - operations
23
+ - backends
23
24
  status: stable
24
25
  ask_examples:
25
26
  - What is the difference between Safe and Allow mode?
@@ -27,7 +28,7 @@ ask_examples:
27
28
  - How do I see what tools the agent is allowed to use?
28
29
  locale: en-US
29
30
  created: 2026-04-25
30
- updated: 2026-04-25
31
+ updated: 2026-05-28
31
32
  keywords:
32
33
  - safety
33
34
  - safe mode
@@ -35,18 +36,23 @@ keywords:
35
36
  - absolute block
36
37
  - disallowed tools
37
38
  - approval
39
+ - execution mode
40
+ - risk tier
38
41
  related:
42
+ - concepts/safety-model
39
43
  - concepts/skills
40
44
  - features/operations/approvals
41
45
  - reference/disallowed-tools
42
46
  ui_anchors:
43
47
  - /settings/advanced
48
+ - /settings/models
44
49
  config_keys:
45
50
  - disallowedTools
46
51
  - allowedToolsOverride
47
52
  - claudeExecutionPermissionMode
48
53
  - codexExecutionPermissionMode
49
54
  - geminiExecutionPermissionMode
55
+ - opencodeExecutionPermissionMode
50
56
  ---
51
57
 
52
58
  # Safety and Execution Modes
@@ -57,10 +63,13 @@ Three layers gate what the agent can do:
57
63
 
58
64
  1. **Skill `allowed-tools`** — the visible toolset for that session.
59
65
  2. **Execution mode** — Safe (strict permission checks, sandboxes)
60
- or Allow (SDK bypass, sandbox off). Per-backend.
61
- 3. **Always-disallowed** — a hard floor. Recursive deletes, sudo,
66
+ or Allow (SDK bypass, sandbox off). Set per-backend.
67
+ 3. **Always-disallowed** — a hard floor. Recursive deletes, `sudo`,
62
68
  secret-file reads / writes are denied unconditionally regardless
63
- of mode.
69
+ of mode, and neither a skill nor Allow mode can widen past it.
70
+
71
+ A fourth idea — the **risk tier** — sits on top of the daemon API and
72
+ decides whether a *write* runs on its own or waits for your approval.
64
73
 
65
74
  ## Why This Concept Exists
66
75
 
@@ -72,37 +81,57 @@ disallowed-tools floor.
72
81
 
73
82
  ## Definitions
74
83
 
75
- - **Safe mode**: the default. Strict permission checks, Claude curl/jq
76
- hooks, Codex workspace-write sandbox, Gemini whitelist TOML.
84
+ - **Safe mode**: the default. Strict permission checks, plus a
85
+ backend-specific enforcement layer — Claude curl/jq hooks, the Codex
86
+ workspace-write sandbox, the Gemini whitelist TOML, and the OpenCode
87
+ permission block.
77
88
  - **Allow mode**: the looser posture. SDK bypass, sandbox off, minimal
78
- TOML. The absolute-block layer still holds.
89
+ TOML. The absolute-block layer still holds in Allow mode, so the
90
+ destructive-ops floor never opens. Set independently per backend, so
91
+ one backend can run Allow while the others stay Safe.
79
92
  - **Absolute block**: the unconditional layer. `ALWAYS_DISALLOWED_TOOLS`
80
93
  in `src/safety/always-disallowed.ts`. Cannot be widened by skills,
81
94
  by config, or by allow-mode.
82
- - **Risk tier**: `read`, `notify`, `approve`. Read = autonomous. Notify
83
- = the agent proceeds after DMing the operator. Approve = blocked
84
- until the operator clicks approve in the dashboard.
95
+ - **Risk tier**: every daemon-API operation carries one of three tiers —
96
+ `autonomous`, `read_sensitive`, or `approve`. *Autonomous* runs without a
97
+ prompt. *Read-sensitive* reads (email, calendar, notes, context files) are
98
+ the same blast radius as autonomous but are gated by a read token when
99
+ `enforceReadToken` is on. *Approve* is blocked until you confirm with a
100
+ bearer token (the dashboard does this when you click Approve). There is no
101
+ separate "notify" tier — that behaviour now lives in the skill prompts: for
102
+ potentially destructive actions the agent DMs you first, then proceeds. See
103
+ [Safety model](safety-model.md) for the full taxonomy.
85
104
 
86
105
  ## Concrete Examples
87
106
 
88
- | Action | Risk tier |
107
+ The daemon API is the agent's only write path, so most of its own writes are
108
+ `autonomous` (the memory chokepoint validates and snapshots them). The
109
+ absolute-block layer and Approve tier are where the agent is actually stopped.
110
+
111
+ | Action | What gates it |
89
112
  |---|---|
90
- | Read `today.md` | read |
91
- | Append to `agent/journal.md` | notify |
92
- | Send a DM | notify |
93
- | Update `roadmap.md` | approve |
94
- | Recursive delete | absolute-block (refused) |
95
- | `chmod` on a daemon-owned file | absolute-block |
113
+ | Read `state/today.md` | `read_sensitive` (read token if `enforceReadToken`) |
114
+ | Append to `journal/agent.md` | `autonomous` — daemon API write |
115
+ | Update `plans/roadmap.md` | `autonomous`, plus a roadmap write-lock |
116
+ | Send a DM | `autonomous`; destructive follow-ups DM you first |
117
+ | Configure an automation trigger | `approve` needs a bearer token |
118
+ | `chmod` on a daemon-owned file | Safe-mode disallowed (allowed in Allow mode) |
119
+ | Recursive delete (`rm -rf`), `sudo`, secret-file read | absolute-block (refused in both modes) |
96
120
 
97
121
  ## Where You See It in the Dashboard
98
122
 
99
- - **Settings → Advanced** holds `disallowedTools`, `allowedToolsOverride`,
100
- and the per-backend execution mode switch.
101
- - **Activity** logs every blocked tool call as `action_type='blocked_absolute'`.
123
+ - **Settings → Advanced** holds the `disallowedTools` and
124
+ `allowedToolsOverride` tool-policy lists.
125
+ - **Settings → Models & Cost** holds the per-backend Safe / Allow
126
+ **Execution Mode** switch (you can also set it in the setup wizard).
127
+ - **Activity** logs every absolute-blocked tool call as
128
+ `action_type='blocked_absolute'`.
102
129
  - **Approvals** is where Approve-tier actions queue when they fire.
103
130
 
104
131
  ## Related
105
132
 
133
+ - [Safety model](safety-model.md) — the full risk-tier taxonomy and where
134
+ each API endpoint is classified.
106
135
  - [Skills](skills.md) — where each session's per-task `allowed-tools` lives.
107
136
  - [Approvals](../features/operations/approvals.md) — the operator-side
108
137
  surface for Approve-tier actions.
@@ -12,19 +12,20 @@ aliases:
12
12
  - on-demand retrospective
13
13
  category: concepts
14
14
  summary: |
15
- Aitne's safety model collapsed from four tiers to two: most
16
- actions run autonomously, a small set of posture-changing operations
17
- require explicit Approve. The previous Notify tier (DM the operator
18
- before / during a write) was abolished — the operator's `deniedTools`
19
- list is now the primary defense, and "what did the agent do?" is
20
- answered on demand via `GET /api/agent/actions` instead of pushed as
21
- a daily digest.
15
+ Aitne's risk classifier dropped from three write tiers to two: most
16
+ actions run autonomously, and a small set of posture-changing
17
+ operations require explicit Approve. The previous Notify tier (DM the
18
+ operator before / during a write) was abolished — the operator's
19
+ `deniedTools` list is now the primary defense, and "what did the
20
+ agent do?" is answered on demand via `GET /api/agent/actions` instead
21
+ of pushed as a daily digest. (The read-gating `ReadSensitive` tier is
22
+ unchanged.)
22
23
  section: safety
23
24
  tags:
24
25
  - core
25
26
  - safety
26
27
  - integrations
27
- - skills
28
+ - audit
28
29
  status: stable
29
30
  ask_examples:
30
31
  - Why doesn't the agent ask before sending an email anymore?
@@ -33,7 +34,7 @@ ask_examples:
33
34
  - Where do I see what the agent has been doing?
34
35
  locale: en-US
35
36
  created: 2026-04-26
36
- updated: 2026-05-17
37
+ updated: 2026-06-07
37
38
  keywords:
38
39
  - deniedTools
39
40
  - safety floor
@@ -50,10 +51,16 @@ related:
50
51
  - reference/disallowed-tools
51
52
  ui_anchors:
52
53
  - /connections
53
- - /settings/cost
54
- config_keys:
55
- - integrations
56
- - deniedTools
54
+ - /connections/mail
55
+ - /connections/calendar
56
+ - /analytics
57
+ api_endpoints:
58
+ - GET /api/agent/actions
59
+ - POST /api/integrations/:key/exec
60
+ - PATCH /api/integrations/:key
61
+ context_files:
62
+ - policies/integrations.md
63
+ - journal/agent.md
57
64
  ---
58
65
 
59
66
  # Safety Model (deniedTools + Approve Tier)
@@ -67,8 +74,8 @@ The risk classifier has two write tiers, not three:
67
74
  delete event, …) and for normal context writes.
68
75
  - **Approve** — agent must present a Bearer token issued through the
69
76
  dashboard. Reserved for posture-changing daemon configuration:
70
- flipping integration modes, swapping the main backend, deleting
71
- backends, wiping config.
77
+ flipping integration modes, swapping the main backend, enabling/
78
+ disabling backends, wiping config.
72
79
  - (`ReadSensitive` is the third tier, but it gates *reads* of personal
73
80
  data — orthogonal to write notifications. It is unchanged.)
74
81
 
@@ -123,27 +130,26 @@ of "report to me" events. Information about what the agent did is
123
130
  bare `*`.
124
131
  - **`/api/integrations/:key/exec`** — the cross-backend chokepoint
125
132
  (task mode; the RPC-style `/invoke` route was retired 2026-05-01,
126
- see `docs/design/17-delegated-mode-v2.md` §4.2). Enforces `deniedTools`
127
- server-side by filtering the integration's `capabilityTools` through
128
- the deny list before spawning the delegated backend, so the
129
- task-mode planner can only pick from the allowed surface. A
130
- fully-denied surface short-circuits with `errorClass: "denied_tool"`
131
- before any subprocess spawn.
133
+ see `docs/design/17-delegated-mode-v2.md` §4.2). It enforces
134
+ `deniedTools` server-side see the *Where the Defenses Apply* table
135
+ below for the exact mechanism.
132
136
  - **`agent_actions`** — SQLite table of every agent action. Direct +
133
- cross-backend rows are full-fidelity (current cross-backend writes
137
+ cross-backend rows are full-fidelity (cross-backend task-mode writes
134
138
  emit `delegated_task.run` / `delegated_task.exec` /
135
- `delegated_task.tool_step`; legacy rows from before 2026-05-01 carry
136
- `delegated_proxy.invoke`). Same-backend native MCP rolls up to
139
+ `delegated_task.tool_step`; the `delegated_proxy.invoke` row type
140
+ carries both legacy rows from the retired RPC `/invoke` route and
141
+ the hourly drift-detection probes still written by the
142
+ delegated-sync worker). Same-backend native MCP rolls up to
137
143
  `mcp_tool_calls` + the parent session row.
138
144
 
139
145
  ## Where the Defenses Apply
140
146
 
141
147
  | Path | Enforcement |
142
148
  |---|---|
143
- | Direct mode (`/api/mail/*`, `/api/calendar/*`) | Route handler middleware checks `deniedTools` against the materialized skill body's `allowed-tools` list (frontmatter). |
149
+ | Direct mode (`/api/mail/*`, `/api/calendar/*`) | `deniedTools` is **inert** the daemon runs the poller and the agent calls the daemon API through its direct-mode skill, so there is no per-tool deny surface. The list only persists for a future flip to delegated mode. Direct-mode safety comes from the route-level risk tiers (Approve gates posture-changing writes) and the always-disallowed layer, not `deniedTools`. |
144
150
  | Cross-backend (`/api/integrations/:key/exec`) | Invoker filters the integration's `capabilityTools` through `deniedTools` before spawning the delegated backend so the task-mode planner can only pick from the allowed surface. A fully-denied surface short-circuits with `errorClass: "denied_tool"`; individual tool denials surface as the same error from the invoker's `resolveAllowedToolPatterns`. |
145
151
  | Same-backend / native MCP — Claude | `collectSessionDeniedTools` merges the deny patterns into the SDK's `disallowedTools` array at `query()` time. Same code path covers both delegated same-backend and native — they share the in-session MCP surface. |
146
- | Same-backend / native MCP — Gemini | Patterns are folded into `generateAdminPolicy`'s TOML deny rules (priority 1000). |
152
+ | Same-backend / native MCP — Gemini | Patterns are folded into `generateAdminPolicy`'s TOML deny rules (priority 936 — above the registry-driven native allows, below the absolute-block layer). |
147
153
  | Same-backend / native MCP — Codex | **Prose-only.** Codex bundles its connector apps into the binary; there is no per-tool deny config and the workspace-write sandbox does not match MCP tool calls. Skill prose lists the denied tools explicitly. Operators who require strict deny on Gmail / Calendar should pick a non-Codex DM backend or route those integrations through `delegated` cross-backend mode (which IS deny-enforced at `/exec`). |
148
154
 
149
155
  ## Recommended Starter Denylists
@@ -220,26 +226,29 @@ When the operator asks "what did you do yesterday?" / "have you sent
220
226
  anything from Gmail this week?" the agent calls:
221
227
 
222
228
  ```bash
223
- curl 'http://localhost:8321/api/agent/actions?since=2026-04-25T00:00:00Z&kind=delegated_task.run&kind=delegated_task.tool_step&limit=50'
229
+ curl 'http://localhost:8321/api/agent/actions?since=2026-04-25T00:00:00Z&kind=delegated_task.exec&kind=delegated_task.tool_step&limit=50'
224
230
  ```
225
231
 
226
232
  and answers in conversation. The endpoint:
227
233
 
228
234
  - Lives at `Autonomous` tier — the agent reads only its own audit
229
235
  trail, no operator data.
230
- - Accepts `since`, `kind` (repeat for multiple values, e.g.
231
- `?kind=a&kind=b`), `limit` (default 50, max 200).
232
- - Redacts values via the standard secret-redaction utility before
233
- serializing.
234
- - Returns rows from `agent_actions`, optionally joined with
235
- `mcp_tool_calls` when `kind=mcp` (same-backend / native MCP).
236
-
237
- Common `kind` values for the cross-backend proxy: `delegated_task.run`
238
- (one row per `/exec` call), `delegated_task.exec` (the planner's
239
- chosen tool), `delegated_task.tool_step` (each individual tool call
240
- inside the task). The legacy `delegated_proxy.invoke` rows persist
241
- from before 2026-05-01 include them if the `since` window crosses
242
- that date.
236
+ - Accepts `since` (ISO-8601; defaults to the last 24h if omitted),
237
+ `kind` (an `action_type` filter — repeat for multiple values, e.g.
238
+ `?kind=a&kind=b`), and `limit` (default 50, max 200).
239
+ - Redacts the free-text `error` / `detail` fields via the standard
240
+ secret-redaction utility before serializing.
241
+ - Returns rows from `agent_actions` only. Same-backend / native MCP
242
+ calls surface as their own `action_type` rows (e.g. `kind=mcp`);
243
+ the per-call detail lives in `mcp_tool_calls`, which this endpoint
244
+ does not join query it separately if you need step-level fidelity.
245
+
246
+ Common `kind` values for the cross-backend proxy: `delegated_task.exec`
247
+ (one header row per `/exec` call), `delegated_task.run` (one header row
248
+ per generic `/run` call), `delegated_task.tool_step` (each individual
249
+ tool call inside the task). The `delegated_proxy.invoke` rows cover the
250
+ retired RPC `/invoke` route plus the delegated-sync worker's hourly
251
+ drift-detection probes — include them when you want that surface too.
243
252
 
244
253
  This **replaces** the rejected daily-digest pattern. Reasons:
245
254
 
@@ -248,7 +257,7 @@ This **replaces** the rejected daily-digest pattern. Reasons:
248
257
  - The operator does not have to manage the agent's reporting calendar.
249
258
 
250
259
  The optional fallback — extending the existing morning routine to
251
- summarize yesterday's `agent_actions` into `agent/journal.md` — is
260
+ summarize yesterday's `agent_actions` into `journal/agent.md` — is
252
261
  deferred until the on-demand path proves insufficient.
253
262
 
254
263
  ## What Stayed Approve-Tier
@@ -262,21 +271,23 @@ Approve still gates:
262
271
 
263
272
  - `PATCH /api/integrations/:key` — mode / `delegatedBackend` /
264
273
  `deniedTools` changes.
265
- - `PUT /api/backends/main`, `DELETE /api/backends/:id`.
274
+ - `PUT /api/backends/main`, `POST /api/backends/:id/enable`,
275
+ `POST /api/backends/:id/disable`.
266
276
  - `PATCH /api/config` for fields that wipe protections.
267
277
  - `/api/system/*` — config reset, history purge, factory reset.
268
278
 
269
279
  ## Where You See It in the Dashboard
270
280
 
271
- - **Connections → \<integration\> → Tool Permissions** — the
281
+ - **Connections → \<integration\> → Tool Permissions**
282
+ (e.g. `/connections/mail`, `/connections/calendar`) — the
272
283
  `deniedTools` editor with the starter list pre-populated. Above the
273
- editor, the safety guidance prose explains each entry and which the
274
- team recommends keeping.
275
- - **Settings Cost Delegated proxy facet** — only cross-backend
276
- invocations show here; same-backend rolls up under the parent
277
- session.
278
- - **Activity / Audit** — every action with full attribution, queried
279
- the same way the agent queries `GET /api/agent/actions`.
284
+ editor, the safety guidance prose explains each entry and which ones
285
+ are recommended to keep.
286
+ - **Analytics** (`/analytics`) spend and the delegated-task facet;
287
+ only cross-backend invocations show here, while same-backend MCP
288
+ rolls up under the parent session.
289
+ - **Activity** (`/activity`) — every action with full attribution,
290
+ the same audit trail the agent reads via `GET /api/agent/actions`.
280
291
 
281
292
  ## Related
282
293
 
@@ -18,15 +18,17 @@ tags:
18
18
  - skills
19
19
  - safety
20
20
  - knowledge
21
+ - backends
21
22
  status: stable
22
23
  ask_examples:
23
24
  - What skills does the agent have?
24
25
  - How do I add a new skill?
25
26
  - Why does the agent refuse to run a tool?
26
27
  - How does skill self-optimization work?
28
+ - Where do skill overlays live?
27
29
  locale: en-US
28
30
  created: 2026-04-25
29
- updated: 2026-05-15
31
+ updated: 2026-06-07
30
32
  keywords:
31
33
  - SKILL.md
32
34
  - allowed-tools
@@ -45,6 +47,15 @@ ui_anchors:
45
47
  - /knowledge
46
48
  - /connections/mcp
47
49
  - /settings/self-learning
50
+ process_keys:
51
+ - dashboard.docs_qa
52
+ - routine.skill_curation
53
+ config_keys:
54
+ - allowedToolsOverride
55
+ - disallowedTools
56
+ api_endpoints:
57
+ - GET /api/skills
58
+ - GET /api/skills/manifest/:processKey
48
59
  ---
49
60
 
50
61
  # Skills
@@ -63,7 +74,7 @@ The agent runs against a real machine. Without scoped permissions, a
63
74
  "please summarize my mail" turn could in principle invoke `Bash(rm)`,
64
75
  post to your social accounts, or rewrite arbitrary files. Skills fix
65
76
  that by making the available toolset task-shaped: the morning routine
66
- loads the routines/observations/today/schedule skills; a docs question
77
+ loads the context/today/observations/schedule skills; a docs question
67
78
  loads only `docs-search`. Tools outside the allow-list aren't even
68
79
  visible to the model.
69
80
 
@@ -71,9 +82,11 @@ visible to the model.
71
82
 
72
83
  - **SKILL.md**: the Markdown file that defines a single skill. Lives
73
84
  under `agent-assets/skills/<slug>/SKILL.md` in the repo and is
74
- materialized into each session workdir as `.claude/skills/<slug>/SKILL.md`
75
- (Codex uses `.codex/skills/`, Gemini uses `.gemini/skills/`, OpenCode
76
- reuses `.claude/skills/` per V2 of docs/design/appendices/opencode-backend.md).
85
+ materialized into each session workdir under a per-backend namespace —
86
+ `.claude/skills/<slug>/` for Claude, `.codex/skills/` for Codex,
87
+ `.gemini/skills/` for Gemini, and `.opencode/skills/` for OpenCode.
88
+ The frontmatter (`name`, `description`, `allowed-tools`) is byte-identical
89
+ across all four; only the destination directory changes.
77
90
  - **`allowed-tools`**: a YAML list in the skill's frontmatter naming
78
91
  tools and patterns the session may use. Patterns like
79
92
  `Bash(curl http://localhost:8321/api/context/*)` are the daemon's
@@ -86,7 +99,7 @@ visible to the model.
86
99
 
87
100
  ## Concrete Examples
88
101
 
89
- - `today` — read and rewrite `today.md`.
102
+ - `today` — read and rewrite `state/today.md`.
90
103
  - `schedule` — produce per-date schedule files from the calendar.
91
104
  - `mail` — search and label messages via the daemon's mail proxy.
92
105
  - `docs-search` — read-only fetch over the docs corpus, used only by
@@ -97,26 +110,29 @@ visible to the model.
97
110
 
98
111
  Skills aren't frozen. A background process — **skill curation** —
99
112
  watches how your knowledge layout drifts (file moves, new
100
- sub-folders, schema tweaks in `user/`, `projects/`, etc.) and
101
- proposes JSON **overlays** that update specific sections of the
113
+ sub-folders, schema tweaks under `identity/`, `plans/projects/`, etc.)
114
+ and proposes JSON **overlays** that update specific sections of the
102
115
  relevant skill: knowledge layout, routing tables, frontmatter
103
116
  schema, search recipes, convention notes, cross-references.
104
117
 
105
- Overlays live at `<dataDir>/overlays/<skill>/<section-id>.json` and
106
- are merged in by the SkillsCompiler at session-init. The original
118
+ Overlays live at `<dataDir>/skill-curation-overlays/<slug>/<section_id>.json`
119
+ and are merged in by the SkillsCompiler at session-init. The original
107
120
  `SKILL.md` files in `agent-assets/skills/` are never rewritten;
108
- disabling the overlay (or deleting the JSON file) reverts to the
121
+ disabling self-learning (or deleting the JSON file) reverts to the
109
122
  seed payload immediately.
110
123
 
111
124
  The optimizer agent runs in an isolated workdir with a tightly
112
125
  scoped toolset (`Bash(curl http://localhost:8321/api/skill-curation/*)`,
113
- `Read`) and an auto-revert safety net if the next run sees more
114
- drift signals than the previous overlay generated, the section is
115
- reverted and frozen for two cycles.
116
-
117
- Curation cadence, manual-run trigger, and the per-skill exclusion
118
- list are surfaced at **Settings Self-learning**
119
- (`/settings/self-learning`).
126
+ `Read`) and an auto-revert safety net: each cadence cycle the daemon
127
+ re-checks recently-applied overlays, and any section that has
128
+ accumulated *more* drift signal weight after the overlay was applied
129
+ than before is rolled back automatically and frozen for two cycles to
130
+ stop thrashing. This is the only roll-back path — there is no
131
+ per-proposal approve/reject API, just the on/off toggle.
132
+
133
+ Skill curation is **off by default**. The master toggle, curation
134
+ cadence, manual-run trigger, and the per-skill exclusion list are all
135
+ surfaced at **Settings → Self-learning** (`/settings/self-learning`).
120
136
 
121
137
  ## Where You See It in the Dashboard
122
138
 
@@ -0,0 +1,196 @@
1
+ ---
2
+ schema_version: 1
3
+ slug: features/integrations/browser-history
4
+ title: Browser History
5
+ id: browser-history
6
+ aliases:
7
+ - browser history
8
+ - browsing history
9
+ - research clusters
10
+ - reload memory
11
+ - B-3
12
+ category: features
13
+ summary: |
14
+ Local-only poller that reads the browser's own SQLite databases
15
+ (Chrome / Chromium / Edge / Brave / Comet / Atlas), records visits as
16
+ observations, derives research clusters from sustained reading
17
+ patterns, and surfaces what you keep refreshing. Nothing leaves the
18
+ daemon.
19
+ section: integrations
20
+ tags:
21
+ - integrations
22
+ - observations
23
+ - browser-history
24
+ - polling
25
+ - autonomous
26
+ status: stable
27
+ ask_examples:
28
+ - How does Aitne use my browser history?
29
+ - What is a research cluster?
30
+ - What does `!checks` show?
31
+ - Does my browsing data go anywhere?
32
+ - How do I opt out of browser history?
33
+ locale: en-US
34
+ created: 2026-05-22
35
+ updated: 2026-06-07
36
+ keywords:
37
+ - browser history
38
+ - browser history poller
39
+ - research cluster
40
+ - reload signal
41
+ - "!checks"
42
+ - "!research"
43
+ - shopping comparison
44
+ - two-option offer
45
+ - local-only
46
+ related:
47
+ - features/messaging/bang-commands
48
+ - features/integrations/notion
49
+ - features/operations/managed-chromium
50
+ - features/routines/weekly-review
51
+ - features/routines/morning-routine
52
+ ui_anchors:
53
+ - /settings/integrations/browser-history
54
+ config_keys:
55
+ - browserHistoryConsentAccepted
56
+ - browserHistoryBrowserOverrides
57
+ - browserHistoryCategories
58
+ - browserHistoryRetentionDays
59
+ - browserHistorySearchQueryRetentionDays
60
+ - browserHistoryLifecycle
61
+ - browserHistoryResearchDomainAllowlist
62
+ - browserHistoryResearchDomainDenylist
63
+ process_keys:
64
+ - routine.research_cluster_update
65
+ - routine.research_offer_dm
66
+ - routine.research_dispatch
67
+ - routine.research_wiki_summary
68
+ api_endpoints:
69
+ - GET /api/browser-history/status
70
+ - GET /api/browser-history/research-clusters
71
+ - POST /api/browser-history/offers/:slug/accept
72
+ - POST /api/browser-history/offers/:slug/decline
73
+ - GET /api/browser-history/reloads/weekly
74
+ ---
75
+
76
+ # Browser History
77
+
78
+ Aitne can read the SQLite history databases that Chrome, Chromium,
79
+ Edge, Brave, Comet, and Atlas already maintain on disk, classify visits
80
+ into categories, and use the result to notice what you've been
81
+ researching, what you've been refreshing, and what comparison-shopping
82
+ windows you're in. Everything stays local — no URLs, titles, or
83
+ clicks leave the daemon.
84
+
85
+ ## What It Does
86
+
87
+ - **Reads visits** from the browser's own history DB on a 30-min
88
+ cadence (per browser, per profile) and inserts them into the
89
+ daemon's `browser_visits` table.
90
+ - **Counts reloads** per `<domain>/<first-path>` into
91
+ `browser_reload_signals`. Surfaced via [`!checks`](../messaging/bang-commands.md)
92
+ for the agent-day and via the weekly review's "this week you
93
+ checked" block.
94
+ - **Derives research clusters** when a topic crosses meaningful-visits
95
+ / foreground-time / distinct-domain thresholds. Clusters live in
96
+ `browser_research_clusters` with a slug, display name, journal at
97
+ `context/research/<slug>.md`, and a status (`active | dormant |
98
+ muted | concluded`).
99
+ - **Offers engagement DMs** via the Two-Option Offer pattern when a
100
+ cluster qualifies: pick "research dive" (parallel web research +
101
+ summary) or "wiki summary" (Obsidian / Notion / local context).
102
+ Accept paths run through `routine.research_dispatch` /
103
+ `routine.research_wiki_summary`; decline silences offers for 14
104
+ days; mute / unmute / rename / conclude via [`!research`](../messaging/bang-commands.md).
105
+ - **Detects shopping comparison windows** — 90-min sliding windows
106
+ containing ≥3 distinct ASINs surface as comparison sessions the
107
+ agent can summarise.
108
+ - **Powers the pre-morning digest** — yesterday's reading and reload
109
+ patterns feed the morning routine's pre-pass digest.
110
+
111
+ ## Privacy and Consent
112
+
113
+ - **Default off.** The integration does not start until the operator
114
+ flips `browserHistoryConsentAccepted = true` on the
115
+ **Settings → Integrations → Browser History**
116
+ (`/settings/integrations/browser-history`) page. The integration only
117
+ supports `direct` (the daemon poller) or `disabled` — there is no
118
+ delegated or native mode.
119
+ - **Local-only.** No request leaves the daemon. The browser's
120
+ history file is opened read-only; the daemon never reaches into
121
+ cookies, login sessions, or profile dirs other than the history DB.
122
+ - **Per-browser opt-in.** `browserHistoryBrowserOverrides` lets you
123
+ enable / disable each detected browser independently and override
124
+ the DB path for atypical installs.
125
+ - **Per-category gate.** `browserHistoryCategories` controls which
126
+ visit categories (research / shopping / news / dev / entertainment / …) get
127
+ ingested. Categories you exclude are dropped at ingest time, not
128
+ filtered later.
129
+ - **Retention.** `browserHistoryRetentionDays` (visits) and
130
+ `browserHistorySearchQueryRetentionDays` (search queries) cap the
131
+ on-disk window; older rows are deleted on the next ingest tick.
132
+ - **Domain controls.** `browserHistoryResearchDomainAllowlist` /
133
+ `…Denylist` filter which domains can qualify a research cluster.
134
+
135
+ ## How Clusters Qualify
136
+
137
+ A research cluster qualifies when the combination of meaningful visits,
138
+ foreground time, and distinct domains crosses the thresholds in
139
+ `DEFAULT_OFFER_THRESHOLDS` (tunable via `browserHistoryLifecycle`).
140
+ On each tick the poller evaluates the offer triggers per active cluster
141
+ (`evaluateOfferTriggers`); once the **per-cluster offer rate-limit gate**
142
+ (`gateOfferRateLimit`) approves — this is the 14-day, per-slug offer
143
+ backoff, not the daemon-wide session gate that Phase 9 removed — a
144
+ Two-Option Offer DM is composed by the `routine.research_offer_dm`
145
+ process key.
146
+
147
+ Accepting either path clears every pending-offer row for that slug, so a
148
+ later tick cannot re-offer the same cluster.
149
+
150
+ ## Owner Controls
151
+
152
+ | Surface | What it does |
153
+ |---|---|
154
+ | `!checks` | Today's top reload patterns (pure DB read, safe while paused). |
155
+ | `!research` | List active + dormant clusters. |
156
+ | `!research <slug>` | Show one cluster's detail. |
157
+ | `!research accept <slug>` | Enqueue `routine.research_dispatch`. |
158
+ | `!research wiki <slug>` | Enqueue `routine.research_wiki_summary`. |
159
+ | `!research decline <slug>` | Silence offers for 14 days. |
160
+ | `!research mute <slug>` / `unmute` | Toggle offers off (until unmute) / restore. |
161
+ | `!research rename <slug> <new name>` | Change display name. |
162
+ | `!research conclude <slug>` | Mark concluded; preserve the journal. |
163
+ | Natural-language reply to an offer DM | The `browser-history-respond` skill bridges into the same `/api/browser-history/offers/<slug>/{accept,decline}` call. |
164
+
165
+ ## When It Runs
166
+
167
+ | Signal | Cadence | Source |
168
+ |---|---|---|
169
+ | Visit ingest | Every 30 min per browser profile | `BrowserHistoryPoller` |
170
+ | Cluster engagement evaluation | Same tick as visit ingest | `pipeline/offer-triggers.ts` |
171
+ | Shopping-comparison window scan | Same tick, 7-day lookback | `SHOPPING_COMPARISON_WINDOW_MS` constants |
172
+ | Nightly journal append | Agent-day boundary | `routine.research_cluster_update` (lite tier, one row per active cluster per day) |
173
+ | Weekly reload-memory block | Friday weekly review | `routine.weekly_review` reads `/api/browser-history/reloads/weekly` |
174
+ | Pre-morning digest | Morning routine pre-pass | Yesterday's reading + reloads feed the digest block |
175
+
176
+ ## When Something Goes Wrong
177
+
178
+ - **The settings page shows no browsers.** Open
179
+ `/settings/integrations/browser-history` and run `aitne doctor` — the
180
+ platform detector might be failing to resolve the user's profile dir.
181
+ The daemon log line will name the candidate paths it tried.
182
+ - **A cluster keeps re-offering.** Check the `lastResearchOfferAt` /
183
+ `lastWikiOfferAt` columns; the rate-limit gate uses those for the
184
+ 14-day backoff. `!research decline <slug>` stamps both fields.
185
+ - **`!checks` is empty.** That's the common case for a quiet day —
186
+ the reload signals are gated to the agent-day, not UTC.
187
+
188
+ ## Related
189
+
190
+ - [Managed Chromium](../operations/managed-chromium.md) — separate
191
+ experimental flow for *driving* a Chromium profile (B-4), not
192
+ reading browser history.
193
+ - [Weekly Review](../routines/weekly-review.md)
194
+ - [Morning Routine](../routines/morning-routine.md)
195
+ - [Bang Commands](../messaging/bang-commands.md)
196
+ - [Glossary: Research Cluster](../../glossary.md#research-cluster)