@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
|
@@ -8,6 +8,7 @@ aliases:
|
|
|
8
8
|
- vocabulary
|
|
9
9
|
- lexicon
|
|
10
10
|
category: glossary
|
|
11
|
+
section: glossary
|
|
11
12
|
summary: |
|
|
12
13
|
Single flat term list for Aitne vocabulary. Cross-references
|
|
13
14
|
link to a single canonical anchor here so concept docs do not drift.
|
|
@@ -23,9 +24,18 @@ ask_examples:
|
|
|
23
24
|
- What is OpenCode?
|
|
24
25
|
- What is a routine pre-pass?
|
|
25
26
|
- What is the wiki workspace?
|
|
27
|
+
- What is an integration mode?
|
|
28
|
+
- What is native mode?
|
|
29
|
+
- What is B-3 / browser history?
|
|
30
|
+
- What is B-4 / managed Chromium?
|
|
31
|
+
- What is a schema migration?
|
|
32
|
+
- What is execution permission mode?
|
|
33
|
+
- What is a bang command?
|
|
34
|
+
- What is deniedTools?
|
|
35
|
+
- What is an observation?
|
|
26
36
|
locale: en-US
|
|
27
37
|
created: 2026-04-25
|
|
28
|
-
updated: 2026-05-
|
|
38
|
+
updated: 2026-05-28
|
|
29
39
|
keywords:
|
|
30
40
|
- terminology
|
|
31
41
|
- vocabulary
|
|
@@ -37,13 +47,46 @@ keywords:
|
|
|
37
47
|
- observation
|
|
38
48
|
- skill
|
|
39
49
|
- wiki workspace
|
|
50
|
+
- integration mode
|
|
51
|
+
- native mode
|
|
52
|
+
- delegated mode
|
|
53
|
+
- browser history
|
|
54
|
+
- managed chromium
|
|
55
|
+
- schema migration
|
|
56
|
+
- execution permission mode
|
|
57
|
+
- research cluster
|
|
58
|
+
- bang command
|
|
59
|
+
- deniedTools
|
|
60
|
+
- safety model
|
|
40
61
|
related:
|
|
41
62
|
- concepts/agent-day
|
|
42
63
|
- concepts/backends-and-tiers
|
|
43
64
|
- concepts/process-keys
|
|
44
65
|
- concepts/observations
|
|
66
|
+
- concepts/delegated-mode
|
|
67
|
+
- concepts/safety-and-execution
|
|
68
|
+
- concepts/safety-model
|
|
45
69
|
- features/routines/morning-routine
|
|
46
70
|
- features/wiki/overview
|
|
71
|
+
- features/integrations/browser-history
|
|
72
|
+
- features/messaging/bang-commands
|
|
73
|
+
ui_anchors:
|
|
74
|
+
- /settings/models
|
|
75
|
+
- /docs
|
|
76
|
+
- /settings/integrations/browser-history-managed/b4
|
|
77
|
+
process_keys:
|
|
78
|
+
- dashboard.docs_qa
|
|
79
|
+
- delegated_task_heavy
|
|
80
|
+
- routine.fetch_window
|
|
81
|
+
- routine.hourly_check
|
|
82
|
+
- routine.research_cluster_update
|
|
83
|
+
config_keys:
|
|
84
|
+
- dayBoundaryHour
|
|
85
|
+
- browserTaskHostnameDenylist
|
|
86
|
+
- delegatedTaskHeavyEnabled
|
|
87
|
+
- claudeExecutionPermissionMode
|
|
88
|
+
api_endpoints:
|
|
89
|
+
- POST /api/observations
|
|
47
90
|
---
|
|
48
91
|
|
|
49
92
|
# Glossary
|
|
@@ -65,6 +108,42 @@ One of the model providers Aitne can dispatch to: `claude`
|
|
|
65
108
|
per-installation; one is the **main backend**, and the others can be
|
|
66
109
|
enabled as fallbacks.
|
|
67
110
|
|
|
111
|
+
## Browser History (B-3)
|
|
112
|
+
|
|
113
|
+
Local-only history poller that reads the browser's own SQLite database
|
|
114
|
+
(Chrome / Safari / Firefox / Arc) and records page visits as
|
|
115
|
+
observations. Drives the **research cluster** derivation, the weekly
|
|
116
|
+
reload-memory block, and the [`!checks`](features/messaging/bang-commands.md)
|
|
117
|
+
on-demand reload tally. No content is uploaded; only URLs, titles, and
|
|
118
|
+
visit timings the browser itself recorded. See
|
|
119
|
+
[Browser History](features/integrations/browser-history.md).
|
|
120
|
+
|
|
121
|
+
## Managed Chromium (B-4)
|
|
122
|
+
|
|
123
|
+
Experimental purchase-confirmation flow that drives a daemon-spawned
|
|
124
|
+
Chromium profile to complete a vendor checkout the agent has already
|
|
125
|
+
prepared. **Default-off.** Requires per-site opt-in, the experimental-
|
|
126
|
+
danger acknowledgement modal, at least one DM channel, a single-use
|
|
127
|
+
`!~xxxxxxxx` token, screenshot-first consent, and a 5-min timeout. There
|
|
128
|
+
is no longer a hardcoded domain category denylist (banks, government,
|
|
129
|
+
payment processors, etc. were removed at the framework level on
|
|
130
|
+
2026-05-27); domain-level deny is operator-managed via **Settings →
|
|
131
|
+
Integrations → Browser History (Managed) → B-4** (`browserTaskHostnameDenylist`,
|
|
132
|
+
default empty). The structural defences that remain: the IP CIDR layer
|
|
133
|
+
in `shouldDenyEgress` (RFC1918 / loopback / cloud-metadata), the
|
|
134
|
+
form-submit `payment-path-blocker`, and the single-use token primitive.
|
|
135
|
+
Operator self-testing only until B-3 has been stable for six weeks. See
|
|
136
|
+
[Managed Chromium](features/operations/managed-chromium.md).
|
|
137
|
+
|
|
138
|
+
## Bang Command
|
|
139
|
+
|
|
140
|
+
Short, owner-only command typed in a paired DM that starts with `!`
|
|
141
|
+
(e.g. `!help`, `!stop`, `!cost`, `!report`, `!checks`, `!research`,
|
|
142
|
+
`!ingest`, `!compile`, `!ask`). Handled by the daemon directly — no
|
|
143
|
+
LLM call, no cost, no session opened. Built-in commands plus operator-
|
|
144
|
+
enabled custom commands appear in `!help`. See
|
|
145
|
+
[Bang Commands](features/messaging/bang-commands.md).
|
|
146
|
+
|
|
68
147
|
## Backend Router
|
|
69
148
|
|
|
70
149
|
The component that resolves a `ProcessKey` to a concrete `(backend,
|
|
@@ -84,28 +163,80 @@ matching anchor.
|
|
|
84
163
|
The hour-of-day at which the agent day rolls over. Configured via
|
|
85
164
|
`dayBoundaryHour` (default `4`).
|
|
86
165
|
|
|
166
|
+
## deniedTools
|
|
167
|
+
|
|
168
|
+
Per-integration deny list of tool names (or prefix globs like
|
|
169
|
+
`send_*`) the agent must not call. The primary defense against
|
|
170
|
+
unwanted destructive actions in the [Safety Model](concepts/safety-model.md).
|
|
171
|
+
Editable in **Connections → \<integration\> → Tool Permissions**;
|
|
172
|
+
seeded with a recommended starter list on first delegated setup.
|
|
173
|
+
Patterns are validated against the connector's `capabilityTools` set
|
|
174
|
+
at PATCH time so typos fail fast.
|
|
175
|
+
|
|
176
|
+
## Execution Permission Mode
|
|
177
|
+
|
|
178
|
+
Per-backend `Safe` / `Allow` posture, set independently for each
|
|
179
|
+
registered backend via
|
|
180
|
+
`{claude,codex,gemini,opencode}ExecutionPermissionMode`. **Safe** =
|
|
181
|
+
strict per-call permission checks plus the Claude curl/jq hooks,
|
|
182
|
+
Codex `workspace-write` sandbox, and Gemini whitelist TOML. **Allow** =
|
|
183
|
+
SDK bypass / sandbox off / minimal TOML. The absolute-block layer
|
|
184
|
+
(recursive delete, sudo, secret-file reads/writes) is enforced in
|
|
185
|
+
*both* modes — `allowedToolsOverride` cannot widen past it. Codex
|
|
186
|
+
allow mode cannot enforce the absolute-block layer for shell commands
|
|
187
|
+
(no hook surface); the gap is documented in
|
|
188
|
+
`docs/design/09-safety-cost.md`. See
|
|
189
|
+
[Safety and Execution](concepts/safety-and-execution.md).
|
|
190
|
+
|
|
191
|
+
## Integration Mode
|
|
192
|
+
|
|
193
|
+
The per-integration posture for how Aitne ingests events from a
|
|
194
|
+
connected service: `direct | delegated | native | disabled`.
|
|
195
|
+
|
|
196
|
+
- **direct** — the daemon runs its own poller against the integration's
|
|
197
|
+
API.
|
|
198
|
+
- **delegated** — a lite-tier `delegated-sync-worker` polls on opt-in
|
|
199
|
+
cadences (see `docs/design/appendices/delegated-sync-opt-in.md`).
|
|
200
|
+
- **native** — no poller; the main backend reaches the integration
|
|
201
|
+
through its own MCP connector and POSTs observations in-turn via
|
|
202
|
+
`/api/observations`. Two variants: **descriptor-driven** (the
|
|
203
|
+
integration ships a `backendConnectors` entry — `gmail`,
|
|
204
|
+
`google_calendar`, `notion`) and **user-managed** (the descriptor
|
|
205
|
+
declares `userManagedConnector: true` and the user installs their own
|
|
206
|
+
MCP / skill harness — `outlook_mail`, `outlook_calendar`).
|
|
207
|
+
- **disabled** — silence; no poller, no native handoff.
|
|
208
|
+
|
|
209
|
+
Mode lookup goes through `getIntegrationState(db, key)`; never
|
|
210
|
+
hardcode an integration reference outside
|
|
211
|
+
`packages/shared/src/integrations.ts`. See
|
|
212
|
+
[Delegated Mode](concepts/delegated-mode.md).
|
|
213
|
+
|
|
87
214
|
## Heavy Tier
|
|
88
215
|
|
|
89
216
|
Synonym for the **high** tier — the expensive, high-quality model lane
|
|
90
|
-
on each backend (Claude Opus 4.
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
(2026-05-16) the only
|
|
94
|
-
|
|
95
|
-
|
|
217
|
+
on each backend (Claude Opus 4.8 / `claude-opus-4-8`, `gpt-5.5` on
|
|
218
|
+
Codex, `gemini-3.1-pro-preview` on Gemini, Opus 4.8 via OpenCode).
|
|
219
|
+
Registered but not auto-selected on any install-seeded surface: after
|
|
220
|
+
the "no Opus by default" pass (2026-05-16) the **only** process key that
|
|
221
|
+
defaults to high tier is `delegated_task_heavy` (opt-in, gated by the
|
|
222
|
+
`delegatedTaskHeavyEnabled` flag). Every other process key — including
|
|
223
|
+
`setup` and `knowledge.import` — defaults to medium. Operators can pin
|
|
224
|
+
any other process key to high per row from the `/settings/models`
|
|
225
|
+
dashboard page.
|
|
96
226
|
|
|
97
227
|
## Light Tier
|
|
98
228
|
|
|
99
229
|
Operator-facing umbrella for the two non-heavy lanes on each backend:
|
|
100
230
|
|
|
101
|
-
- **Medium / Main** (Claude Sonnet 4.6,
|
|
102
|
-
Sonnet 4.6 via OpenCode) —
|
|
103
|
-
the hourly check, and the
|
|
104
|
-
routines.
|
|
105
|
-
- **Lite / Delegated** (Claude Haiku 4.5
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
the
|
|
231
|
+
- **Medium / Main** (Claude Sonnet 4.6, `gpt-5.4` on Codex,
|
|
232
|
+
`gemini-3.1-pro-preview` on Gemini, Sonnet 4.6 via OpenCode) —
|
|
233
|
+
default for owner DMs, dashboard chat, the hourly check, and the
|
|
234
|
+
morning / evening / weekly review routines.
|
|
235
|
+
- **Lite / Delegated** (Claude Haiku 4.5, `gpt-5.4-mini` on Codex,
|
|
236
|
+
`gemini-3.1-flash-lite-preview` on Gemini, Haiku 4.5 via OpenCode) —
|
|
237
|
+
reserved for mechanical / delegated surfaces: Gmail classification,
|
|
238
|
+
GitHub triage, calendar-change handlers, the routine pre-pass
|
|
239
|
+
fetcher, the `delegated_task` invoker.
|
|
109
240
|
|
|
110
241
|
## OpenCode
|
|
111
242
|
|
|
@@ -128,6 +259,16 @@ main routine then consumes the resulting `<fetch_report>` block and
|
|
|
128
259
|
pending observations instead of calling upstream APIs itself. Introduced
|
|
129
260
|
in 2026-05 to trim morning-routine input tokens by ~24%.
|
|
130
261
|
|
|
262
|
+
## Observation
|
|
263
|
+
|
|
264
|
+
One row in the `observations` table. A change record a polling
|
|
265
|
+
integration (Obsidian, Git, Notion, calendar, mail, browser history)
|
|
266
|
+
or a `routine.fetch_window` pre-pass wrote into SQLite. The
|
|
267
|
+
`routine.hourly_check` is the consumer — there is no per-change
|
|
268
|
+
notification. `actor='agent'` rows are filtered out by the consumer
|
|
269
|
+
to break the agent-observing-its-own-writes loop. See
|
|
270
|
+
[Observations](concepts/observations.md).
|
|
271
|
+
|
|
131
272
|
## ProcessKey
|
|
132
273
|
|
|
133
274
|
The branded string identifier for a class of agent invocation, e.g.
|
|
@@ -135,12 +276,40 @@ The branded string identifier for a class of agent invocation, e.g.
|
|
|
135
276
|
backend selection, skill manifest, agent profile, and task-flow
|
|
136
277
|
template lookup. Defined in `packages/shared/src/process-key.ts`.
|
|
137
278
|
|
|
279
|
+
## Research Cluster
|
|
280
|
+
|
|
281
|
+
A topic the browser-history poller derives from a user's reading
|
|
282
|
+
pattern when meaningful visits, foreground time, and distinct domains
|
|
283
|
+
cross a threshold. Each cluster has a slug, a display name, a journal
|
|
284
|
+
file at `context/research/<slug>.md`, and a status
|
|
285
|
+
(`active | dormant | muted | concluded`). Surfaced via the
|
|
286
|
+
**Two-Option Offer DM** (research dive vs. wiki summary) and the
|
|
287
|
+
[`!research`](features/messaging/bang-commands.md) bang prefix.
|
|
288
|
+
|
|
289
|
+
## Schema Migration
|
|
290
|
+
|
|
291
|
+
Forward-only, append-only, idempotent migration entry in
|
|
292
|
+
`packages/daemon/src/db/migrations.ts:MIGRATIONS`. Runs right after
|
|
293
|
+
`applySchema(db)` at boot; applied ids are recorded in
|
|
294
|
+
`schema_migrations` so each runs at most once per DB. Used for any
|
|
295
|
+
non-additive change to a pre-existing structure — `ALTER TABLE ADD
|
|
296
|
+
COLUMN`, `CREATE INDEX` on a column added by a prior migration, data
|
|
297
|
+
backfill, or a `settings_json` shape change whose old value won't parse
|
|
298
|
+
under the new schema. Gating ALTERs behind `columnExists` /
|
|
299
|
+
`tableExists` / `indexExists` keeps a fresh DB (where `applySchema`
|
|
300
|
+
already produced the target state) a no-op. The legacy reinstall
|
|
301
|
+
escape hatch still exists as a last resort, but **migrations are the
|
|
302
|
+
upgrade path** — see [Reinstall Cleanly](guides/reinstall-cleanly.md).
|
|
303
|
+
|
|
138
304
|
## QA Panel
|
|
139
305
|
|
|
140
306
|
The right-side pane on `/docs` and the bottom of the `?`-button
|
|
141
307
|
slide-over that runs grounded question answering over the docs corpus.
|
|
142
|
-
|
|
143
|
-
|
|
308
|
+
Dispatched under the `dashboard.docs_qa` ProcessKey, which is **hard
|
|
309
|
+
tier-locked to medium** (`TIER_LOCKED_PROCESS_KEYS` in
|
|
310
|
+
`packages/shared/src/process-key.ts`) — an operator pin to a different
|
|
311
|
+
tier is ignored. The backend itself is inherited from the operator's
|
|
312
|
+
DM-bound backend via the cascade-write helper.
|
|
144
313
|
|
|
145
314
|
## Skill
|
|
146
315
|
|
|
@@ -157,26 +326,68 @@ the row key in `fts_docs`, and the first half of every
|
|
|
157
326
|
|
|
158
327
|
## Tier
|
|
159
328
|
|
|
160
|
-
Short for **model tier
|
|
161
|
-
|
|
162
|
-
|
|
329
|
+
Short for **model tier**. The code-level enum (`ProcessModelTier` in
|
|
330
|
+
`packages/shared/src/process-key.ts`) has three values — `lite`,
|
|
331
|
+
`medium`, `high`. This doc also uses the operator-facing two-way split
|
|
332
|
+
**light** (lite + medium) vs **heavy** (high); see [Light Tier](#light-tier)
|
|
333
|
+
and [Heavy Tier](#heavy-tier). Each ProcessKey has a default tier;
|
|
334
|
+
per-process pins and per-call requested-tier overrides can deviate from
|
|
335
|
+
that default, except for keys in `TIER_LOCKED_PROCESS_KEYS` (today only
|
|
336
|
+
`dashboard.docs_qa`, locked to medium).
|
|
337
|
+
|
|
338
|
+
## Two-Option Offer DM
|
|
339
|
+
|
|
340
|
+
DM pattern used for research-cluster offers and any other follow-up
|
|
341
|
+
where the user has two natural choices. Sends one DM with two distinct
|
|
342
|
+
actions (e.g. "research dive" vs. "wiki summary") instead of a single
|
|
343
|
+
yes/no prompt; the user replies with the matching `!research` subcommand
|
|
344
|
+
to accept either path. Replaces the older single-option offer for
|
|
345
|
+
ambiguous-intent surfaces.
|
|
163
346
|
|
|
164
347
|
## Today.md
|
|
165
348
|
|
|
166
349
|
The current agent day's main memory file under
|
|
167
|
-
`~/.personal-agent/context/today.md`. Rebuilt once per day by the
|
|
350
|
+
`~/.personal-agent/context/state/today.md`. Rebuilt once per day by the
|
|
168
351
|
morning routine and edited by every DM, observation, and routine that
|
|
169
352
|
needs to record state for the day.
|
|
170
353
|
|
|
171
354
|
## Wiki Workspace
|
|
172
355
|
|
|
173
356
|
A single named root the wiki feature writes into. Either **internal**
|
|
174
|
-
(`~/.personal-agent/wiki/`
|
|
175
|
-
|
|
176
|
-
|
|
357
|
+
(`~/.personal-agent/context/knowledge/wiki/` after the context-vault v2 restructure;
|
|
358
|
+
pre-v2 installs lived at `~/.personal-agent/wiki/`) or **external**
|
|
359
|
+
(a path you point at, often an existing Obsidian vault). Every wiki bang
|
|
360
|
+
command targets a workspace; omitting the `@<workspace>` token addresses the default.
|
|
177
361
|
See [Wiki Overview](features/wiki/overview.md) and
|
|
178
362
|
[Multiple Wikis](guides/multiple-wikis-for-multiple-domains.md).
|
|
179
363
|
|
|
364
|
+
## Authority Class
|
|
365
|
+
|
|
366
|
+
One of the six top-level partitions of the vault — `identity/`, `state/`,
|
|
367
|
+
`plans/`, `journal/`, `knowledge/`, `policies/`. Each class carries a
|
|
368
|
+
distinct authority + lifecycle contract; the daemon enforces by reading
|
|
369
|
+
file frontmatter (Phase 1 advisory; Phase 2 strict). Established by the
|
|
370
|
+
context-vault v2 restructure (CONTEXT_VAULT_REDESIGN_PLAN.md). See
|
|
371
|
+
[Knowledge Layout](reference/knowledge-layout.md) for what lives in each.
|
|
372
|
+
|
|
373
|
+
## Context Vault v2
|
|
374
|
+
|
|
375
|
+
The vault layout introduced by the context-vault v2 restructure
|
|
376
|
+
(migration id `0004-context-vault-restructure`) — six authority classes,
|
|
377
|
+
in-process legacy path alias, `wiki/` and `integrations.md` and user
|
|
378
|
+
`skills/` consolidated under the vault root. Migrates forward-only on
|
|
379
|
+
first boot of the cutover release; never destroys user data. See
|
|
380
|
+
[Knowledge Layout](reference/knowledge-layout.md).
|
|
381
|
+
|
|
382
|
+
## Frontmatter Contract
|
|
383
|
+
|
|
384
|
+
YAML preamble in each vault MD file declaring `kind` (one of the six
|
|
385
|
+
class names), `authority` (`user` / `agent` / `mixed`), `mutability`
|
|
386
|
+
(`replace` / `patch` / `append` / `readonly`), `slug`, and `title`.
|
|
387
|
+
Parsed by `core/context-validation/frontmatter.ts`. Phase 1 logs
|
|
388
|
+
warnings on missing/invalid frontmatter; Phase 2 rejects the write.
|
|
389
|
+
Toggle: `runtimeSettings.contextVault.enforceFrontmatter` (default `false`).
|
|
390
|
+
|
|
180
391
|
## Wiki Layers
|
|
181
392
|
|
|
182
393
|
The four directories every workspace contains:
|
|
@@ -10,30 +10,42 @@ aliases:
|
|
|
10
10
|
- scheduled task
|
|
11
11
|
category: guides
|
|
12
12
|
summary: |
|
|
13
|
-
Define a new autonomous routine — slug, cron expression, tier, and
|
|
13
|
+
Define a new autonomous routine — slug, cron expression, model tier, and
|
|
14
14
|
budget cap — via /settings/routines. The form writes a vault file at
|
|
15
|
-
routines/custom/<slug>.md.
|
|
15
|
+
policies/routines/custom/<slug>.md; saving it registers the cron job.
|
|
16
16
|
section: add-a-custom-routine
|
|
17
17
|
tags:
|
|
18
|
-
-
|
|
18
|
+
- guides
|
|
19
19
|
- routines
|
|
20
20
|
- scheduler
|
|
21
|
+
- autonomous
|
|
22
|
+
- core
|
|
21
23
|
status: stable
|
|
22
24
|
ask_examples:
|
|
23
25
|
- How do I add a custom routine?
|
|
24
26
|
- What can a custom routine do?
|
|
27
|
+
- How do I schedule the agent to run on a cron?
|
|
25
28
|
locale: en-US
|
|
26
29
|
created: 2026-04-25
|
|
27
|
-
updated: 2026-
|
|
30
|
+
updated: 2026-05-28
|
|
28
31
|
keywords:
|
|
29
32
|
- custom routine
|
|
30
33
|
- schedule
|
|
31
34
|
- cron
|
|
32
35
|
- recurrence
|
|
33
|
-
-
|
|
36
|
+
- backend_tier
|
|
37
|
+
- process_key
|
|
38
|
+
ui_anchors:
|
|
39
|
+
- /settings/routines
|
|
40
|
+
api_endpoints:
|
|
41
|
+
- PUT /api/context/*
|
|
42
|
+
context_files:
|
|
43
|
+
- policies/routines/custom/<slug>.md
|
|
34
44
|
related:
|
|
35
45
|
- features/routines/custom-routines
|
|
36
46
|
- concepts/routines
|
|
47
|
+
- concepts/process-keys
|
|
48
|
+
- concepts/backends-and-tiers
|
|
37
49
|
---
|
|
38
50
|
|
|
39
51
|
# Add a Custom Routine
|
|
@@ -50,22 +62,48 @@ Make the agent fire a particular kind of work on a schedule you pick.
|
|
|
50
62
|
|
|
51
63
|
1. Open `/settings/routines` (the older `/connections/routines` URL
|
|
52
64
|
redirects here).
|
|
53
|
-
2. Click
|
|
65
|
+
2. Click **Add**. The "New custom routine" dialog opens.
|
|
54
66
|
3. Fill the form:
|
|
55
|
-
- **Slug** — kebab-case
|
|
56
|
-
|
|
57
|
-
`
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
67
|
+
- **Slug** — lowercase kebab-case, 1–64 chars, no leading/trailing
|
|
68
|
+
hyphen (e.g. `tuesday-notion-sweep`). It becomes the ProcessKey
|
|
69
|
+
`routine.custom.<slug>` and the file name
|
|
70
|
+
`policies/routines/custom/<slug>.md`.
|
|
71
|
+
- **Cron expression** — standard 5-field cron in the daemon's
|
|
72
|
+
timezone (e.g. `0 11 * * 2` for 11:00 every Tuesday). The dialog
|
|
73
|
+
previews the next three fire times.
|
|
74
|
+
- **Backend tier** — `lite` (Haiku), `medium` (Sonnet), or `high`
|
|
75
|
+
(Opus). Default is `medium`. Custom routines have no concrete
|
|
76
|
+
model picker; the tier is written to the file's `backend_tier`
|
|
77
|
+
frontmatter, and the BackendRouter resolves the actual model at
|
|
78
|
+
fire time. (See [Backends and tiers](../concepts/backends-and-tiers.md).)
|
|
79
|
+
- **Max budget (USD)** — per-execute cap (default `0.05`; must be a
|
|
80
|
+
positive number).
|
|
81
|
+
- **Description** — optional free text. It becomes the body of the
|
|
82
|
+
generated vault file, above an empty `## Checks` section seeded
|
|
83
|
+
with a `### First check` placeholder. Edit the file later on the
|
|
84
|
+
same page to flesh out the check list.
|
|
85
|
+
4. Click **Create**. The dashboard writes the vault file via the
|
|
86
|
+
context API (`PUT /api/context/policies/routines/custom/<slug>`).
|
|
87
|
+
Because the file ships with `enabled: true` and a `cron:` field,
|
|
88
|
+
saving it registers (or refreshes) the cron job, and the next-fire
|
|
89
|
+
timestamp appears in the routine list.
|
|
90
|
+
|
|
91
|
+
The generated file looks roughly like this:
|
|
92
|
+
|
|
93
|
+
```yaml
|
|
94
|
+
---
|
|
95
|
+
type: rule
|
|
96
|
+
slug: tuesday-notion-sweep
|
|
97
|
+
cron: "0 11 * * 2"
|
|
98
|
+
process_key: routine.custom.tuesday-notion-sweep
|
|
99
|
+
enabled: true
|
|
100
|
+
backend_tier: medium
|
|
101
|
+
max_budget_usd: 0.05
|
|
102
|
+
---
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
To stop a routine without deleting it, set `enabled: false` in the
|
|
106
|
+
file and save — that unregisters the cron job.
|
|
69
107
|
|
|
70
108
|
## Verification
|
|
71
109
|
|
|
@@ -74,9 +112,11 @@ Make the agent fire a particular kind of work on a schedule you pick.
|
|
|
74
112
|
|
|
75
113
|
## If It Fails
|
|
76
114
|
|
|
77
|
-
- A cron that resolves to "never"
|
|
78
|
-
|
|
79
|
-
|
|
115
|
+
- A cron that resolves to "never" (or is otherwise invalid): the
|
|
116
|
+
dialog shows the preview error and refuses to save it.
|
|
117
|
+
- A prompt that hits the absolute-block guardrails: the routine fires
|
|
118
|
+
but the offending tool call is logged as `blocked_absolute` in the
|
|
119
|
+
action log.
|
|
80
120
|
|
|
81
121
|
## Related
|
|
82
122
|
|
|
@@ -10,29 +10,33 @@ aliases:
|
|
|
10
10
|
- context backup
|
|
11
11
|
category: guides
|
|
12
12
|
summary: |
|
|
13
|
-
Aitne's
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
Aitne's durable state lives in one directory — PA_DATA_DIR
|
|
14
|
+
(~/.personal-agent), holding the SQLite database and the context
|
|
15
|
+
Markdown vault. Back it up with a tar after stopping the daemon;
|
|
16
|
+
restoring is a tar extract. Secrets live in the OS keychain, not
|
|
17
|
+
this directory, so re-register them after a restore.
|
|
16
18
|
section: backup-and-restore
|
|
17
19
|
tags:
|
|
18
|
-
-
|
|
20
|
+
- guides
|
|
19
21
|
- operations
|
|
20
22
|
- backup
|
|
21
23
|
status: stable
|
|
22
24
|
ask_examples:
|
|
23
25
|
- How do I back up Aitne?
|
|
24
26
|
- Can I restore on a new machine?
|
|
27
|
+
- Why are my API keys gone after restoring a backup?
|
|
25
28
|
locale: en-US
|
|
26
29
|
created: 2026-04-25
|
|
27
|
-
updated: 2026-
|
|
30
|
+
updated: 2026-05-28
|
|
28
31
|
keywords:
|
|
29
32
|
- backup
|
|
30
33
|
- restore
|
|
31
34
|
- tarball
|
|
32
|
-
- rsync
|
|
33
|
-
- git
|
|
34
35
|
- PA_DATA_DIR
|
|
35
36
|
- snapshot
|
|
37
|
+
- keychain
|
|
38
|
+
- secrets
|
|
39
|
+
- SQLite
|
|
36
40
|
related:
|
|
37
41
|
- guides/reinstall-cleanly
|
|
38
42
|
- guides/migrate-machines
|
|
@@ -42,25 +46,85 @@ related:
|
|
|
42
46
|
|
|
43
47
|
## Goal
|
|
44
48
|
|
|
45
|
-
Capture all Aitne state in a tar
|
|
49
|
+
Capture all of Aitne's durable state in a single tar archive you can
|
|
50
|
+
restore later — on this machine or a fresh one.
|
|
51
|
+
|
|
52
|
+
## What's in the backup (and what isn't)
|
|
53
|
+
|
|
54
|
+
Everything Aitne persists lives under `PA_DATA_DIR` (default
|
|
55
|
+
`~/.personal-agent`), so backing up that one directory captures it all:
|
|
56
|
+
|
|
57
|
+
- `data/personal_agent.db` — sessions, actions, observations, FTS index
|
|
58
|
+
(plus the `-wal` / `-shm` companion files while the daemon runs).
|
|
59
|
+
- `context/` — the Markdown memory vault (today, roadmap, journal,
|
|
60
|
+
knowledge, identity, policies, …).
|
|
61
|
+
- Logs, PID files, and prompts.
|
|
62
|
+
|
|
63
|
+
**Not in the tar — re-register these after a restore:**
|
|
64
|
+
|
|
65
|
+
- **Secrets** (Anthropic / OpenAI / Google API keys, etc.) live in the
|
|
66
|
+
OS keychain, *not* under `~/.personal-agent`, so a tar never includes
|
|
67
|
+
them.
|
|
68
|
+
- **Messaging pairings** (Slack / Telegram / Discord / WhatsApp tokens)
|
|
69
|
+
are likewise keychain-backed.
|
|
70
|
+
|
|
71
|
+
Both are re-added through the dashboard after restore.
|
|
46
72
|
|
|
47
73
|
## Steps
|
|
48
74
|
|
|
49
|
-
1.
|
|
50
|
-
|
|
51
|
-
|
|
75
|
+
1. **Stop the daemon** so the SQLite write-ahead log is checkpointed and
|
|
76
|
+
the snapshot is consistent:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
aitne stop
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
2. **Create the archive** (capturing the whole data directory in one
|
|
83
|
+
shot):
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
tar -czf personal-agent-backup-$(date +%F).tgz ~/.personal-agent/
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
3. **Restore** by extracting the tar to your home directory, then
|
|
90
|
+
starting the daemon:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
tar -xzf personal-agent-backup-2026-05-28.tgz -C ~/
|
|
94
|
+
aitne start
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Schema migrations run automatically on the first boot (see below), so
|
|
98
|
+
an older DB is brought up to the current shape without extra steps.
|
|
99
|
+
|
|
100
|
+
4. **Re-register secrets and re-pair messaging** through the dashboard —
|
|
101
|
+
they were never in the tar.
|
|
52
102
|
|
|
53
103
|
## Verification
|
|
54
104
|
|
|
55
|
-
-
|
|
105
|
+
- `aitne status` reports the daemon healthy.
|
|
106
|
+
- The Activity feed shows your historical rows after restore.
|
|
56
107
|
- Context files match the originals.
|
|
57
108
|
|
|
58
109
|
## If It Fails
|
|
59
110
|
|
|
60
|
-
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
111
|
+
- **Schema mismatch on restore.** Aitne ships forward-only schema
|
|
112
|
+
migrations applied automatically at boot (see
|
|
113
|
+
[Schema Migration](../glossary.md#schema-migration)), so a restored DB
|
|
114
|
+
from an older daemon version usually just works — the migration runner
|
|
115
|
+
brings it up to the current shape on the next start. Only fall back to
|
|
116
|
+
dropping the DB (see [Reinstall Cleanly](reinstall-cleanly.md)) if the
|
|
117
|
+
daemon refuses to start *after* you've checked the log
|
|
118
|
+
(`aitne logs`) for a real migration error.
|
|
119
|
+
- **The agent can't reach its backends after restore.** That's the
|
|
120
|
+
missing keychain secrets — re-add your API keys in the dashboard
|
|
121
|
+
(Step 4). The DB and context restore fine without them.
|
|
122
|
+
|
|
123
|
+
## Moving to a different machine?
|
|
124
|
+
|
|
125
|
+
This guide backs up and restores in place. To copy state to another host
|
|
126
|
+
(including the keychain re-registration walkthrough), follow
|
|
127
|
+
[Migrate Machines](migrate-machines.md).
|
|
64
128
|
|
|
65
129
|
## Related
|
|
66
130
|
|