@aitne-sh/aitne 0.1.8 → 0.1.9

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 (276) hide show
  1. package/README.md +218 -161
  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 +50 -15
  21. package/agent-assets/docs/concepts/delegated-mode.md +52 -13
  22. package/agent-assets/docs/concepts/memory-model.md +72 -32
  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 +42 -34
  28. package/agent-assets/docs/concepts/skills.md +33 -17
  29. package/agent-assets/docs/features/integrations/browser-history.md +195 -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 +59 -16
  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 +42 -38
  37. package/agent-assets/docs/features/lifestyle/reading.md +50 -22
  38. package/agent-assets/docs/features/lifestyle/receipts.md +51 -21
  39. package/agent-assets/docs/features/lifestyle/travel-bookings.md +76 -14
  40. package/agent-assets/docs/features/memory-files/agent-journal.md +111 -50
  41. package/agent-assets/docs/features/memory-files/projects.md +71 -17
  42. package/agent-assets/docs/features/memory-files/roadmap.md +50 -10
  43. package/agent-assets/docs/features/memory-files/schedule.md +113 -70
  44. package/agent-assets/docs/features/memory-files/today.md +46 -21
  45. package/agent-assets/docs/features/memory-files/user-profile.md +63 -33
  46. package/agent-assets/docs/features/messaging/bang-commands.md +113 -36
  47. package/agent-assets/docs/features/messaging/dashboard-chat.md +43 -21
  48. package/agent-assets/docs/features/messaging/discord.md +35 -4
  49. package/agent-assets/docs/features/messaging/overview.md +37 -19
  50. package/agent-assets/docs/features/messaging/pairing-and-magic-phrase.md +94 -27
  51. package/agent-assets/docs/features/messaging/slack.md +67 -14
  52. package/agent-assets/docs/features/messaging/telegram.md +18 -5
  53. package/agent-assets/docs/features/messaging/whatsapp.md +71 -17
  54. package/agent-assets/docs/features/operations/activity-and-conversations.md +44 -15
  55. package/agent-assets/docs/features/operations/approvals.md +48 -16
  56. package/agent-assets/docs/features/operations/backend-routing.md +68 -16
  57. package/agent-assets/docs/features/operations/cost-tracking.md +84 -17
  58. package/agent-assets/docs/features/operations/managed-chromium.md +221 -0
  59. package/agent-assets/docs/features/operations/notifications.md +52 -11
  60. package/agent-assets/docs/features/operations/quiet-hours.md +63 -40
  61. package/agent-assets/docs/features/operations/schedule-approaching.md +54 -24
  62. package/agent-assets/docs/features/routines/custom-routines.md +88 -20
  63. package/agent-assets/docs/features/routines/evening-review.md +74 -21
  64. package/agent-assets/docs/features/routines/hourly-check.md +149 -29
  65. package/agent-assets/docs/features/routines/morning-routine.md +53 -35
  66. package/agent-assets/docs/features/routines/weekly-review.md +40 -21
  67. package/agent-assets/docs/features/wiki/commands.md +26 -16
  68. package/agent-assets/docs/features/wiki/cost-and-approval.md +240 -0
  69. package/agent-assets/docs/features/wiki/dashboard.md +255 -0
  70. package/agent-assets/docs/features/wiki/overview.md +68 -10
  71. package/agent-assets/docs/features/wiki/search.md +248 -0
  72. package/agent-assets/docs/features/wiki/workspaces.md +254 -0
  73. package/agent-assets/docs/getting-started/01-what-is-this.md +34 -23
  74. package/agent-assets/docs/getting-started/02-first-steps.md +13 -8
  75. package/agent-assets/docs/getting-started/03-what-can-this-do.md +25 -14
  76. package/agent-assets/docs/getting-started/04-first-day.md +38 -20
  77. package/agent-assets/docs/glossary.md +235 -24
  78. package/agent-assets/docs/guides/add-a-custom-routine.md +63 -23
  79. package/agent-assets/docs/guides/backup-and-restore.md +80 -16
  80. package/agent-assets/docs/guides/budget-and-cost-for-wiki.md +56 -25
  81. package/agent-assets/docs/guides/build-your-wiki.md +22 -9
  82. package/agent-assets/docs/guides/change-which-model-handles-x.md +64 -10
  83. package/agent-assets/docs/guides/connect-a-new-mail-account.md +64 -15
  84. package/agent-assets/docs/guides/explore-with-trace-and-connect.md +28 -11
  85. package/agent-assets/docs/guides/import-knowledge-file.md +50 -40
  86. package/agent-assets/docs/guides/install-and-run.md +48 -19
  87. package/agent-assets/docs/guides/maintain-wiki-health.md +35 -10
  88. package/agent-assets/docs/guides/migrate-machines.md +74 -18
  89. package/agent-assets/docs/guides/multiple-wikis-for-multiple-domains.md +111 -60
  90. package/agent-assets/docs/guides/pause-the-agent.md +65 -24
  91. package/agent-assets/docs/guides/reinstall-cleanly.md +88 -18
  92. package/agent-assets/docs/guides/setup-wizard.md +113 -54
  93. package/agent-assets/docs/guides/switch-default-backend.md +62 -16
  94. package/agent-assets/docs/guides/use-an-existing-obsidian-vault.md +26 -10
  95. package/agent-assets/docs/reference/api.md +143 -32
  96. package/agent-assets/docs/reference/cli-commands.md +38 -17
  97. package/agent-assets/docs/reference/config.md +224 -49
  98. package/agent-assets/docs/reference/disallowed-tools.md +29 -10
  99. package/agent-assets/docs/reference/keyboard-shortcuts.md +34 -10
  100. package/agent-assets/docs/reference/knowledge-layout.md +620 -0
  101. package/agent-assets/docs/reference/process-keys.md +61 -5
  102. package/agent-assets/docs/reference/skills.md +38 -12
  103. package/agent-assets/docs/troubleshooting/auth-failed.md +48 -19
  104. package/agent-assets/docs/troubleshooting/dashboard-shows-degraded.md +90 -28
  105. package/agent-assets/docs/troubleshooting/fallback-keeps-firing.md +86 -22
  106. package/agent-assets/docs/troubleshooting/messaging-not-pairing.md +68 -24
  107. package/agent-assets/docs/troubleshooting/morning-routine-didnt-run.md +80 -20
  108. package/agent-assets/docs/troubleshooting/observation-not-detected.md +73 -21
  109. package/agent-assets/docs/troubleshooting/quota-exhausted.md +29 -5
  110. package/agent-assets/docs/troubleshooting/wiki-ingest-full-blocked.md +126 -54
  111. package/agent-assets/docs/troubleshooting/wiki-write-failed.md +29 -12
  112. package/agent-assets/optimizer-skills/drift-analysis/SKILL.md +1 -1
  113. package/agent-assets/optimizer-skills/knowledge-map/SKILL.md +1 -1
  114. package/agent-assets/optimizer-skills/skill-curation/SKILL.md +1 -1
  115. package/agent-assets/sandbox/linux/aitne-chromium.apparmor +91 -0
  116. package/agent-assets/sandbox/macos/aitne-chromium.sb +156 -0
  117. package/agent-assets/skills/agent-actions/SKILL.md +2 -2
  118. package/agent-assets/skills/agent-create/SKILL.md +149 -0
  119. package/agent-assets/skills/attach/SKILL.md +2 -2
  120. package/agent-assets/skills/browser-history/SKILL.md +198 -0
  121. package/agent-assets/skills/browser-history-respond/SKILL.md +106 -0
  122. package/agent-assets/skills/browser-task/SKILL.md +169 -0
  123. package/agent-assets/skills/context/SKILL.md +12 -12
  124. package/agent-assets/skills/context/curation.json +2 -2
  125. package/agent-assets/skills/context/references/api.md +43 -31
  126. package/agent-assets/skills/context/references/required-frontmatter.md +3 -3
  127. package/agent-assets/skills/context/references/snapshot-files.md +6 -6
  128. package/agent-assets/skills/context/seeds/file-responsibilities.seed.json +3 -3
  129. package/agent-assets/skills/docs-search/SKILL.md +4 -3
  130. package/agent-assets/skills/external-services/SKILL.delegated.claude.md +11 -21
  131. package/agent-assets/skills/external-services/SKILL.delegated.codex.md +11 -21
  132. package/agent-assets/skills/external-services/SKILL.delegated.gemini.md +11 -21
  133. package/agent-assets/skills/external-services/SKILL.md +3 -3
  134. package/agent-assets/skills/external-services/SKILL.native.claude.md +5 -5
  135. package/agent-assets/skills/external-services/SKILL.native.codex.md +7 -7
  136. package/agent-assets/skills/external-services/SKILL.native.gemini.md +4 -4
  137. package/agent-assets/skills/external-services/references/calendar-apple.md +2 -2
  138. package/agent-assets/skills/external-services/references/calendar-outlook.md +1 -1
  139. package/agent-assets/skills/external-services/references/obsidian.md +2 -2
  140. package/agent-assets/skills/gmail-lifestyle/SKILL.md +9 -82
  141. package/agent-assets/skills/mail/SKILL.delegated.claude.md +14 -5
  142. package/agent-assets/skills/mail/SKILL.delegated.codex.md +8 -4
  143. package/agent-assets/skills/mail/SKILL.delegated.gemini.md +8 -4
  144. package/agent-assets/skills/mail/references/api.md +4 -2
  145. package/agent-assets/skills/mail/references/providers.md +1 -1
  146. package/agent-assets/skills/managed-tasks/SKILL.md +9 -9
  147. package/agent-assets/skills/managed-tasks/references/errors.md +9 -6
  148. package/agent-assets/skills/managed-tasks/references/recurrence-rule.md +1 -1
  149. package/agent-assets/skills/management-policy/SKILL.md +32 -31
  150. package/agent-assets/skills/management-policy/curation.json +1 -1
  151. package/agent-assets/skills/management-policy/references/policy-workflow.md +9 -9
  152. package/agent-assets/skills/management-policy/seeds/policy-file-shape.seed.json +1 -1
  153. package/agent-assets/skills/notify/SKILL.md +4 -4
  154. package/agent-assets/skills/notify/references/priority.md +9 -4
  155. package/agent-assets/skills/notion/SKILL.delegated.claude.md +1 -1
  156. package/agent-assets/skills/notion/SKILL.delegated.codex.md +1 -1
  157. package/agent-assets/skills/notion/SKILL.delegated.gemini.md +1 -1
  158. package/agent-assets/skills/notion/SKILL.native.claude.md +10 -6
  159. package/agent-assets/skills/notion/SKILL.native.codex.md +9 -4
  160. package/agent-assets/skills/notion/SKILL.native.gemini.md +9 -4
  161. package/agent-assets/skills/observations/SKILL.md +24 -8
  162. package/agent-assets/skills/project-doc/SKILL.md +1 -1
  163. package/agent-assets/skills/project-doc/curation.json +3 -3
  164. package/agent-assets/skills/project-doc/seeds/project-shape.seed.json +7 -4
  165. package/agent-assets/skills/project-doc/seeds/slug-grammar.seed.json +3 -3
  166. package/agent-assets/skills/reading/SKILL.md +10 -0
  167. package/agent-assets/skills/reading/references/reading-taste.md +2 -2
  168. package/agent-assets/skills/roadmap/SKILL.md +5 -5
  169. package/agent-assets/skills/roadmap/curation.json +1 -1
  170. package/agent-assets/skills/roadmap/references/api.md +7 -7
  171. package/agent-assets/skills/roadmap/references/cross-check.md +15 -8
  172. package/agent-assets/skills/roadmap/references/migration.md +4 -4
  173. package/agent-assets/skills/roadmap/seeds/entry-types.seed.json +1 -1
  174. package/agent-assets/skills/schedule/SKILL.md +42 -34
  175. package/agent-assets/skills/schedule/references/batch.md +2 -2
  176. package/agent-assets/skills/schedule/references/errors.md +7 -4
  177. package/agent-assets/skills/schedule/references/model-selection.md +3 -3
  178. package/agent-assets/skills/schedule/references/recurrence-rule.md +1 -1
  179. package/agent-assets/skills/scheduled-managed-task/SKILL.md +46 -36
  180. package/agent-assets/skills/today/SKILL.md +9 -9
  181. package/agent-assets/skills/today/curation.json +3 -3
  182. package/agent-assets/skills/today/references/agent-plan-lifecycle.md +6 -5
  183. package/agent-assets/skills/today/seeds/section-shape.seed.json +1 -1
  184. package/agent-assets/skills/user-interview/SKILL.md +12 -9
  185. package/agent-assets/skills/user-interview/references/op-briefing.md +2 -2
  186. package/agent-assets/skills/user-interview/references/sweep-and-fallback.md +8 -0
  187. package/agent-assets/skills/user-profile/SKILL.md +17 -17
  188. package/agent-assets/skills/user-profile/curation.json +2 -2
  189. package/agent-assets/skills/user-profile/references/character-preferences.md +2 -2
  190. package/agent-assets/skills/user-profile/seeds/routing-table.seed.json +8 -8
  191. package/agent-assets/skills/user-profile/seeds/topic-files.seed.json +6 -6
  192. package/agent-assets/skills/wiki/wiki-compile/SKILL.md +4 -4
  193. package/agent-assets/system-prompts/routine-fetch-window.md +22 -12
  194. package/agent-assets/task-flows/_partials/calendar-acquire.google_calendar.md +4 -2
  195. package/agent-assets/task-flows/_partials/calendar-acquire.outlook_calendar.md +4 -2
  196. package/agent-assets/task-flows/_partials/capture-user-info.md +2 -2
  197. package/agent-assets/task-flows/_partials/dm-intent.long-horizon.md +1 -1
  198. package/agent-assets/task-flows/_partials/dm-intent.project.md +9 -9
  199. package/agent-assets/task-flows/_partials/mail-acquire.outlook_mail.md +3 -2
  200. package/agent-assets/task-flows/_partials/notion-acquire.notion.md +10 -5
  201. package/agent-assets/task-flows/browser_task.md +84 -0
  202. package/agent-assets/task-flows/github.assigned.md +1 -1
  203. package/agent-assets/task-flows/github.pull_request.review_requested.md +2 -2
  204. package/agent-assets/task-flows/github.workflow_run.failed.md +2 -2
  205. package/agent-assets/task-flows/knowledge.import.md +14 -14
  206. package/agent-assets/task-flows/message.received.dm.md +9 -4
  207. package/agent-assets/task-flows/message.received.dm_first.md +3 -3
  208. package/agent-assets/task-flows/routine.custom.md +3 -3
  209. package/agent-assets/task-flows/routine.evening_review.md +8 -8
  210. package/agent-assets/task-flows/routine.fetch_window.md +2 -2
  211. package/agent-assets/task-flows/routine.hourly_check.md +16 -12
  212. package/agent-assets/task-flows/routine.monthly_review.md +21 -21
  213. package/agent-assets/task-flows/routine.morning_routine_journal.md +119 -97
  214. package/agent-assets/task-flows/routine.morning_routine_today.md +43 -43
  215. package/agent-assets/task-flows/routine.research_cluster_update.md +35 -0
  216. package/agent-assets/task-flows/routine.research_dispatch.md +38 -0
  217. package/agent-assets/task-flows/routine.research_offer_dm.md +125 -0
  218. package/agent-assets/task-flows/routine.research_wiki_summary.md +53 -0
  219. package/agent-assets/task-flows/routine.roadmap_refresh.md +10 -10
  220. package/agent-assets/task-flows/routine.today_refresh.md +4 -4
  221. package/agent-assets/task-flows/routine.user_profile_sweep.md +10 -10
  222. package/agent-assets/task-flows/routine.weekly_review.md +93 -24
  223. package/agent-assets/task-flows/schedule.approaching.md +0 -1
  224. package/agent-assets/task-flows/scheduled.dm.md +5 -5
  225. package/agent-assets/task-flows/scheduled.task.md +4 -4
  226. package/agent-assets/task-flows/setup.initial.md +21 -21
  227. package/agent-assets/task-flows/setup.update.md +2 -2
  228. package/agent-assets/templates/README.md +27 -20
  229. package/agent-assets/templates/_index.md +42 -26
  230. package/agent-assets/templates/_manifest.json +34 -99
  231. package/agent-assets/templates/{user → identity}/_index.md +1 -1
  232. package/agent-assets/templates/{user → identity}/profile.md +2 -2
  233. package/agent-assets/templates/{dossiers → knowledge/dossiers}/_index.md +1 -1
  234. package/agent-assets/templates/{projects → plans/projects}/_active.base +1 -1
  235. package/agent-assets/templates/policies/_index.md +21 -0
  236. package/agent-assets/templates/{rules → policies}/journal-export.md +1 -1
  237. package/agent-assets/templates/{rules → policies}/journal-format.md +5 -5
  238. package/agent-assets/templates/{rules/policies → policies/management-captures}/_index.md +2 -2
  239. package/agent-assets/templates/{rules → policies}/management.md +3 -3
  240. package/agent-assets/templates/{rules → policies}/mcp.md +1 -1
  241. package/agent-assets/templates/{rules → policies}/redaction.md +1 -1
  242. package/agent-assets/templates/{routines → policies/routines}/_index.md +1 -1
  243. package/agent-assets/templates/{routines → policies/routines}/evening.md +2 -2
  244. package/agent-assets/templates/{routines → policies/routines}/hourly.md +1 -1
  245. package/agent-assets/templates/{routines → policies/routines}/monthly.md +2 -2
  246. package/bin/aitne.mjs +13 -4
  247. package/package.json +5 -4
  248. package/scripts/commands/doctor.mjs +14 -8
  249. package/scripts/commands/run-now.mjs +6 -21
  250. package/scripts/lib/ports.d.mts +27 -0
  251. package/scripts/lib/ports.mjs +36 -0
  252. package/scripts/lib/read-api-token.mjs +176 -0
  253. package/scripts/start.mjs +2 -1
  254. package/agent-assets/docs/features/lifestyle/travel-time.md +0 -58
  255. package/agent-assets/skills/gmail-lifestyle/references/travel-time-api.md +0 -59
  256. package/agent-assets/skills/schedule/references/recurring.md +0 -185
  257. package/agent-assets/templates/context-index.md +0 -42
  258. package/agent-assets/templates/rules/_index.md +0 -19
  259. /package/agent-assets/templates/{user → identity}/expertise.md +0 -0
  260. /package/agent-assets/templates/{user → identity}/goals.md +0 -0
  261. /package/agent-assets/templates/{user → identity}/people.md +0 -0
  262. /package/agent-assets/templates/{user → identity}/personal.md +0 -0
  263. /package/agent-assets/templates/{user → identity}/work.md +0 -0
  264. /package/agent-assets/templates/{agent/journal.md → journal/agent.md} +0 -0
  265. /package/agent-assets/templates/{dossiers → knowledge/dossiers}/evening.md +0 -0
  266. /package/agent-assets/templates/{dossiers → knowledge/dossiers}/hourly.md +0 -0
  267. /package/agent-assets/templates/{dossiers → knowledge/dossiers}/monthly.md +0 -0
  268. /package/agent-assets/templates/{dossiers → knowledge/dossiers}/morning.md +0 -0
  269. /package/agent-assets/templates/{dossiers → knowledge/dossiers}/roadmap.md +0 -0
  270. /package/agent-assets/templates/{dossiers → knowledge/dossiers}/weekly.md +0 -0
  271. /package/agent-assets/templates/{projects → plans/projects}/_index.md +0 -0
  272. /package/agent-assets/templates/{roadmap.md → plans/roadmap.md} +0 -0
  273. /package/agent-assets/templates/{routines → policies/routines}/morning.md +0 -0
  274. /package/agent-assets/templates/{routines → policies/routines}/weekly.md +0 -0
  275. /package/agent-assets/templates/{agent → state}/profile-questions.md +0 -0
  276. /package/agent-assets/templates/{today.md → state/today.md} +0 -0
@@ -19,14 +19,17 @@ tags:
19
19
  - core
20
20
  - messaging
21
21
  - integrations
22
+ - pairing
23
+ - notifications
22
24
  status: stable
23
25
  ask_examples:
24
26
  - How do I pair my phone with the agent?
25
27
  - Which messaging apps does the agent support?
26
28
  - Why didn't I get a notification?
29
+ - Can I send the agent a voice note?
27
30
  locale: en-US
28
31
  created: 2026-04-25
29
- updated: 2026-05-04
32
+ updated: 2026-05-28
30
33
  keywords:
31
34
  - messaging
32
35
  - dm
@@ -52,38 +55,49 @@ ui_anchors:
52
55
  - /connections/messaging
53
56
  - /settings/connections
54
57
  - /settings/commands
58
+ - /settings/schedule
59
+ process_keys:
60
+ - message.dm
61
+ - message.mention
62
+ config_keys:
63
+ - primaryPlatform
64
+ - quietHoursStart
65
+ - quietHoursEnd
55
66
  ---
56
67
 
57
68
  # Messaging Overview
58
69
 
59
- ## In One Sentence
60
-
61
- Aitne treats DMs from a paired messaging app as its primary
62
- reactive surface you message it, it answers; it messages you when a
63
- notification fires.
70
+ Aitne treats DMs from a paired messaging app as its primary reactive
71
+ surface — you message it, it answers; it messages you when a
72
+ notification fires. Voice notes are transcribed locally with Whisper
73
+ so you can talk to the agent the same way you'd type.
64
74
 
65
75
  ## What It Does
66
76
 
67
77
  - **Reactive DMs**: the agent answers every direct message you send.
68
- - **@-mentions**: in Slack, @-mentioning the agent inside a shared
69
- channel routes to `message.mention` and is answered the same way
70
- as a DM. Telegram, Discord, and WhatsApp drop all non-DM traffic
71
- (no group support); multi-user DMs (Slack `mpim`) are also
72
- filtered out — Aitne is single-owner by design.
78
+ - **@-mentions (Slack only)**: @-mentioning the agent inside a shared
79
+ channel routes to the `message.mention` ProcessKey and is answered
80
+ the same way as a DM. Telegram, Discord, and WhatsApp drop all
81
+ non-DM traffic (no group support).
73
82
  - **Outbound notifications**: routines and observations fire alerts
74
83
  back through the same channel.
75
84
  - **Voice attachments**: when the platform attaches audio (Telegram
76
85
  voice notes, WhatsApp voice messages, etc.), the daemon transcribes
77
86
  it locally with Whisper before handing the turn to the agent.
78
87
  Transcription runs entirely on your machine — no audio is shipped
79
- to a cloud API. Configurable via the `PA_VOICE_TRANSCRIPTION_*`
80
- env vars (model, language, duration cap).
88
+ to a cloud API. Tune it with the `PA_VOICE_TRANSCRIPTION_*` env
89
+ vars: `ENABLED`, `MODEL`, `LANGUAGE`, `PRIMARY_LANGUAGE`, and
90
+ `MAX_DURATION_SEC`.
81
91
  - **Magic-phrase pairing**: the operator types a one-time phrase to
82
92
  bind their account to the agent (anti-impersonation).
83
93
 
84
- Aitne is **single-owner** by design. Any DM that does not
85
- match a paired owner channel is dropped (defense in depth — the
86
- adapter and the dispatcher both check).
94
+ ## Single-Owner by Design
95
+
96
+ Aitne serves exactly one owner. Any message that does not come from a
97
+ paired owner channel is dropped — group chats, multi-user Slack DMs
98
+ (`mpim`), and unrecognized senders never reach the agent. This is
99
+ defense in depth: both the messaging adapter and the dispatcher check
100
+ the owner channel independently.
87
101
 
88
102
  ## When It Runs / How It Is Triggered
89
103
 
@@ -108,14 +122,18 @@ adapter and the dispatcher both check).
108
122
  ## Configuration
109
123
 
110
124
  - Per-app: bot token / OAuth, owner channel, optional default channel.
111
- - Global: `primaryPlatform` (the fallback when multiple apps are paired).
125
+ - Global: `primaryPlatform` (default `slack`) the platform the agent
126
+ prefers for outbound notifications when more than one app is paired.
127
+ - Outbound rate limits and quiet hours live on `/settings/schedule`
128
+ (see [Quiet Hours](../operations/quiet-hours.md)).
112
129
 
113
130
  ## When Something Goes Wrong
114
131
 
115
132
  - An **un-paired DM**: the agent ignores it. Pair the app from
116
- `/connections/messaging` first.
133
+ `/connections/messaging` first (see
134
+ [Pairing & Magic Phrase](pairing-and-magic-phrase.md)).
117
135
  - A **notification you expected but did not get**: check quiet hours
118
- on `/settings/schedule`.
136
+ and rate limits on `/settings/schedule`.
119
137
 
120
138
  ## Related
121
139
 
@@ -7,63 +7,130 @@ aliases:
7
7
  - magic phrase
8
8
  - pairing
9
9
  - owner pairing
10
+ - pair my messaging account
10
11
  category: features
11
12
  summary: |
12
- Pair your messaging account to Aitne by typing a one-time
13
- "magic phrase" the dashboard generates. The phrase binds the channel
14
- to your owner identity so impersonation is impossible.
13
+ Pair a messaging account to Aitne so the daemon knows which DM channel
14
+ belongs to you, the owner. Slack and Discord use a one-time "magic
15
+ phrase" you DM from the app; Telegram uses a QR / deep-link token;
16
+ WhatsApp links the device by scanning a QR. All of them bind the channel
17
+ to your owner identity so nobody else can impersonate you.
15
18
  section: messaging
16
19
  tags:
17
20
  - core
18
21
  - messaging
19
22
  - pairing
20
23
  - safety
24
+ - setup
21
25
  status: stable
22
- ask_examples:
23
- - How do I pair my Telegram account?
24
- - What is the magic phrase?
25
- - Can someone else impersonate me?
26
26
  locale: en-US
27
27
  created: 2026-04-25
28
- updated: 2026-04-25
28
+ updated: 2026-05-28
29
29
  keywords:
30
30
  - pairing
31
31
  - magic phrase
32
- - owner
32
+ - owner channel
33
+ - QR pairing
34
+ - impersonation
35
+ ask_examples:
36
+ - How do I pair my Telegram account?
37
+ - What is the magic phrase?
38
+ - Can someone else impersonate me as the owner?
39
+ - Why didn't my pairing DM work?
40
+ ui_anchors:
41
+ - /connections/messaging
33
42
  related:
34
43
  - features/messaging/overview
44
+ - features/messaging/slack
45
+ - features/messaging/telegram
46
+ - features/messaging/discord
47
+ - features/messaging/whatsapp
48
+ - troubleshooting/messaging-not-pairing
35
49
  ---
36
50
 
37
51
  # Pairing and Magic Phrase
38
52
 
39
- ## In One Sentence
53
+ ## In one sentence
54
+
55
+ The dashboard hands you a one-time secret (a typed phrase, a QR code, or
56
+ a deep link, depending on the platform); you send or scan it from the
57
+ messaging app you want to pair; the daemon records that channel as your
58
+ owner channel.
59
+
60
+ ## Why pairing exists
61
+
62
+ The agent only talks to one person — you, the owner. Pairing is how the
63
+ daemon learns which DM channel is yours.
64
+
65
+ - **Impersonation protection.** A random bot or stranger can't open a DM
66
+ and claim the owner role without the secret. Only someone who can see
67
+ the dashboard can complete the pairing.
68
+ - **One identity, many channels.** Pair Slack, Telegram, Discord, and
69
+ WhatsApp separately; all of them map to the same owner identity. A DM
70
+ to any paired channel reaches the agent, and notifications can go out on
71
+ whichever channels you've configured.
72
+
73
+ ## How each platform pairs
74
+
75
+ Pairing starts the same way everywhere — open
76
+ **Connections → Messaging** (`/connections/messaging`), find the
77
+ platform's card, and click its pairing button. What you do next depends
78
+ on the platform.
79
+
80
+ | Platform | Mechanism | What you do |
81
+ |---|---|---|
82
+ | **Slack** | Magic phrase | Dashboard shows a 4-word phrase (e.g. `apple-banana-cherry-date`). DM that phrase to the bot, by itself. |
83
+ | **Discord** | Magic phrase | Same as Slack — DM the displayed phrase to the bot. |
84
+ | **Telegram** | QR / deep link | Dashboard shows a QR code that opens a `https://t.me/<bot>?start=<token>` link. Tap **START** in Telegram. |
85
+ | **WhatsApp** | Device QR | Dashboard shows a QR code; scan it from WhatsApp on your phone (Linked Devices). |
86
+
87
+ ### The magic phrase (Slack, Discord)
40
88
 
41
- The dashboard prints a one-time phrase; you DM that phrase to the
42
- agent from the messaging app you want to pair; the daemon records the
43
- channel as your owner channel.
89
+ The dashboard generates a short, memorable phrase of four lowercase words
90
+ joined by hyphens, drawn from a 64-word list (24 bits of entropy). You DM
91
+ that exact phrase to the bot. Matching is tolerant — it ignores case,
92
+ punctuation, and emoji — but the phrase must be **sent by itself**. If you
93
+ wrap it in a sentence ("my phrase is apple-banana-cherry-date"), the agent
94
+ will reply asking you to send the phrase on its own.
44
95
 
45
- ## What It Does
96
+ The phrase is single-use and expires after **5 minutes**. If it lapses,
97
+ regenerate a fresh one from the dashboard.
46
98
 
47
- - Prevents drive-by impersonation: a bot can't open a DM and pretend
48
- to be the operator without the phrase.
49
- - Multiple paired channels (e.g. Telegram + Slack) all map to the
50
- same owner identity.
99
+ ### Token pairing (Telegram, WhatsApp)
51
100
 
52
- ## When It Runs / How It Is Triggered
101
+ Telegram and WhatsApp don't use a typed phrase:
53
102
 
54
- The phrase is generated when the operator clicks "Pair" on
55
- `/connections/messaging`. The daemon listens for the phrase from any
56
- incoming DM until paired or the phrase expires.
103
+ - **Telegram** encodes a high-entropy, single-use token in a QR / deep
104
+ link. Tapping **START** sends `/start <token>` to the bot, which
105
+ promotes you to owner. The token is matched exactly and also expires
106
+ after 5 minutes.
107
+ - **WhatsApp** uses WhatsApp's own linked-device flow — you scan a QR from
108
+ your phone to attach the daemon as a device. Set the owner phone number
109
+ first, then click **Pair device** and scan.
57
110
 
58
- ## Where in the Dashboard
111
+ ## Where in the dashboard
59
112
 
60
- - **Connections → Messaging** is the pairing surface.
113
+ **Connections → Messaging** (`/connections/messaging`) is the single
114
+ pairing surface. Each platform has its own card with a step-by-step setup
115
+ (create the app / paste tokens / pair) and a live status indicator that
116
+ flips to "paired" once the channel is bound.
61
117
 
62
- ## When Something Goes Wrong
118
+ ## When something goes wrong
63
119
 
64
- - Phrase expired: regenerate it from the dashboard.
65
- - DM was sent in a group: pairing only works in direct messages.
120
+ - **Phrase or token expired.** The window is 5 minutes. Regenerate from the
121
+ dashboard and try again.
122
+ - **"Send the pairing phrase by itself" reply.** You wrapped the phrase in
123
+ other text. Send just the four words.
124
+ - **DM was sent in a group.** Pairing — and all agent messaging — only works
125
+ in direct messages. Group chats are out of scope by design.
126
+ - **Still not pairing?** See
127
+ [Messaging not pairing](../../troubleshooting/messaging-not-pairing.md).
66
128
 
67
129
  ## Related
68
130
 
69
131
  - [Messaging Overview](overview.md)
132
+ - [Slack setup](slack.md)
133
+ - [Telegram setup](telegram.md)
134
+ - [Discord setup](discord.md)
135
+ - [WhatsApp setup](whatsapp.md)
136
+ - [Messaging not pairing (troubleshooting)](../../troubleshooting/messaging-not-pairing.md)
@@ -10,54 +10,107 @@ aliases:
10
10
  - slack DM
11
11
  category: features
12
12
  summary: |
13
- Pair a Slack workspace by installing a bot user, pasting tokens
14
- into Aitne, and DMing the magic phrase.
13
+ Connect a Slack workspace by creating a bot app with Socket Mode,
14
+ pasting a bot token and an app-level token into Aitne, then DMing
15
+ the magic phrase to pair yourself as owner.
15
16
  section: messaging
16
17
  tags:
17
18
  - messaging
18
19
  - integrations
19
20
  - slack
21
+ - pairing
20
22
  status: stable
21
23
  ask_examples:
22
24
  - How do I pair Slack?
25
+ - Why does the agent need two Slack tokens?
23
26
  - Can the agent listen in shared channels?
24
27
  locale: en-US
25
28
  created: 2026-04-25
26
- updated: 2026-04-25
29
+ updated: 2026-05-28
27
30
  keywords:
28
31
  - slack
29
- - OAuth
32
+ - socket mode
30
33
  - bot token
34
+ - app token
35
+ - magic phrase
31
36
  - owner channel
32
37
  - messaging adapter
33
38
  related:
34
39
  - features/messaging/overview
35
40
  - features/messaging/pairing-and-magic-phrase
41
+ ui_anchors:
42
+ - /connections/messaging
43
+ config_keys:
44
+ - primaryPlatform
45
+ - slackOwnerUserId
36
46
  ---
37
47
 
38
48
  # Slack
39
49
 
40
50
  ## In One Sentence
41
51
 
42
- A Slack bot user becomes the agent's surface in your workspace; DMs
43
- to the bot are owner messages, mentions in channels are mention events.
52
+ A Slack bot user becomes the agent's surface in your workspace: DMs to
53
+ the bot are owner messages, and `@`-mentions of the bot in channels are
54
+ mention events — but only from the one paired owner.
44
55
 
45
56
  ## What It Does
46
57
 
47
- - Listens for DMs (owner reactive path).
48
- - Listens for `@personalagent` mentions in shared channels.
49
- - Sends notifications to the owner DM.
58
+ - Listens for **DMs** to the bot (owner reactive path).
59
+ - Listens for **`@`-mentions of the bot** in channels you've added it to.
60
+ - Sends notifications back to your owner DM.
50
61
 
51
- ## Where in the Dashboard
62
+ The adapter runs over Slack **Socket Mode** (a WebSocket), so Aitne does
63
+ not need a public inbound URL or webhook endpoint.
52
64
 
53
- - **Connections → Messaging → Slack** holds bot tokens, channel info,
54
- and the magic-phrase pairing flow.
65
+ ## Single-Owner Scope
66
+
67
+ Aitne is a single-owner agent by design. Only messages from the paired
68
+ owner are processed; everything else is dropped silently. Multi-person
69
+ DMs (`mpim`) are rejected outright, so a mention inside a group thread
70
+ never produces a reply visible to non-owners.
71
+
72
+ A channel mention only fires when the message text contains the bot's
73
+ actual user reference (e.g. `<@U0123ABCD>`, rendered as `@YourBotName`).
74
+ A plain text string like `@personalagent` is not a real Slack mention and
75
+ will not trigger anything.
76
+
77
+ ## Setup
78
+
79
+ Everything happens under **Connections → Messaging** in the dashboard
80
+ (the Slack card). There are three steps:
81
+
82
+ 1. **Create the Slack app.** Click *Open Slack app builder* — Aitne
83
+ pre-fills the manifest with the right scopes and Socket Mode enabled.
84
+ Create the app and install it to your workspace.
85
+ 2. **Paste two tokens.** Slack issues two tokens for a Socket Mode app:
86
+ - a **bot token** (`xoxb-...`) — the bot's identity and API access, and
87
+ - an **app-level token** (`xapp-...`) — authorizes the Socket Mode
88
+ WebSocket connection.
89
+
90
+ Paste both, then use *Test token* to confirm Aitne can reach the bot.
91
+ 3. **Pair with the magic phrase.** Click *Generate pairing phrase*, then
92
+ DM that exact phrase to the bot from your own Slack account. The first
93
+ account that sends the matching phrase becomes the owner. See
94
+ [Pairing and the Magic Phrase](pairing-and-magic-phrase.md) for how
95
+ the challenge works.
96
+
97
+ To route notifications to Slack by default, set Slack as your primary
98
+ platform (`primaryPlatform`). The owner's Slack user id is stored as
99
+ `slackOwnerUserId` once pairing succeeds.
55
100
 
56
101
  ## When Something Goes Wrong
57
102
 
58
- - Bot does not respond: check that the workspace bot has been added
59
- to the channel where the DM is happening.
103
+ - **Bot never responds to a DM.** Confirm both tokens are saved and *Test
104
+ token* succeeds. A failing app-level token (`xapp-`) means the Socket
105
+ Mode connection never opens, so no events arrive.
106
+ - **Mentions in a channel are ignored.** Make sure the bot has been added
107
+ to that channel, and that you're mentioning the bot itself (autocomplete
108
+ `@YourBotName`), not typing a plain word.
109
+ - **Pairing phrase isn't accepted.** Send the phrase by itself, with no
110
+ surrounding sentence — a wrapped phrase won't match. See the pairing
111
+ doc for the full rules.
60
112
 
61
113
  ## Related
62
114
 
63
115
  - [Messaging Overview](overview.md)
116
+ - [Pairing and the Magic Phrase](pairing-and-magic-phrase.md)
@@ -13,14 +13,18 @@ section: messaging
13
13
  tags:
14
14
  - messaging
15
15
  - integrations
16
- - core
16
+ - telegram
17
17
  status: stable
18
+ config_keys:
19
+ - telegramOwnerChatId
20
+ ui_anchors:
21
+ - /connections/messaging
18
22
  ask_examples:
19
23
  - How do I pair Telegram?
20
24
  - Where do I get a Telegram bot token?
21
25
  locale: en-US
22
26
  created: 2026-04-25
23
- updated: 2026-04-25
27
+ updated: 2026-05-28
24
28
  keywords:
25
29
  - telegram
26
30
  - telegram bot
@@ -41,12 +45,14 @@ token, type the magic phrase.
41
45
 
42
46
  ## What It Does
43
47
 
44
- - Acts as the agent's reactive surface for incoming DMs.
45
- - Receives outbound notifications.
48
+ - Acts as the agent's reactive surface for your incoming direct messages (owner DMs only — group chats are ignored).
49
+ - Delivers the agent's outbound notifications and replies back to the same Telegram chat.
46
50
 
47
51
  ## When It Runs / How It Is Triggered
48
52
 
49
- Continuously listening to Telegram's long-polling API once paired.
53
+ Before pairing, nothing listens. Once you paste the bot token and complete
54
+ magic-phrase pairing, Aitne long-polls Telegram's Bot API continuously for new
55
+ direct messages.
50
56
 
51
57
  ## Where in the Dashboard
52
58
 
@@ -63,7 +69,14 @@ Continuously listening to Telegram's long-polling API once paired.
63
69
 
64
70
  - Bot replied to in a group instead of a DM: group chats are filtered
65
71
  out by design; the agent only listens to direct messages.
72
+ - No reply at all after DMing the magic phrase: confirm the bot has a username
73
+ set via @BotFather (/setname) — the daemon refuses to build the pairing deep
74
+ link otherwise.
75
+ - Pairing never completes: re-check the token in Connections → Messaging →
76
+ Telegram, then DM the magic phrase from your own account. See
77
+ [Pairing & Magic Phrase](pairing-and-magic-phrase.md).
66
78
 
67
79
  ## Related
68
80
 
69
81
  - [Pairing & Magic Phrase](pairing-and-magic-phrase.md)
82
+ - [Messaging Overview](overview.md)
@@ -7,53 +7,107 @@ aliases:
7
7
  - whatsapp bot
8
8
  - whatsapp adapter
9
9
  - whatsapp pairing
10
+ - whatsapp linked device
10
11
  category: features
11
12
  summary: |
12
- Pair WhatsApp via the Cloud API or a bridge service. Once paired, DMs
13
- to the configured number are owner messages.
13
+ Link WhatsApp by scanning a QR code with your phone, the same way the
14
+ WhatsApp desktop app links. No Cloud API, business account, or webhook
15
+ is involved. Once linked, DMs to your own number are owner messages and
16
+ flow exactly like Telegram.
14
17
  section: messaging
15
18
  tags:
16
19
  - messaging
17
- - integrations
18
20
  - whatsapp
21
+ - integrations
22
+ - pairing
19
23
  status: stable
20
24
  ask_examples:
21
25
  - Can I use WhatsApp with Aitne?
22
- - How do I set up the WhatsApp Cloud API?
26
+ - How do I link WhatsApp by scanning a QR code?
27
+ - Why does WhatsApp say the device is unlinked?
23
28
  locale: en-US
24
29
  created: 2026-04-25
25
- updated: 2026-04-25
30
+ updated: 2026-05-28
26
31
  keywords:
27
32
  - whatsapp
28
- - twilio
29
- - bot token
30
- - owner channel
33
+ - qr code
34
+ - linked devices
35
+ - owner phone
36
+ - e.164
31
37
  - messaging adapter
38
+ - baileys
32
39
  related:
33
40
  - features/messaging/overview
41
+ - features/messaging/pairing-and-magic-phrase
42
+ config_keys:
43
+ - whatsappEnabled
44
+ - whatsappOwnerPhone
45
+ - whatsappAuthDir
46
+ ui_anchors:
47
+ - /connections/messaging
34
48
  ---
35
49
 
36
50
  # WhatsApp
37
51
 
38
52
  ## In One Sentence
39
53
 
40
- A WhatsApp Cloud API number can act as the agent's owner surface; DMs
41
- flow exactly like Telegram.
54
+ Link WhatsApp by scanning a QR code with your phone — the same flow as
55
+ WhatsApp's own desktop/web app — and DMs to your number become owner
56
+ messages that flow exactly like Telegram.
57
+
58
+ ## How It Works
59
+
60
+ Aitne connects to WhatsApp as a **linked device** (the multi-device feature
61
+ in the WhatsApp mobile app), not through the WhatsApp Cloud API or a paid
62
+ bridge such as Twilio. There is no business account, no bot token, and no
63
+ inbound webhook to expose:
64
+
65
+ - You scan a QR code once to link the daemon as a device on your account.
66
+ - Incoming WhatsApp messages arrive over the linked-device connection.
67
+ - The agent replies and sends notifications back through the same channel.
68
+ - It is **owner-only**: only DMs involving your one configured number are
69
+ accepted. Self-DMs you send from another linked device are also accepted,
70
+ so you can talk to the agent from your own number without a second account.
71
+ All other senders are dropped.
72
+
73
+ ## Setup
74
+
75
+ You configure WhatsApp from the dashboard — there is no `aitne` CLI command
76
+ for it.
42
77
 
43
- ## What It Does
78
+ 1. Go to **Connections → Messaging → WhatsApp**.
79
+ 2. Set the **Owner phone** in E.164 format (e.g. `+818012345678`). This is
80
+ required before you can enable WhatsApp.
81
+ 3. (Optional) Set the **Auth dir** — where the linked-device credentials are
82
+ stored. Defaults to `~/.personal-agent/whatsapp/auth`.
83
+ 4. Click **Enable WhatsApp**, then **Pair device**. A QR code appears.
84
+ 5. On your phone: open **WhatsApp → Settings → Linked Devices → Link a
85
+ device**, and scan the QR code.
44
86
 
45
- - Receives WhatsApp messages routed through the configured number.
46
- - Sends notifications back through the same channel.
87
+ Once the status shows connected, message your own number and the agent
88
+ responds.
47
89
 
48
- ## Where in the Dashboard
90
+ ### Configuration keys
49
91
 
50
- - **Connections Messaging → WhatsApp**.
92
+ | Key | Meaning |
93
+ |---|---|
94
+ | `whatsappEnabled` | Master on/off (default `false`). |
95
+ | `whatsappOwnerPhone` | Owner number in E.164 format. Validated; must start with `+` and 8–15 digits. |
96
+ | `whatsappAuthDir` | Directory holding linked-device credentials. |
51
97
 
52
98
  ## When Something Goes Wrong
53
99
 
54
- - WhatsApp's webhook timed out: check that the daemon is reachable
55
- from the WhatsApp side (the simplest way is a tunnel during dev).
100
+ - **QR code expired.** Each QR is short-lived and rotates. Click **Refresh
101
+ QR** in the dashboard to get a new one, then scan it.
102
+ - **WhatsApp says the device is unlinked**, or pairing keeps failing. Click
103
+ **Reset connection** in the dashboard. This wipes the cached pairing data
104
+ in the auth dir so you can scan a fresh QR from scratch.
105
+ - **Session logged out.** If WhatsApp logs the device out (account banned,
106
+ device conflict, or you unlinked it from the phone), the connection stops
107
+ retrying and surfaces an error. Use **Reset connection**, then **Pair
108
+ device** again.
56
109
 
57
110
  ## Related
58
111
 
59
112
  - [Messaging Overview](overview.md)
113
+ - [Pairing and the Magic Phrase](pairing-and-magic-phrase.md)
@@ -18,6 +18,7 @@ tags:
18
18
  - core
19
19
  - operations
20
20
  - audit
21
+ - dashboard
21
22
  status: stable
22
23
  ask_examples:
23
24
  - Where can I see what the agent did today?
@@ -25,7 +26,7 @@ ask_examples:
25
26
  - How do I find why a routine failed?
26
27
  locale: en-US
27
28
  created: 2026-04-25
28
- updated: 2026-04-25
29
+ updated: 2026-05-28
29
30
  keywords:
30
31
  - activity
31
32
  - conversations
@@ -36,6 +37,12 @@ related:
36
37
  - features/operations/notifications
37
38
  - features/operations/cost-tracking
38
39
  - features/operations/backend-routing
40
+ config_keys:
41
+ - executeTimeoutMinutes
42
+ process_keys:
43
+ - routine.morning_routine
44
+ api_endpoints:
45
+ - POST /api/system/purge-history
39
46
  ui_anchors:
40
47
  - /
41
48
  - /activity
@@ -62,15 +69,16 @@ Activity is the unified view of:
62
69
 
63
70
  Each row links to the underlying conversation when one exists.
64
71
 
65
- ## When It Runs / How It Is Triggered
72
+ ## How It Works
66
73
 
67
- There is no trigger — Activity is a read-only projection. It is
68
- written to as a side-effect of every other event in the system
69
- (`agent_actions` / `conversation_sessions` / `messages`).
74
+ Activity has no trigger of its own it is a read-only projection.
75
+ Every other event in the system writes to it as a side effect, landing
76
+ in three SQLite tables: `agent_actions` (what happened), and
77
+ `conversation_sessions` + `messages` (what was said).
70
78
 
71
- ## What It Outputs
79
+ ## What You See
72
80
 
73
- - A timeline filterable by event type, ProcessKey, backend, outcome.
81
+ - A timeline filterable by event type, ProcessKey, backend, and outcome.
74
82
  - Per-row cost, token counts, and turn count.
75
83
  - A direct link to the message transcript for any session.
76
84
 
@@ -81,21 +89,42 @@ written to as a side-effect of every other event in the system
81
89
  - **Conversations (`/conversations/<id>`)** opens a single session's
82
90
  message-by-message transcript.
83
91
 
92
+ To read the morning routine's full reply, open Activity, filter to the
93
+ `routine.morning_routine` row, and click through to its conversation —
94
+ the transcript holds the agent's complete output, not just the summary
95
+ that reached your DM.
96
+
84
97
  ## Configuration
85
98
 
86
99
  There is nothing to configure on the Activity view itself; what shows
87
100
  up is a function of which routines are enabled and which integrations
88
- are connected. Retention is unlimited locally — the SQLite database
89
- keeps everything until you `aitne stop && rm ~/.personal-agent/data/personal_agent.db*` (the `*` also clears the `-shm`/`-wal` companions).
101
+ are connected.
102
+
103
+ Retention is unlimited locally — the SQLite database keeps every row
104
+ forever. To prune history without losing your configuration, use
105
+ `POST /api/system/purge-history` (it clears `agent_actions`,
106
+ `conversation_sessions`, and `messages` but leaves settings and the
107
+ context vault intact). To wipe everything, `aitne uninstall --wipe-data`
108
+ removes the whole `~/.personal-agent` data directory after a `WIPE`
109
+ confirmation.
90
110
 
91
111
  ## When Something Goes Wrong
92
112
 
93
- - A row showing **"timed out"** points at a backend or SDK hang.
94
- `executeTimeoutMinutes` (`/settings/models`) is the wall-clock cap.
95
- - A row showing **"fallback"** means main backend failed; check the
96
- detail for the `BackendQuotaError` / `BackendDecisiveFailure`.
97
- - A row showing **"blocked_absolute"** means the absolute-block layer
98
- refused a tool call. The detail names which tool and why.
113
+ To find why a routine failed, open Activity, filter the outcome to
114
+ **failed**, and open the offending row. Its outcome label tells you the
115
+ failure class; the linked conversation shows the exact error and the
116
+ turn it happened on.
117
+
118
+ Common outcome labels:
119
+
120
+ - **"timed out"** — a backend or SDK hang. `executeTimeoutMinutes`
121
+ (`/settings/models`) is the wall-clock cap.
122
+ - **"fallback"** — the main backend failed and routing moved to the
123
+ fallback; the detail carries the `BackendQuotaError` or
124
+ `BackendDecisiveFailure` that triggered it.
125
+ - **"blocked_absolute"** — the absolute-block layer refused a tool call.
126
+ The detail names which tool and why (logged as
127
+ `agent_actions.action_type='blocked_absolute'`).
99
128
 
100
129
  ## Related
101
130