@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.
- package/README.md +218 -161
- package/agent-assets/agent-profiles/_safety.md +3 -3
- package/agent-assets/agent-profiles/browser-task.md +108 -0
- package/agent-assets/agent-profiles/conversational.md +3 -3
- package/agent-assets/agent-profiles/profile-importer.md +2 -2
- package/agent-assets/agent-profiles/routine-fetch-window.md +30 -19
- package/agent-assets/agents/context-index-reconcile/agent.md +52 -0
- package/agent-assets/agents/evening-review/agent.md +53 -0
- package/agent-assets/agents/hourly-check/agent.md +62 -0
- package/agent-assets/agents/monthly-review/agent.md +55 -0
- package/agent-assets/agents/morning-routine/agent.md +78 -0
- package/agent-assets/agents/roadmap-maintenance/agent.md +52 -0
- package/agent-assets/agents/skill-curation/agent.md +52 -0
- package/agent-assets/agents/user-profile-sweep-evening/agent.md +48 -0
- package/agent-assets/agents/user-profile-sweep-morning/agent.md +53 -0
- package/agent-assets/agents/weekly-review/agent.md +51 -0
- package/agent-assets/docs/concepts/agent-day.md +13 -11
- package/agent-assets/docs/concepts/auth-health.md +47 -10
- package/agent-assets/docs/concepts/backends-and-tiers.md +66 -31
- package/agent-assets/docs/concepts/costs-and-quotas.md +50 -15
- package/agent-assets/docs/concepts/delegated-mode.md +52 -13
- package/agent-assets/docs/concepts/memory-model.md +72 -32
- package/agent-assets/docs/concepts/observations.md +49 -11
- package/agent-assets/docs/concepts/process-keys.md +56 -22
- package/agent-assets/docs/concepts/routines.md +60 -33
- package/agent-assets/docs/concepts/safety-and-execution.md +50 -21
- package/agent-assets/docs/concepts/safety-model.md +42 -34
- package/agent-assets/docs/concepts/skills.md +33 -17
- package/agent-assets/docs/features/integrations/browser-history.md +195 -0
- package/agent-assets/docs/features/integrations/calendar.md +39 -29
- package/agent-assets/docs/features/integrations/git.md +18 -7
- package/agent-assets/docs/features/integrations/github.md +84 -33
- package/agent-assets/docs/features/integrations/mail.md +59 -16
- package/agent-assets/docs/features/integrations/notion.md +18 -6
- package/agent-assets/docs/features/integrations/obsidian.md +28 -5
- package/agent-assets/docs/features/lifestyle/git.md +42 -38
- package/agent-assets/docs/features/lifestyle/reading.md +50 -22
- package/agent-assets/docs/features/lifestyle/receipts.md +51 -21
- package/agent-assets/docs/features/lifestyle/travel-bookings.md +76 -14
- package/agent-assets/docs/features/memory-files/agent-journal.md +111 -50
- package/agent-assets/docs/features/memory-files/projects.md +71 -17
- package/agent-assets/docs/features/memory-files/roadmap.md +50 -10
- package/agent-assets/docs/features/memory-files/schedule.md +113 -70
- package/agent-assets/docs/features/memory-files/today.md +46 -21
- package/agent-assets/docs/features/memory-files/user-profile.md +63 -33
- package/agent-assets/docs/features/messaging/bang-commands.md +113 -36
- package/agent-assets/docs/features/messaging/dashboard-chat.md +43 -21
- package/agent-assets/docs/features/messaging/discord.md +35 -4
- package/agent-assets/docs/features/messaging/overview.md +37 -19
- package/agent-assets/docs/features/messaging/pairing-and-magic-phrase.md +94 -27
- package/agent-assets/docs/features/messaging/slack.md +67 -14
- package/agent-assets/docs/features/messaging/telegram.md +18 -5
- package/agent-assets/docs/features/messaging/whatsapp.md +71 -17
- package/agent-assets/docs/features/operations/activity-and-conversations.md +44 -15
- package/agent-assets/docs/features/operations/approvals.md +48 -16
- package/agent-assets/docs/features/operations/backend-routing.md +68 -16
- package/agent-assets/docs/features/operations/cost-tracking.md +84 -17
- package/agent-assets/docs/features/operations/managed-chromium.md +221 -0
- package/agent-assets/docs/features/operations/notifications.md +52 -11
- package/agent-assets/docs/features/operations/quiet-hours.md +63 -40
- package/agent-assets/docs/features/operations/schedule-approaching.md +54 -24
- package/agent-assets/docs/features/routines/custom-routines.md +88 -20
- package/agent-assets/docs/features/routines/evening-review.md +74 -21
- package/agent-assets/docs/features/routines/hourly-check.md +149 -29
- package/agent-assets/docs/features/routines/morning-routine.md +53 -35
- package/agent-assets/docs/features/routines/weekly-review.md +40 -21
- package/agent-assets/docs/features/wiki/commands.md +26 -16
- package/agent-assets/docs/features/wiki/cost-and-approval.md +240 -0
- package/agent-assets/docs/features/wiki/dashboard.md +255 -0
- package/agent-assets/docs/features/wiki/overview.md +68 -10
- package/agent-assets/docs/features/wiki/search.md +248 -0
- package/agent-assets/docs/features/wiki/workspaces.md +254 -0
- package/agent-assets/docs/getting-started/01-what-is-this.md +34 -23
- package/agent-assets/docs/getting-started/02-first-steps.md +13 -8
- package/agent-assets/docs/getting-started/03-what-can-this-do.md +25 -14
- package/agent-assets/docs/getting-started/04-first-day.md +38 -20
- package/agent-assets/docs/glossary.md +235 -24
- package/agent-assets/docs/guides/add-a-custom-routine.md +63 -23
- package/agent-assets/docs/guides/backup-and-restore.md +80 -16
- package/agent-assets/docs/guides/budget-and-cost-for-wiki.md +56 -25
- package/agent-assets/docs/guides/build-your-wiki.md +22 -9
- package/agent-assets/docs/guides/change-which-model-handles-x.md +64 -10
- package/agent-assets/docs/guides/connect-a-new-mail-account.md +64 -15
- package/agent-assets/docs/guides/explore-with-trace-and-connect.md +28 -11
- package/agent-assets/docs/guides/import-knowledge-file.md +50 -40
- package/agent-assets/docs/guides/install-and-run.md +48 -19
- package/agent-assets/docs/guides/maintain-wiki-health.md +35 -10
- package/agent-assets/docs/guides/migrate-machines.md +74 -18
- package/agent-assets/docs/guides/multiple-wikis-for-multiple-domains.md +111 -60
- package/agent-assets/docs/guides/pause-the-agent.md +65 -24
- package/agent-assets/docs/guides/reinstall-cleanly.md +88 -18
- package/agent-assets/docs/guides/setup-wizard.md +113 -54
- package/agent-assets/docs/guides/switch-default-backend.md +62 -16
- package/agent-assets/docs/guides/use-an-existing-obsidian-vault.md +26 -10
- package/agent-assets/docs/reference/api.md +143 -32
- package/agent-assets/docs/reference/cli-commands.md +38 -17
- package/agent-assets/docs/reference/config.md +224 -49
- package/agent-assets/docs/reference/disallowed-tools.md +29 -10
- package/agent-assets/docs/reference/keyboard-shortcuts.md +34 -10
- package/agent-assets/docs/reference/knowledge-layout.md +620 -0
- package/agent-assets/docs/reference/process-keys.md +61 -5
- package/agent-assets/docs/reference/skills.md +38 -12
- package/agent-assets/docs/troubleshooting/auth-failed.md +48 -19
- package/agent-assets/docs/troubleshooting/dashboard-shows-degraded.md +90 -28
- package/agent-assets/docs/troubleshooting/fallback-keeps-firing.md +86 -22
- package/agent-assets/docs/troubleshooting/messaging-not-pairing.md +68 -24
- package/agent-assets/docs/troubleshooting/morning-routine-didnt-run.md +80 -20
- package/agent-assets/docs/troubleshooting/observation-not-detected.md +73 -21
- package/agent-assets/docs/troubleshooting/quota-exhausted.md +29 -5
- package/agent-assets/docs/troubleshooting/wiki-ingest-full-blocked.md +126 -54
- package/agent-assets/docs/troubleshooting/wiki-write-failed.md +29 -12
- package/agent-assets/optimizer-skills/drift-analysis/SKILL.md +1 -1
- package/agent-assets/optimizer-skills/knowledge-map/SKILL.md +1 -1
- package/agent-assets/optimizer-skills/skill-curation/SKILL.md +1 -1
- package/agent-assets/sandbox/linux/aitne-chromium.apparmor +91 -0
- package/agent-assets/sandbox/macos/aitne-chromium.sb +156 -0
- package/agent-assets/skills/agent-actions/SKILL.md +2 -2
- package/agent-assets/skills/agent-create/SKILL.md +149 -0
- package/agent-assets/skills/attach/SKILL.md +2 -2
- package/agent-assets/skills/browser-history/SKILL.md +198 -0
- package/agent-assets/skills/browser-history-respond/SKILL.md +106 -0
- package/agent-assets/skills/browser-task/SKILL.md +169 -0
- package/agent-assets/skills/context/SKILL.md +12 -12
- package/agent-assets/skills/context/curation.json +2 -2
- package/agent-assets/skills/context/references/api.md +43 -31
- package/agent-assets/skills/context/references/required-frontmatter.md +3 -3
- package/agent-assets/skills/context/references/snapshot-files.md +6 -6
- package/agent-assets/skills/context/seeds/file-responsibilities.seed.json +3 -3
- package/agent-assets/skills/docs-search/SKILL.md +4 -3
- package/agent-assets/skills/external-services/SKILL.delegated.claude.md +11 -21
- package/agent-assets/skills/external-services/SKILL.delegated.codex.md +11 -21
- package/agent-assets/skills/external-services/SKILL.delegated.gemini.md +11 -21
- package/agent-assets/skills/external-services/SKILL.md +3 -3
- package/agent-assets/skills/external-services/SKILL.native.claude.md +5 -5
- package/agent-assets/skills/external-services/SKILL.native.codex.md +7 -7
- package/agent-assets/skills/external-services/SKILL.native.gemini.md +4 -4
- package/agent-assets/skills/external-services/references/calendar-apple.md +2 -2
- package/agent-assets/skills/external-services/references/calendar-outlook.md +1 -1
- package/agent-assets/skills/external-services/references/obsidian.md +2 -2
- package/agent-assets/skills/gmail-lifestyle/SKILL.md +9 -82
- package/agent-assets/skills/mail/SKILL.delegated.claude.md +14 -5
- package/agent-assets/skills/mail/SKILL.delegated.codex.md +8 -4
- package/agent-assets/skills/mail/SKILL.delegated.gemini.md +8 -4
- package/agent-assets/skills/mail/references/api.md +4 -2
- package/agent-assets/skills/mail/references/providers.md +1 -1
- package/agent-assets/skills/managed-tasks/SKILL.md +9 -9
- package/agent-assets/skills/managed-tasks/references/errors.md +9 -6
- package/agent-assets/skills/managed-tasks/references/recurrence-rule.md +1 -1
- package/agent-assets/skills/management-policy/SKILL.md +32 -31
- package/agent-assets/skills/management-policy/curation.json +1 -1
- package/agent-assets/skills/management-policy/references/policy-workflow.md +9 -9
- package/agent-assets/skills/management-policy/seeds/policy-file-shape.seed.json +1 -1
- package/agent-assets/skills/notify/SKILL.md +4 -4
- package/agent-assets/skills/notify/references/priority.md +9 -4
- package/agent-assets/skills/notion/SKILL.delegated.claude.md +1 -1
- package/agent-assets/skills/notion/SKILL.delegated.codex.md +1 -1
- package/agent-assets/skills/notion/SKILL.delegated.gemini.md +1 -1
- package/agent-assets/skills/notion/SKILL.native.claude.md +10 -6
- package/agent-assets/skills/notion/SKILL.native.codex.md +9 -4
- package/agent-assets/skills/notion/SKILL.native.gemini.md +9 -4
- package/agent-assets/skills/observations/SKILL.md +24 -8
- package/agent-assets/skills/project-doc/SKILL.md +1 -1
- package/agent-assets/skills/project-doc/curation.json +3 -3
- package/agent-assets/skills/project-doc/seeds/project-shape.seed.json +7 -4
- package/agent-assets/skills/project-doc/seeds/slug-grammar.seed.json +3 -3
- package/agent-assets/skills/reading/SKILL.md +10 -0
- package/agent-assets/skills/reading/references/reading-taste.md +2 -2
- package/agent-assets/skills/roadmap/SKILL.md +5 -5
- package/agent-assets/skills/roadmap/curation.json +1 -1
- package/agent-assets/skills/roadmap/references/api.md +7 -7
- package/agent-assets/skills/roadmap/references/cross-check.md +15 -8
- package/agent-assets/skills/roadmap/references/migration.md +4 -4
- package/agent-assets/skills/roadmap/seeds/entry-types.seed.json +1 -1
- package/agent-assets/skills/schedule/SKILL.md +42 -34
- package/agent-assets/skills/schedule/references/batch.md +2 -2
- package/agent-assets/skills/schedule/references/errors.md +7 -4
- package/agent-assets/skills/schedule/references/model-selection.md +3 -3
- package/agent-assets/skills/schedule/references/recurrence-rule.md +1 -1
- package/agent-assets/skills/scheduled-managed-task/SKILL.md +46 -36
- package/agent-assets/skills/today/SKILL.md +9 -9
- package/agent-assets/skills/today/curation.json +3 -3
- package/agent-assets/skills/today/references/agent-plan-lifecycle.md +6 -5
- package/agent-assets/skills/today/seeds/section-shape.seed.json +1 -1
- package/agent-assets/skills/user-interview/SKILL.md +12 -9
- package/agent-assets/skills/user-interview/references/op-briefing.md +2 -2
- package/agent-assets/skills/user-interview/references/sweep-and-fallback.md +8 -0
- package/agent-assets/skills/user-profile/SKILL.md +17 -17
- package/agent-assets/skills/user-profile/curation.json +2 -2
- package/agent-assets/skills/user-profile/references/character-preferences.md +2 -2
- package/agent-assets/skills/user-profile/seeds/routing-table.seed.json +8 -8
- package/agent-assets/skills/user-profile/seeds/topic-files.seed.json +6 -6
- package/agent-assets/skills/wiki/wiki-compile/SKILL.md +4 -4
- package/agent-assets/system-prompts/routine-fetch-window.md +22 -12
- package/agent-assets/task-flows/_partials/calendar-acquire.google_calendar.md +4 -2
- package/agent-assets/task-flows/_partials/calendar-acquire.outlook_calendar.md +4 -2
- package/agent-assets/task-flows/_partials/capture-user-info.md +2 -2
- package/agent-assets/task-flows/_partials/dm-intent.long-horizon.md +1 -1
- package/agent-assets/task-flows/_partials/dm-intent.project.md +9 -9
- package/agent-assets/task-flows/_partials/mail-acquire.outlook_mail.md +3 -2
- package/agent-assets/task-flows/_partials/notion-acquire.notion.md +10 -5
- package/agent-assets/task-flows/browser_task.md +84 -0
- package/agent-assets/task-flows/github.assigned.md +1 -1
- package/agent-assets/task-flows/github.pull_request.review_requested.md +2 -2
- package/agent-assets/task-flows/github.workflow_run.failed.md +2 -2
- package/agent-assets/task-flows/knowledge.import.md +14 -14
- package/agent-assets/task-flows/message.received.dm.md +9 -4
- package/agent-assets/task-flows/message.received.dm_first.md +3 -3
- package/agent-assets/task-flows/routine.custom.md +3 -3
- package/agent-assets/task-flows/routine.evening_review.md +8 -8
- package/agent-assets/task-flows/routine.fetch_window.md +2 -2
- package/agent-assets/task-flows/routine.hourly_check.md +16 -12
- package/agent-assets/task-flows/routine.monthly_review.md +21 -21
- package/agent-assets/task-flows/routine.morning_routine_journal.md +119 -97
- package/agent-assets/task-flows/routine.morning_routine_today.md +43 -43
- package/agent-assets/task-flows/routine.research_cluster_update.md +35 -0
- package/agent-assets/task-flows/routine.research_dispatch.md +38 -0
- package/agent-assets/task-flows/routine.research_offer_dm.md +125 -0
- package/agent-assets/task-flows/routine.research_wiki_summary.md +53 -0
- package/agent-assets/task-flows/routine.roadmap_refresh.md +10 -10
- package/agent-assets/task-flows/routine.today_refresh.md +4 -4
- package/agent-assets/task-flows/routine.user_profile_sweep.md +10 -10
- package/agent-assets/task-flows/routine.weekly_review.md +93 -24
- package/agent-assets/task-flows/schedule.approaching.md +0 -1
- package/agent-assets/task-flows/scheduled.dm.md +5 -5
- package/agent-assets/task-flows/scheduled.task.md +4 -4
- package/agent-assets/task-flows/setup.initial.md +21 -21
- package/agent-assets/task-flows/setup.update.md +2 -2
- package/agent-assets/templates/README.md +27 -20
- package/agent-assets/templates/_index.md +42 -26
- package/agent-assets/templates/_manifest.json +34 -99
- package/agent-assets/templates/{user → identity}/_index.md +1 -1
- package/agent-assets/templates/{user → identity}/profile.md +2 -2
- package/agent-assets/templates/{dossiers → knowledge/dossiers}/_index.md +1 -1
- package/agent-assets/templates/{projects → plans/projects}/_active.base +1 -1
- package/agent-assets/templates/policies/_index.md +21 -0
- package/agent-assets/templates/{rules → policies}/journal-export.md +1 -1
- package/agent-assets/templates/{rules → policies}/journal-format.md +5 -5
- package/agent-assets/templates/{rules/policies → policies/management-captures}/_index.md +2 -2
- package/agent-assets/templates/{rules → policies}/management.md +3 -3
- package/agent-assets/templates/{rules → policies}/mcp.md +1 -1
- package/agent-assets/templates/{rules → policies}/redaction.md +1 -1
- package/agent-assets/templates/{routines → policies/routines}/_index.md +1 -1
- package/agent-assets/templates/{routines → policies/routines}/evening.md +2 -2
- package/agent-assets/templates/{routines → policies/routines}/hourly.md +1 -1
- package/agent-assets/templates/{routines → policies/routines}/monthly.md +2 -2
- package/bin/aitne.mjs +13 -4
- package/package.json +5 -4
- package/scripts/commands/doctor.mjs +14 -8
- package/scripts/commands/run-now.mjs +6 -21
- package/scripts/lib/ports.d.mts +27 -0
- package/scripts/lib/ports.mjs +36 -0
- package/scripts/lib/read-api-token.mjs +176 -0
- package/scripts/start.mjs +2 -1
- package/agent-assets/docs/features/lifestyle/travel-time.md +0 -58
- package/agent-assets/skills/gmail-lifestyle/references/travel-time-api.md +0 -59
- package/agent-assets/skills/schedule/references/recurring.md +0 -185
- package/agent-assets/templates/context-index.md +0 -42
- package/agent-assets/templates/rules/_index.md +0 -19
- /package/agent-assets/templates/{user → identity}/expertise.md +0 -0
- /package/agent-assets/templates/{user → identity}/goals.md +0 -0
- /package/agent-assets/templates/{user → identity}/people.md +0 -0
- /package/agent-assets/templates/{user → identity}/personal.md +0 -0
- /package/agent-assets/templates/{user → identity}/work.md +0 -0
- /package/agent-assets/templates/{agent/journal.md → journal/agent.md} +0 -0
- /package/agent-assets/templates/{dossiers → knowledge/dossiers}/evening.md +0 -0
- /package/agent-assets/templates/{dossiers → knowledge/dossiers}/hourly.md +0 -0
- /package/agent-assets/templates/{dossiers → knowledge/dossiers}/monthly.md +0 -0
- /package/agent-assets/templates/{dossiers → knowledge/dossiers}/morning.md +0 -0
- /package/agent-assets/templates/{dossiers → knowledge/dossiers}/roadmap.md +0 -0
- /package/agent-assets/templates/{dossiers → knowledge/dossiers}/weekly.md +0 -0
- /package/agent-assets/templates/{projects → plans/projects}/_index.md +0 -0
- /package/agent-assets/templates/{roadmap.md → plans/roadmap.md} +0 -0
- /package/agent-assets/templates/{routines → policies/routines}/morning.md +0 -0
- /package/agent-assets/templates/{routines → policies/routines}/weekly.md +0 -0
- /package/agent-assets/templates/{agent → state}/profile-questions.md +0 -0
- /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-
|
|
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` |
|
|
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 |
|
|
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-
|
|
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
|
|
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 `
|
|
65
|
-
| `user-profile` | Record user facts — identity, people, work, expertise, habits, goals — into the `
|
|
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
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
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:
|
|
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-
|
|
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
|
|
53
|
-
(Bedrock / Vertex / Foundry
|
|
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.
|
|
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
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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
|
-
|
|
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
|
|
9
|
-
-
|
|
10
|
-
-
|
|
8
|
+
- degraded banner
|
|
9
|
+
- daemon degraded
|
|
10
|
+
- primary vault unreachable
|
|
11
|
+
- writes are blocked
|
|
11
12
|
category: troubleshooting
|
|
12
13
|
summary: |
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
or
|
|
16
|
-
|
|
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
|
-
|
|
25
|
+
- memory
|
|
22
26
|
ask_examples:
|
|
23
27
|
- Why is the dashboard showing a degraded banner?
|
|
24
|
-
- What does "
|
|
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-
|
|
32
|
+
updated: 2026-05-28
|
|
28
33
|
keywords:
|
|
29
34
|
- degraded
|
|
30
|
-
-
|
|
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
|
-
-
|
|
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
|
|
44
|
-
"
|
|
45
|
-
|
|
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
|
-
|
|
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
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
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.
|
|
57
|
-
2.
|
|
58
|
-
|
|
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
|
|
63
|
-
|
|
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
|
|
13
|
-
Almost always main backend is unhealthy
|
|
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
|
-
|
|
20
|
-
|
|
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
|
-
|
|
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
|
-
|
|
42
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
##
|
|
107
|
+
## Fix
|
|
51
108
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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
|
-
##
|
|
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)
|