@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
@@ -41,24 +41,47 @@ keywords:
41
41
  - delegated_task
42
42
  - gmail_classify
43
43
  created: 2026-04-25
44
- updated: 2026-05-15
44
+ updated: 2026-05-28
45
+ config_keys:
46
+ - monthlyReviewEnabled
47
+ - delegatedTaskHeavyEnabled
48
+ - hourlyCheckIntervalMinutes
49
+ - dayBoundaryHour
50
+ api_endpoints:
51
+ - POST /api/browser-task
52
+ ui_anchors:
53
+ - /settings/models
45
54
  related:
46
55
  - concepts/process-keys
47
56
  - concepts/backends-and-tiers
48
57
  - features/operations/backend-routing
58
+ - features/integrations/browser-history
59
+ - features/operations/managed-chromium
49
60
  ---
50
61
 
51
62
  # ProcessKeys
52
63
 
64
+ A **ProcessKey** identifies the kind of work being dispatched (an owner DM,
65
+ the morning routine, an hourly check, …). The dispatcher passes a ProcessKey
66
+ to the `BackendRouter`, which resolves it to a `{ main, fallback }` backend
67
+ plus an execution tier — the dispatcher never picks a model directly.
68
+
69
+ The **default tier** column maps to a model size, not a specific id:
70
+
71
+ - `lite` → Haiku-class (cheap, fast, narrow)
72
+ - `medium` → Sonnet-class (the default for most owner-facing and routine work)
73
+ - `high` → Opus-class (opt-in only; see [Tier Locks](#tier-locks) and
74
+ [Delegated Task Hard Caps](#delegated-task-hard-caps))
75
+
53
76
  | ProcessKey | Trigger | Default tier | Configurable |
54
77
  |---|---|---|---|
55
78
  | `routine.morning_routine` | Daily at `dayBoundaryHour` (default 04:00). Parent envelope; LLM dispatch flows through the two stage keys below. | medium | yes |
56
- | `routine.morning_routine_today` | Stage A of the morning-routine pipeline — today.md synthesis, schedule fan-out, profile-question pick, user-editable checks. Stage A also populates roadmap.md from a daemon-prepared `<roadmap_skeleton>` block on the first-run branch (Phase 7 retired the heavy-tier `routine.morning_routine_initial`). | medium | yes |
57
- | `routine.morning_routine_journal` | Stage B of the morning-routine pipeline — authors `daily/<yesterday>.md` from the daemon-prepared journal skeleton. | lite | yes |
58
- | `routine.today_refresh` | Every 4h inside the active window — drift-refresh of `today.md` | medium | yes |
79
+ | `routine.morning_routine_today` | Stage A of the morning-routine pipeline — `state/today.md` synthesis, schedule fan-out, profile-question pick, user-editable checks. Stage A also populates `plans/roadmap.md` from a daemon-prepared `<roadmap_skeleton>` block on the first-run branch (Phase 7 retired the heavy-tier `routine.morning_routine_initial`). | medium | yes |
80
+ | `routine.morning_routine_journal` | Stage B of the morning-routine pipeline — authors `journal/daily/<yesterday>.md` from the daemon-prepared journal skeleton. | lite | yes |
81
+ | `routine.today_refresh` | Calendar-drift-triggered (calendar change touching today's items; 5-min dedup, fires ~30s later) — drift-refresh of `state/today.md` | medium | yes |
59
82
  | `routine.evening_review` | Daily at 18:00 local (fixed) | medium | yes |
60
83
  | `routine.weekly_review` | Friday 18:00 local (fixed) | medium | yes |
61
- | `routine.monthly_review` | Monthly cadence (gated OFF by default — kill switch `monthlyReviewEnabled` in runtime settings) | medium | no |
84
+ | `routine.monthly_review` | Monthly cadence (gated OFF by default — kill switch `monthlyReviewEnabled` in runtime settings). The routine itself is off by default, but its backend/tier binding is still configurable. | medium | yes |
62
85
  | `routine.hourly_check` | Every `hourlyCheckIntervalMinutes` (default 60) inside the active window | medium | yes |
63
86
  | `routine.hourly_check.triage` | Stage 2 triage gate of every hourly check | lite | yes |
64
87
  | `routine.fetch_window` | Pre-pass fetcher spawned before each main routine | lite | yes |
@@ -99,6 +122,11 @@ related:
99
122
  | `wiki.lint` | Health pass over the wiki — writes `90_meta/health/<date>.md` | medium | yes |
100
123
  | `wiki.trace` | Chronological evolution of an idea across raw / wiki / outputs | medium | yes |
101
124
  | `wiki.connect` | Bridges two domains — writes `30_outputs/<date>-connect-<slug>.md` | medium | yes |
125
+ | `routine.research_cluster_update` | Nightly per-cluster journal append (one row per cluster per day with new activity) | lite | yes |
126
+ | `routine.research_offer_dm` | Two-Option Offer DM composition when a research cluster qualifies | lite | yes |
127
+ | `routine.research_dispatch` | Accept path for the "research dive" option — WebSearch + WebFetch parallel research. Claude-only per §10.3 backend safety floor. | medium | yes |
128
+ | `routine.research_wiki_summary` | Accept path for the "wiki summary" option — writes a wiki note into Obsidian inbox / Notion / local context per integration availability | medium | yes |
129
+ | `browser_task` | Open-ended browser sub-agent (BROWSER_TASK_REDESIGN_PLAN.md §6.1). Claude-only backend floor; dispatched from `POST /api/browser-task` (DM, dashboard, or scheduler). | medium | yes |
102
130
 
103
131
  "Configurable" = the operator can override the backend / tier on
104
132
  `/settings/models` (i.e. the key appears in `CONFIGURABLE_PROCESS_KEYS`).
@@ -107,3 +135,31 @@ global default.
107
135
 
108
136
  This list mirrors `packages/shared/src/process-key.ts`. The codebase
109
137
  is the source of truth.
138
+
139
+ ## Reactive vs Autonomous
140
+
141
+ The set `REACTIVE_PROCESS_KEYS` (owner currently in the loop) is:
142
+ `message.dm`, `message.mention`, `dashboard.chat`, `dashboard.docs_qa`,
143
+ `setup`, `knowledge.import`. Every other key is autonomous and runs
144
+ under the tighter Approve-tier MCP tool-stripping that B-003 Phase 3
145
+ established.
146
+
147
+ ## Tier Locks
148
+
149
+ `TIER_LOCKED_PROCESS_KEYS` supersedes operator pins. Current entry:
150
+
151
+ - `dashboard.docs_qa` → `medium` (DOCS_QA_DESIGN.md §10.1).
152
+
153
+ ## Delegated Task Hard Caps
154
+
155
+ The `delegated_task` / `delegated_task_heavy` request shape is bounded
156
+ by `DELEGATED_TASK_HARD_CAPS` (server-enforced, not user-tunable):
157
+
158
+ - `maxToolCalls` ≤ 15
159
+ - `maxBudgetUsd` ≤ 0.50
160
+ - `maxTimeoutMs` ≤ 300 000
161
+ - `maxSchemaBytes` ≤ 4096
162
+
163
+ `config.ts` holds the *defaults* (`delegatedTaskDefaultMaxToolCalls`,
164
+ …); the caps above bound a prompt-injected caller regardless of the
165
+ per-request fields.
@@ -34,17 +34,40 @@ keywords:
34
34
  - wiki skill
35
35
  - notify skill
36
36
  created: 2026-04-25
37
- updated: 2026-05-15
37
+ updated: 2026-05-28
38
+ ui_anchors:
39
+ - /knowledge?tab=skills
40
+ process_keys:
41
+ - dashboard.docs_qa
42
+ api_endpoints:
43
+ - /api/skills
44
+ - /api/skills/manifest/:processKey
45
+ - /api/browser-task
46
+ - /api/browser-history/offers/:slug/accept
47
+ context_files:
48
+ - state/today.md
49
+ - plans/roadmap.md
50
+ - state/profile-questions.md
38
51
  related:
39
52
  - concepts/skills
53
+ - features/integrations/browser-history
54
+ - features/operations/managed-chromium
40
55
  ---
41
56
 
42
57
  # Built-in Skills
43
58
 
59
+ Aitne ships a fixed set of built-in skills the agent loads per session. Most
60
+ are always available; a few are **conditional** — loaded only when a gating
61
+ flag is set (`gmail-lifestyle`, `managed-tasks`) or only for a specific event
62
+ type (`browser-task`, on owner DMs). The table below is the canonical roster.
63
+
44
64
  | Slug | Purpose |
45
65
  |---|---|
46
66
  | `agent-actions` | Read the agent action log (`agent_actions` table) for retrospective audits. |
47
67
  | `attach` | Attach a generated or downloaded file to the agent's reply when the user expects a file artifact. |
68
+ | `browser-history` | Read normalised browser activity through `/api/browser-history/*`. Used by research-cluster journal updates, accept-path dispatches, owner pulls of shopping / reload traces, and the morning research summary. Never reads browser SQLite or profile dirs directly. |
69
+ | `browser-history-respond` | Bridge the owner's natural-language reply to a research-offer DM ("dig deeper" / "summarise") into a structured `/api/browser-history/offers/<slug>/{accept,decline}` call. |
70
+ | `browser-task` | Drive managed Chromium for open-ended browser tasks the user describes in DM. POSTs to `/api/browser-task` with a natural-language description; relays sub-agent clarifications back through DM. Loaded only on `message.received.dm`. |
48
71
  | `context` | Read / write context Markdown — projects, weekly summaries, agent journal, generic context files. |
49
72
  | `docs-search` | Read-only search and fetch over the operator-facing docs corpus. Used for `dashboard.docs_qa`. |
50
73
  | `external-services` | Call Google Calendar, the user's Obsidian vault, GitHub, or the agent Skills-management routes through the daemon proxy. |
@@ -55,23 +78,26 @@ related:
55
78
  | `notify` | Send a notification through the paired messaging app and decide whether notifying is warranted. |
56
79
  | `notion` | Read, query, search, create, update, and archive Notion pages and databases. |
57
80
  | `observations` | Drain the pending-observations queue and inspect raw external-source change records. |
58
- | `project-doc` | Read / write per-project markdown files under `projects/<slug>.md`. |
81
+ | `project-doc` | Read / write Git-backed and manual project context docs. Git-managed repos write to `knowledge/repos/<slug>/overview.md` plus per-day `journal/repos/<slug>/<date>.md`; manual non-git project pages live at `plans/projects/<slug>.md`. |
59
82
  | `reading` | Query reading history and highlights; owns the reading-taste profile via the `books` and `reading_highlights` tables. |
60
- | `roadmap` | Read / write `roadmap.md` (cross-request write lock). |
83
+ | `roadmap` | Read / write `plans/roadmap.md` (cross-request write lock). |
61
84
  | `schedule` | Schedule future agent wake-ups and DMs via the daemon (writes `agent_schedule` and `recurring_schedules` rows). |
62
85
  | `scheduled-managed-task` | Surface and act on Managed Tasks that are due now. |
63
- | `today` | Read or write `today.md` — morning routines, hourly checks, DMs that need a today snapshot. |
64
- | `user-interview` | Manage the profile-interview queue at `agent/profile-questions.md`; ask one question at a time. |
65
- | `user-profile` | Record user facts — identity, people, work, expertise, habits, goals — into the `user/*` slices. |
86
+ | `today` | Read or write `state/today.md` — morning routines, hourly checks, DMs that need a today snapshot. |
87
+ | `user-interview` | Manage the profile-interview queue at `state/profile-questions.md`; ask one question at a time. |
88
+ | `user-profile` | Record user facts — identity, people, work, expertise, habits, goals — into the `identity/*` slices (`profile.md`, `people.md`, `work.md`, …). |
66
89
  | `wiki` | Build and maintain the personal wiki workspace — `!ingest` / `!compile` / `!ask` / `!lint` / `!trace` / `!connect`. |
67
90
 
91
+ ## How skills are sourced
92
+
68
93
  The source of truth is each skill's `SKILL.md` under
69
94
  `agent-assets/skills/<slug>/`. The `description` field in that file's
70
95
  frontmatter is what the dispatcher uses for runtime skill selection.
71
96
 
72
- A subset of these skills' sections (knowledge layout, routing
73
- tables, search recipes, etc.) is also refined at runtime through
74
- JSON **overlays** maintained by the skill-curation loop. The seed
75
- files in `agent-assets/skills/` are never rewritten overlays are
76
- applied at session-init by the SkillsCompiler and live under
77
- `<dataDir>/overlays/<skill>/<section-id>.json`.
97
+ ## Runtime overlays
98
+
99
+ A subset of these skills' sections (knowledge layout, routing tables, search
100
+ recipes, etc.) is refined at runtime through JSON **overlays** maintained by
101
+ the skill-curation loop. The seed files in `agent-assets/skills/` are never
102
+ rewritten — overlays are applied at session-init by the `SkillsCompiler` and
103
+ live under `<dataDir>/overlays/<skill>/<section-id>.json`.
@@ -10,27 +10,41 @@ category: troubleshooting
10
10
  summary: |
11
11
  A backend's auth-health card flipped amber or red. Re-authenticate
12
12
  via the backend's CLI or paste a fresh API key.
13
- section: auth-failed
13
+ section: troubleshooting
14
14
  tags:
15
15
  - troubleshooting
16
16
  - safety
17
17
  - backends
18
+ - health
18
19
  status: stable
19
20
  ask_examples:
20
21
  - Why is the auth-health card amber?
21
22
  - How do I re-login to Claude?
23
+ - The auth-health pill went red, what now?
22
24
  locale: en-US
23
25
  created: 2026-04-25
24
- updated: 2026-05-04
26
+ updated: 2026-05-28
25
27
  keywords:
26
28
  - auth failed
27
29
  - auth error
28
30
  - subscription warning
29
31
  - API key invalid
32
+ - BackendDecisiveFailure
33
+ - re-authenticate
30
34
  related:
31
35
  - concepts/auth-health
32
36
  - concepts/costs-and-quotas
33
37
  - features/operations/backend-routing
38
+ ui_anchors:
39
+ - /settings/models
40
+ - /connections
41
+ config_keys:
42
+ - authPreflightFreshnessMs
43
+ - authProbeDisabled
44
+ api_endpoints:
45
+ - POST /api/backends/:backendId/check-auth
46
+ - POST /api/backends/:backendId/recovery/start
47
+ - POST /api/backends/:backendId/recovery/code
34
48
  ---
35
49
 
36
50
  # Auth Failed
@@ -49,32 +63,47 @@ related:
49
63
  `claude`, `codex login`, `gemini auth` — and that session timed
50
64
  out). The recommended fix is to register an API key.
51
65
  3. **Account-level scope change** at the provider (key disabled,
52
- project deleted, billing suspended). For cloud providers
53
- (Bedrock / Vertex / Foundry / Azure OpenAI / Gemini-Vertex),
66
+ project deleted, billing suspended). For cloud-provider auth
67
+ (Bedrock / Vertex / Foundry for Claude, Vertex AI for Gemini),
54
68
  IAM-role / service-account changes show up the same way.
55
69
 
56
70
  ## Diagnostic Steps
57
71
 
58
72
  1. Click the pill to see the recovery hint.
59
- 2. Check `/settings/models` the backend card shows whether it is
73
+ 2. Open `/settings/models`. The backend card shows whether it is
60
74
  running on a registered API key (the supported path) or on the
61
- subscription fallback. The `SubscriptionAuthWarning` banner
62
- appears whenever any backend is on the fallback.
63
- 3. If on the API key, paste a fresh key on `/settings/models` — the
64
- daemon mirrors it into `process.env` and re-probes immediately.
65
- 4. If on the subscription fallback, the recommended fix is to
66
- register an API key on `/settings/models` (or one of the cloud-
67
- provider options exposed on the same picker — Bedrock / Vertex /
68
- Foundry / Azure OpenAI / Gemini-Vertex).
69
- If you cannot or do not want to, run the corresponding CLI login
70
- (`claude`, `codex login`, `gemini auth`) and the daemon picks up
71
- the new credentials on the next probe. Note that this fallback
72
- is not provider-supported for automated agent use — see
73
- [Costs and Quotas](../concepts/costs-and-quotas.md).
75
+ subscription fallback. The **API-key panel always carries the
76
+ subscription-auth warning** registering a paid key is the
77
+ recommended path because several providers (Anthropic in
78
+ particular) do not support running automated agents on a
79
+ subscription plan.
80
+
81
+ ## Fixing It
82
+
83
+ **If the backend is on a registered API key:** paste a fresh key on
84
+ `/settings/models`. The daemon mirrors it into `process.env` and
85
+ re-probes immediately no restart needed.
86
+
87
+ **If the backend is on the subscription fallback:** the recommended
88
+ fix is to register an API key on `/settings/models`. The same picker
89
+ also exposes cloud-provider auth — Bedrock / Vertex / Foundry for
90
+ Claude, Vertex AI for Gemini. (Codex Azure OpenAI is not offered here;
91
+ it needs a `~/.codex/config.toml` the env-mirroring path cannot write,
92
+ so Codex stays direct-key only.)
93
+
94
+ If you cannot or do not want to register a key, re-run the
95
+ corresponding CLI login (`claude`, `codex login`, `gemini auth`) and
96
+ the daemon picks up the new credentials on the next probe. Some
97
+ backends also expose an in-dashboard device-code recovery flow
98
+ (`recovery/start` → `recovery/code`) reachable from the pill's
99
+ recovery hint. Note that subscription auth is not provider-supported
100
+ for automated agent use — see
101
+ [Costs and Quotas](../concepts/costs-and-quotas.md).
74
102
 
75
103
  ## Confirming the Fix
76
104
 
77
- - The pill flips green within `authPreflightFreshnessMs`.
105
+ The pill flips green within `authPreflightFreshnessMs` of the next
106
+ probe (default 10 minutes).
78
107
 
79
108
  ## Related
80
109
 
@@ -5,63 +5,125 @@ title: Dashboard Shows Degraded
5
5
  id: dashboard-shows-degraded
6
6
  aliases:
7
7
  - dashboard degraded
8
- - degraded pill
9
- - health pill red
10
- - health degraded
8
+ - degraded banner
9
+ - daemon degraded
10
+ - primary vault unreachable
11
+ - writes are blocked
11
12
  category: troubleshooting
12
13
  summary: |
13
- The DegradedBanner appears at the top of every page when the daemon
14
- reports a critical-write block. Usually an integration auth failure
15
- or a context-file lock issue.
16
- section: dashboard-shows-degraded
14
+ A red "Daemon degraded" banner appears above every page when the daemon
15
+ enters degraded mode. This almost always means your Obsidian-style primary
16
+ vault is unreachable (path moved, drive unplugged, or not yet seeded), or a
17
+ context migration is in progress. While degraded, every context write is
18
+ refused with HTTP 503.
19
+ section: troubleshooting
20
+ status: stable
17
21
  tags:
18
22
  - troubleshooting
19
23
  - operations
20
24
  - health
21
- status: stable
25
+ - memory
22
26
  ask_examples:
23
27
  - Why is the dashboard showing a degraded banner?
24
- - What does "writes are blocked" mean?
28
+ - What does "primary vault unreachable" mean?
29
+ - Why are context writes being refused with 503?
25
30
  locale: en-US
26
31
  created: 2026-04-25
27
- updated: 2026-04-25
32
+ updated: 2026-05-28
28
33
  keywords:
29
34
  - degraded
30
- - health pill
35
+ - degraded banner
36
+ - primary vault unreachable
37
+ - management mode
38
+ - /api/health
39
+ - "503"
40
+ config_keys:
41
+ - vaultMode
42
+ - primaryVaultPath
43
+ api_endpoints:
44
+ - GET /api/health
45
+ context_files:
46
+ - policies/management.md
47
+ ui_anchors:
48
+ - /settings
31
49
  - /health
32
- - auth health
33
- - indexer degraded
34
50
  related:
35
51
  - troubleshooting/auth-failed
36
- - features/memory-files/today
52
+ - guides/use-an-existing-obsidian-vault
53
+ - concepts/memory-model
37
54
  ---
38
55
 
39
56
  # Dashboard Shows Degraded
40
57
 
41
58
  ## What You See
42
59
 
43
- - A red banner at the top of every page reading
44
- "Writes are blocked".
45
- - Routines that write context files fail.
60
+ - A red banner pinned above every page. Its headline is either
61
+ **"Primary vault unreachable"** or **"Daemon degraded: `<reason>`"**, often
62
+ followed by the offending path.
63
+ - An **Open Management Mode** button on the right of the banner (links to
64
+ Settings → Management Mode).
65
+ - Any routine or skill that writes a context file fails: the context API
66
+ returns **HTTP 503** for every `POST`/`PUT`/`PATCH`/`DELETE` while degraded.
67
+
68
+ ## What "Degraded" Actually Means
69
+
70
+ Degraded mode is set by the daemon's vault-health probe, which re-runs every
71
+ 30 seconds. It is **not** about backend auth, message delivery, or a stuck
72
+ write lock — it is specifically about the daemon being unable to safely write
73
+ your memory files.
46
74
 
47
- ## Most Likely Causes
75
+ You only see this banner if you switched memory to an **Obsidian-style vault**
76
+ (`vaultMode: "obsidian"`). The default `vaultMode: "plain"` stores memory under
77
+ `~/.personal-agent/context/` and does not enter this state.
48
78
 
49
- 1. The today-write-lock did not release (rare; daemon was killed
50
- mid-write).
51
- 2. An integration auth failure that propagated.
52
- 3. The data directory ran out of disk.
79
+ The `reason` in the banner is one of:
80
+
81
+ | `reason` | Meaning |
82
+ |--------------------------------|---------|
83
+ | `primary_vault_unreachable` | The configured vault path doesn't exist, isn't a directory, or isn't writable (e.g. an external drive was unplugged). |
84
+ | `primary_vault_not_configured` | Vault mode is Obsidian but no `primaryVaultPath` is set. |
85
+ | `primary_vault_missing_content`| The path is reachable but doesn't carry the expected vault markers (it was never seeded / restructured). |
86
+ | `migration_in_progress` | A context-vault migration (`/api/setup/migrate-context`) is running. Writes are gated until it finishes; reads still work. This one clears itself. |
53
87
 
54
88
  ## Diagnostic Steps
55
89
 
56
- 1. `aitne logs` search for the most recent error.
57
- 2. Confirm `df -h` shows free space on the data directory.
58
- 3. Check for a stale lock file in `~/.personal-agent/`.
90
+ 1. **Read the banner.** The `reason` and `path` tell you most of the story.
91
+ 2. `aitne logs` — look for `Vault health probe entered degraded mode`; the
92
+ logged `reason` matches the banner.
93
+ 3. If the reason is `migration_in_progress`, **wait** — the migration releases
94
+ the write gate when it completes; do not restart mid-migration.
95
+ 4. Otherwise the issue is your vault path. Confirm it exists and is writable:
96
+ - `ls -ld "<path-from-banner>"` — the directory must exist.
97
+ - `df -h "<path-from-banner>"` — confirm the volume is mounted with free
98
+ space (a full or read-only filesystem reports as `not_writable`).
99
+ - If it lives on an external drive, re-mount the drive.
100
+
101
+ ## Fixing It
102
+
103
+ Open **Settings → Management Mode** (the banner's button, or `/settings`):
104
+
105
+ - **Path moved or drive unplugged** — restore the original path, or point
106
+ `primaryVaultPath` at the vault's current location.
107
+ - **You don't need an external vault** — switch Management Mode back to
108
+ **This app** (`vaultMode: "plain"`); memory returns to
109
+ `~/.personal-agent/context/`.
110
+ - **`primary_vault_missing_content`** — the target needs to be seeded. Re-run
111
+ the Obsidian vault setup so `policies/management.md` and the rest of the
112
+ skeleton are written into it. See
113
+ [Use an existing Obsidian vault](../guides/use-an-existing-obsidian-vault.md).
59
114
 
60
115
  ## Confirming the Fix
61
116
 
62
- - The banner clears within 30 seconds of the underlying issue
63
- resolving.
117
+ - The vault-health probe re-runs every 30 seconds, and the dashboard refetches
118
+ `/api/health` every 10 seconds. Once the path is reachable again, the banner
119
+ clears within roughly half a minute — no restart needed.
120
+ - To check from the CLI without the dashboard, query the daemon:
121
+ `curl -s localhost:8321/api/health | grep -o '"status":"[^"]*"'` — it should
122
+ report `"status":"ok"` (degraded reports `"status":"degraded"` with a
123
+ populated `degraded` object).
64
124
 
65
125
  ## Related
66
126
 
67
- - [Auth Failed](auth-failed.md)
127
+ - [Auth Failed](auth-failed.md) — unrelated; covers backend auth, not the vault.
128
+ - [Use an existing Obsidian vault](../guides/use-an-existing-obsidian-vault.md)
129
+ - [Memory model](../concepts/memory-model.md)
@@ -7,58 +7,122 @@ aliases:
7
7
  - fallback firing
8
8
  - backend fallback
9
9
  - main backend down
10
+ - fallover loop
10
11
  category: troubleshooting
11
12
  summary: |
12
- The router transitioned main fallback for several runs in a row.
13
- Almost always main backend is unhealthy or quota-exhausted.
13
+ The router keeps switching from your main backend to its fallback,
14
+ run after run. Almost always the main backend is unhealthy
15
+ (expired auth) or quota-exhausted. This doc shows how to confirm the
16
+ cause and get runs back onto the main backend.
14
17
  section: fallback-keeps-firing
18
+ status: stable
15
19
  tags:
16
20
  - troubleshooting
17
21
  - backends
18
22
  - routing
19
- status: stable
20
- ask_examples:
21
- - Why does the fallback keep running?
22
- - How do I stop the fallover loop?
23
- locale: en-US
24
- created: 2026-04-25
25
- updated: 2026-04-25
23
+ - health
24
+ - cost
26
25
  keywords:
27
26
  - fallback
28
27
  - BackendQuotaError
29
28
  - BackendDecisiveFailure
30
29
  - router fallover
30
+ - auth expired
31
+ - quota exhausted
32
+ ask_examples:
33
+ - Why does the fallback backend keep running?
34
+ - How do I stop the fallover loop?
35
+ - Why isn't my main backend being used?
36
+ ui_anchors:
37
+ - /settings/models
38
+ - /analytics
39
+ - /activity
40
+ process_keys:
41
+ - message.dm
42
+ - routine.morning_routine
43
+ api_endpoints:
44
+ - GET /api/health
45
+ - POST /api/backends/:backendId/check-auth
46
+ config_keys:
47
+ - autonomousDailyCostCapUsd
31
48
  related:
32
49
  - troubleshooting/auth-failed
33
50
  - troubleshooting/quota-exhausted
34
51
  - features/operations/backend-routing
52
+ - concepts/auth-health
53
+ - concepts/backends-and-tiers
54
+ locale: en-US
55
+ created: 2026-04-25
56
+ updated: 2026-05-28
35
57
  ---
36
58
 
37
59
  # Fallback Keeps Firing
38
60
 
39
- ## What You See
61
+ The backend router resolves every run to a `{ main, fallback }` pair. When
62
+ the main backend can't take the work, the router transparently switches to
63
+ the fallback so the run still completes. If that happens once, it's normal.
64
+ If it happens run after run, the main backend has a persistent problem.
65
+
66
+ ## What you see
67
+
68
+ - Multiple recent Activity rows whose backend is *not* your main backend.
69
+ - Notifications that mention a "fallback".
70
+
71
+ ## Most likely causes
72
+
73
+ 1. **Main backend's auth has expired.** The most common cause — the CLI
74
+ credentials (or API key) for the main backend are no longer valid, so
75
+ every run raises a `BackendDecisiveFailure("auth")` and the router falls
76
+ over.
77
+ 2. **Main backend's usage window is exhausted.** Claude and Codex meter
78
+ usage per rolling window; Gemini also hits its per-day free-tier cap.
79
+ When the limit is reached the backend raises a `BackendQuotaError` and
80
+ the router falls over until the window resets.
81
+ 3. **A repeating `BackendDecisiveFailure` from a config issue** — e.g. the
82
+ main backend's CLI isn't installed, a pinned model id no longer
83
+ resolves, or execution-mode settings reject the run.
84
+
85
+ `BackendQuotaError` and `BackendDecisiveFailure` are the two signals the
86
+ router watches; one of them is firing on every attempt.
87
+
88
+ ## Diagnose
40
89
 
41
- - Multiple recent Activity rows with backend != main.
42
- - Notifications mentioning "fallback".
90
+ 1. **Check auth on `/settings/models`.** Each backend has a card showing
91
+ its auth status. If the main backend's card flags expired or failed
92
+ auth, that's your cause — re-verify or re-authenticate it there.
93
+ 2. **Check quota/spend on `/analytics` (Cost tab).** Look at the main
94
+ backend's recent spend. A flat ceiling or a depleted window points to
95
+ cause 2. If you set `autonomousDailyCostCapUsd`, autonomous runs also
96
+ stop once the daily cap is hit (reactive DMs are never blocked by it).
97
+ 3. **Read the failure detail in `/activity`.** Open the offending row to
98
+ see the exact error. From the CLI you can do the same:
43
99
 
44
- ## Most Likely Causes
100
+ ```bash
101
+ # recent runs on the main backend that didn't succeed
102
+ aitne audit --backend claude --result failed --since 24h
103
+ ```
45
104
 
46
- 1. Main backend's auth has expired.
47
- 2. Main backend's heavy-tier window is depleted.
48
- 3. A `BackendDecisiveFailure` is repeating — usually a config issue.
105
+ (`--backend` accepts `claude`, `codex`, or `gemini`.)
49
106
 
50
- ## Diagnostic Steps
107
+ ## Fix
51
108
 
52
- 1. Open `/connections` auth-health card.
53
- 2. Open `/analytics` main-backend cost / quota.
54
- 3. Look at the failure detail in Activity for the offending row.
109
+ - **Expired auth →** re-authenticate the main backend from its card on
110
+ `/settings/models`, then run a test. See [Auth Failed](auth-failed.md).
111
+ - **Exhausted quota →** wait for the usage window to reset, raise the cap,
112
+ or accept the fallback until it clears. See
113
+ [Quota Exhausted](quota-exhausted.md).
114
+ - **Config issue →** fix the reported problem (install the CLI, repin a
115
+ valid model, relax execution mode) on `/settings/models`.
55
116
 
56
- ## Confirming the Fix
117
+ ## Confirm the fix
57
118
 
58
- - The next run uses the main backend.
119
+ - The next run uses the main backend again — visible in `/activity` or via
120
+ `aitne audit --backend <id> --since 1h`.
59
121
 
60
122
  ## Related
61
123
 
62
124
  - [Auth Failed](auth-failed.md)
63
125
  - [Quota Exhausted](quota-exhausted.md)
64
126
  - [Backend Routing](../features/operations/backend-routing.md)
127
+ - [Auth Health](../concepts/auth-health.md)
128
+ - [Backends and Tiers](../concepts/backends-and-tiers.md)