@aitne-sh/aitne 0.1.12 → 0.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/agent-assets/agent-profiles/background-task.md +8 -1
  2. package/agent-assets/agent-profiles/routine-fetch-window.md +11 -0
  3. package/agent-assets/agents/evening-review/agent.md +6 -2
  4. package/agent-assets/agents/lesson-maintenance/agent.md +56 -0
  5. package/agent-assets/agents/morning-routine/agent.md +7 -2
  6. package/agent-assets/agents/source-librarian/agent.md +51 -0
  7. package/agent-assets/docs/concepts/agent-day.md +15 -15
  8. package/agent-assets/docs/concepts/auth-health.md +10 -7
  9. package/agent-assets/docs/concepts/backends-and-tiers.md +21 -13
  10. package/agent-assets/docs/concepts/costs-and-quotas.md +10 -10
  11. package/agent-assets/docs/concepts/delegated-mode.md +18 -18
  12. package/agent-assets/docs/concepts/memory-model.md +25 -24
  13. package/agent-assets/docs/concepts/observations.md +27 -19
  14. package/agent-assets/docs/concepts/process-keys.md +25 -26
  15. package/agent-assets/docs/concepts/routines.md +18 -17
  16. package/agent-assets/docs/concepts/safety-and-execution.md +20 -17
  17. package/agent-assets/docs/concepts/safety-model.md +16 -15
  18. package/agent-assets/docs/concepts/skills.md +7 -4
  19. package/agent-assets/docs/features/integrations/browser-history.md +52 -47
  20. package/agent-assets/docs/features/integrations/calendar.md +7 -7
  21. package/agent-assets/docs/features/integrations/git.md +15 -13
  22. package/agent-assets/docs/features/integrations/github.md +12 -10
  23. package/agent-assets/docs/features/integrations/mail.md +47 -45
  24. package/agent-assets/docs/features/integrations/notion.md +15 -11
  25. package/agent-assets/docs/features/integrations/obsidian.md +27 -23
  26. package/agent-assets/docs/features/lifestyle/git.md +7 -8
  27. package/agent-assets/docs/features/lifestyle/reading.md +11 -8
  28. package/agent-assets/docs/features/lifestyle/receipts.md +21 -22
  29. package/agent-assets/docs/features/lifestyle/travel-bookings.md +9 -9
  30. package/agent-assets/docs/features/memory-files/agent-journal.md +12 -10
  31. package/agent-assets/docs/features/memory-files/agent-lessons.md +46 -21
  32. package/agent-assets/docs/features/memory-files/projects.md +13 -14
  33. package/agent-assets/docs/features/memory-files/roadmap.md +16 -15
  34. package/agent-assets/docs/features/memory-files/schedule.md +10 -10
  35. package/agent-assets/docs/features/memory-files/today.md +18 -18
  36. package/agent-assets/docs/features/memory-files/user-profile.md +17 -17
  37. package/agent-assets/docs/features/messaging/bang-commands.md +15 -15
  38. package/agent-assets/docs/features/messaging/dashboard-chat.md +7 -6
  39. package/agent-assets/docs/features/messaging/discord.md +7 -5
  40. package/agent-assets/docs/features/messaging/overview.md +14 -14
  41. package/agent-assets/docs/features/messaging/pairing-and-magic-phrase.md +12 -12
  42. package/agent-assets/docs/features/messaging/slack.md +9 -8
  43. package/agent-assets/docs/features/messaging/telegram.md +7 -7
  44. package/agent-assets/docs/features/messaging/whatsapp.md +6 -6
  45. package/agent-assets/docs/features/operations/activity-and-conversations.md +9 -9
  46. package/agent-assets/docs/features/operations/approvals.md +13 -12
  47. package/agent-assets/docs/features/operations/backend-routing.md +38 -37
  48. package/agent-assets/docs/features/operations/browser-tasks.md +63 -57
  49. package/agent-assets/docs/features/operations/cost-tracking.md +5 -5
  50. package/agent-assets/docs/features/operations/managed-chromium.md +23 -22
  51. package/agent-assets/docs/features/operations/notifications.md +15 -15
  52. package/agent-assets/docs/features/operations/quiet-hours.md +14 -15
  53. package/agent-assets/docs/features/operations/schedule-approaching.md +16 -14
  54. package/agent-assets/docs/features/routines/activity-scan.md +14 -11
  55. package/agent-assets/docs/features/routines/custom-routines.md +9 -7
  56. package/agent-assets/docs/features/routines/evening-review.md +6 -7
  57. package/agent-assets/docs/features/routines/morning-routine.md +22 -21
  58. package/agent-assets/docs/features/routines/weekly-review.md +57 -51
  59. package/agent-assets/docs/features/wiki/commands.md +27 -21
  60. package/agent-assets/docs/features/wiki/cost-and-approval.md +28 -23
  61. package/agent-assets/docs/features/wiki/dashboard.md +21 -23
  62. package/agent-assets/docs/features/wiki/overview.md +17 -25
  63. package/agent-assets/docs/features/wiki/search.md +15 -17
  64. package/agent-assets/docs/features/wiki/workspaces.md +55 -56
  65. package/agent-assets/docs/getting-started/01-what-is-this.md +3 -4
  66. package/agent-assets/docs/getting-started/02-first-steps.md +12 -13
  67. package/agent-assets/docs/getting-started/03-what-can-this-do.md +7 -7
  68. package/agent-assets/docs/getting-started/04-first-day.md +4 -5
  69. package/agent-assets/docs/glossary.md +17 -16
  70. package/agent-assets/docs/guides/add-a-custom-routine.md +17 -12
  71. package/agent-assets/docs/guides/backup-and-restore.md +19 -16
  72. package/agent-assets/docs/guides/budget-and-cost-for-wiki.md +55 -62
  73. package/agent-assets/docs/guides/build-your-wiki.md +11 -12
  74. package/agent-assets/docs/guides/change-which-model-handles-x.md +30 -28
  75. package/agent-assets/docs/guides/connect-a-new-mail-account.md +30 -29
  76. package/agent-assets/docs/guides/explore-with-trace-and-connect.md +30 -32
  77. package/agent-assets/docs/guides/import-knowledge-file.md +9 -10
  78. package/agent-assets/docs/guides/install-and-run.md +9 -10
  79. package/agent-assets/docs/guides/maintain-wiki-health.md +10 -10
  80. package/agent-assets/docs/guides/migrate-machines.md +16 -14
  81. package/agent-assets/docs/guides/multiple-wikis-for-multiple-domains.md +11 -12
  82. package/agent-assets/docs/guides/pause-the-agent.md +25 -25
  83. package/agent-assets/docs/guides/reinstall-cleanly.md +13 -12
  84. package/agent-assets/docs/guides/setup-wizard.md +9 -11
  85. package/agent-assets/docs/guides/switch-default-backend.md +9 -9
  86. package/agent-assets/docs/guides/use-an-existing-obsidian-vault.md +9 -11
  87. package/agent-assets/docs/pages/activity.md +76 -0
  88. package/agent-assets/docs/pages/agents.md +78 -0
  89. package/agent-assets/docs/pages/analytics.md +70 -0
  90. package/agent-assets/docs/pages/browser.md +73 -0
  91. package/agent-assets/docs/pages/chat.md +67 -0
  92. package/agent-assets/docs/pages/connections.md +78 -0
  93. package/agent-assets/docs/pages/git.md +73 -0
  94. package/agent-assets/docs/pages/knowledge.md +75 -0
  95. package/agent-assets/docs/pages/overview.md +90 -0
  96. package/agent-assets/docs/pages/reading.md +65 -0
  97. package/agent-assets/docs/pages/settings.md +77 -0
  98. package/agent-assets/docs/pages/tasks.md +74 -0
  99. package/agent-assets/docs/pages/wiki.md +73 -0
  100. package/agent-assets/docs/reference/api.md +18 -17
  101. package/agent-assets/docs/reference/cli-commands.md +13 -10
  102. package/agent-assets/docs/reference/config.md +40 -35
  103. package/agent-assets/docs/reference/disallowed-tools.md +18 -17
  104. package/agent-assets/docs/reference/keyboard-shortcuts.md +6 -8
  105. package/agent-assets/docs/reference/knowledge-layout.md +10 -10
  106. package/agent-assets/docs/reference/process-keys.md +20 -22
  107. package/agent-assets/docs/reference/skills.md +18 -16
  108. package/agent-assets/docs/troubleshooting/auth-failed.md +13 -11
  109. package/agent-assets/docs/troubleshooting/dashboard-shows-degraded.md +10 -10
  110. package/agent-assets/docs/troubleshooting/fallback-keeps-firing.md +26 -24
  111. package/agent-assets/docs/troubleshooting/messaging-not-pairing.md +8 -9
  112. package/agent-assets/docs/troubleshooting/morning-routine-didnt-run.md +19 -18
  113. package/agent-assets/docs/troubleshooting/observation-not-detected.md +14 -15
  114. package/agent-assets/docs/troubleshooting/quota-exhausted.md +28 -26
  115. package/agent-assets/docs/troubleshooting/wiki-ingest-full-blocked.md +35 -34
  116. package/agent-assets/docs/troubleshooting/wiki-write-failed.md +21 -24
  117. package/agent-assets/skills/agent-create/SKILL.md +39 -5
  118. package/agent-assets/skills/background-task/SKILL.md +9 -4
  119. package/agent-assets/skills/board/SKILL.md +8 -9
  120. package/agent-assets/skills/browser-task/SKILL.md +2 -0
  121. package/agent-assets/skills/context/seeds/file-responsibilities.seed.json +2 -1
  122. package/agent-assets/skills/schedule/SKILL.md +6 -5
  123. package/agent-assets/skills/sources/SKILL.md +68 -0
  124. package/agent-assets/skills/sources/curation.json +21 -0
  125. package/agent-assets/skills/sources/seeds/filing-rules.seed.json +25 -0
  126. package/agent-assets/skills/sources/seeds/source-collections.seed.json +20 -0
  127. package/agent-assets/skills/task/SKILL.md +5 -2
  128. package/agent-assets/task-flows/background_task.md +29 -3
  129. package/agent-assets/task-flows/message.received.dm.md +1 -1
  130. package/agent-assets/task-flows/routine.activity_scan.md +17 -2
  131. package/agent-assets/task-flows/routine.evening_review.md +72 -11
  132. package/agent-assets/task-flows/routine.fetch_window.md +21 -0
  133. package/agent-assets/task-flows/routine.monthly_review.md +3 -1
  134. package/agent-assets/task-flows/routine.morning_routine_today.md +26 -7
  135. package/agent-assets/task-flows/routine.source_maintenance.md +50 -0
  136. package/agent-assets/task-flows/scheduled.dm.md +8 -3
  137. package/agent-assets/templates/_manifest.json +1 -0
  138. package/agent-assets/templates/knowledge/sources/_index.md +19 -0
  139. package/package.json +4 -4
@@ -17,7 +17,6 @@ summary: |
17
17
  this directory, so re-register them after a restore.
18
18
  section: backup-and-restore
19
19
  tags:
20
- - guides
21
20
  - operations
22
21
  - backup
23
22
  status: stable
@@ -27,7 +26,7 @@ ask_examples:
27
26
  - Why are my API keys gone after restoring a backup?
28
27
  locale: en-US
29
28
  created: 2026-04-25
30
- updated: 2026-05-28
29
+ updated: 2026-07-01
31
30
  keywords:
32
31
  - backup
33
32
  - restore
@@ -46,12 +45,12 @@ related:
46
45
 
47
46
  ## Goal
48
47
 
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.
48
+ Save everything Aitne keeps on disk into a single tar archive (a `.tgz`
49
+ file) that you can restore later — on this machine or a new one.
51
50
 
52
51
  ## What's in the backup (and what isn't)
53
52
 
54
- Everything Aitne persists lives under `PA_DATA_DIR` (default
53
+ Everything Aitne saves lives under `PA_DATA_DIR` (default
55
54
  `~/.personal-agent`), so backing up that one directory captures it all:
56
55
 
57
56
  - `data/personal_agent.db` — sessions, actions, observations, FTS index
@@ -72,8 +71,9 @@ Both are re-added through the dashboard after restore.
72
71
 
73
72
  ## Steps
74
73
 
75
- 1. **Stop the daemon** so the SQLite write-ahead log is checkpointed and
76
- the snapshot is consistent:
74
+ 1. **Stop the daemon** (Aitne's background service). This flushes any
75
+ pending database writes to disk — the SQLite write-ahead log is
76
+ checkpointed — so your snapshot is a clean, consistent copy:
77
77
 
78
78
  ```bash
79
79
  aitne stop
@@ -95,7 +95,8 @@ Both are re-added through the dashboard after restore.
95
95
  ```
96
96
 
97
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.
98
+ Aitne upgrades an older database to the current shape without extra
99
+ steps.
99
100
 
100
101
  4. **Re-register secrets and re-pair messaging** through the dashboard —
101
102
  they were never in the tar.
@@ -109,16 +110,18 @@ Both are re-added through the dashboard after restore.
109
110
  ## If It Fails
110
111
 
111
112
  - **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.
113
+ migrations they only ever upgrade a database, never downgrade it —
114
+ and applies them automatically at boot (see
115
+ [Schema Migration](../glossary.md#schema-migration)), so a restored
116
+ database from an older daemon version usually just works: the migration
117
+ runner brings it up to the current shape on the next start. Only fall
118
+ back to dropping the database (see
119
+ [Reinstall Cleanly](reinstall-cleanly.md)) if the daemon refuses to
120
+ start *after* you've checked the log (`aitne logs`) for a real
121
+ migration error.
119
122
  - **The agent can't reach its backends after restore.** That's the
120
123
  missing keychain secrets — re-add your API keys in the dashboard
121
- (Step 4). The DB and context restore fine without them.
124
+ (Step 4). The database and context restore fine without them.
122
125
 
123
126
  ## Moving to a different machine?
124
127
 
@@ -15,7 +15,6 @@ summary: |
15
15
  to tune the threshold.
16
16
  section: budget-and-cost-for-wiki
17
17
  tags:
18
- - guides
19
18
  - wiki
20
19
  - cost
21
20
  - approval
@@ -27,7 +26,7 @@ ask_examples:
27
26
  - What does the pre-compile snapshot do?
28
27
  locale: en-US
29
28
  created: 2026-05-12
30
- updated: 2026-06-07
29
+ updated: 2026-07-01
31
30
  keywords:
32
31
  - wiki budget
33
32
  - wiki cost
@@ -56,92 +55,86 @@ ui_anchors:
56
55
 
57
56
  # Wiki Budgets and Cost
58
57
 
59
- The wiki ships with three cost knobs you can tune in
60
- **Settings Wiki** (`/settings/wiki`):
58
+ This is the operator's walkthrough for keeping wiki spending under
59
+ control. For the deep mechanics — exactly how the estimate is
60
+ computed and how the approval gate decides — see
61
+ [features/wiki/cost-and-approval](../features/wiki/cost-and-approval.md).
61
62
 
62
- 1. **Per-command model selector** for each wiki process. The model
63
- picker covers the full set: `wiki.ingest_url`, `wiki.compile`,
64
- `wiki.ask`, plus the operational triad `wiki.lint`, `wiki.trace`,
65
- `wiki.connect`. Each defaults to your main backend at the medium
66
- tier; downgrade `wiki.ingest_url` to a lite tier if you ingest a
67
- lot of URLs.
63
+ The wiki gives you three cost knobs, all in **Settings → Wiki**
64
+ (`/settings/wiki`):
65
+
66
+ 1. **Per-command model picker** one model per wiki process. The
67
+ picker covers `wiki.ingest_url`, `wiki.compile`, and `wiki.ask`,
68
+ plus the operational trio `wiki.lint`, `wiki.trace`, and
69
+ `wiki.connect`. Each starts on your main backend at the medium
70
+ tier. If you ingest a lot of URLs, drop `wiki.ingest_url` to a lite
71
+ tier to save money.
68
72
  2. **Per-process budget cap** (`max_budget_usd` on each row). The
69
- dispatcher's per-session budget envelope is the enforcer.
73
+ dispatcher's per-session budget envelope enforces it.
70
74
  3. **Per-workspace `!compile full` approval threshold** (default
71
- $2.00, range $0–$100). The cost estimator brackets the expected
72
- spend at 0.5× / 1× / 2× the estimated input-token count; if the
73
- pessimistic (2×) estimate breaches the threshold, the bang handler
74
- escalates to the approval queue instead of running autonomously.
75
+ $2.00, range $0–$100). The estimator brackets the likely spend at
76
+ 0.5× / 1× / 2× the estimated input-token count; if the worst-case
77
+ (2×) number crosses the threshold, `!compile full` asks for
78
+ approval instead of running on its own.
75
79
 
76
80
  ## What the Estimator Does
77
81
 
78
82
  `!compile full` is the most expensive wiki command because a full
79
- rebuild touches every raw note. The estimator is **pure JS** it
80
- does not spawn an agent (spawning one to estimate would itself burn
81
- budget). It walks the `10_raw/` layer, approximates each file's token
82
- count from its on-disk character count, sums the total, and brackets:
83
-
84
- ```
85
- expected_usd = total_estimated_input_tokens / 1000 × $0.003
86
- optimistic = 0.5 × expected
87
- pessimistic = 2.0 × expected
88
- ```
89
-
90
- Per-file token approximation is script-aware: ~4 characters per token
91
- for Latin/prose, ~1.5 for majority-CJK files, with a 200-token floor
92
- per file so empty or one-line stubs still account for the fixed
93
- per-call overhead (system prompt, skills bundle, tool docs). The unit
94
- cost (`$0.003` per 1k tokens) matches Claude Sonnet 5's ~$3 /
95
- Mtoken standard input price. (An introductory $2 / Mtoken rate runs
83
+ rebuild touches every raw note. Before it runs, a small piece of
84
+ plain JavaScript estimates the cost it never spawns an agent, since
85
+ spawning one just to estimate would itself burn budget. It walks the
86
+ `10_raw/` layer, approximates each file's token count from its size on
87
+ disk, and reports a low/high bracket so you can weigh a worst case
88
+ before you approve. For the exact character-to-token ratios and the
89
+ 0.5× / bracket math, see
90
+ [features/wiki/cost-and-approval](../features/wiki/cost-and-approval.md).
91
+
92
+ The unit cost (`$0.003` per 1k tokens) matches Claude Sonnet 5's ~$3
93
+ / Mtoken standard input price. (An introductory $2 / Mtoken rate runs
96
94
  through 2026-08-31; the estimate lists the standard rate, while the
97
95
  SDK's billed `total_cost_usd` reflects the intro price during the
98
- window.) The bracket lets you see a worst case before approving.
96
+ window.)
99
97
 
100
98
  > The dashboard surfaces the top raw files by estimated token count,
101
99
  > so you can see which sources dominate the bill before approving.
102
- > An older flat heuristic (`raw_count × 1500 tokens`) survives as an
103
- > opt-in fallback for deterministic banner copy, but the default is
104
- > the per-file character scan described above.
105
100
 
106
101
  ## Where the Gate Fires
107
102
 
108
- - **Below threshold**: the compile runs autonomously and you get a
109
- completion DM with actual spend.
110
- - **Above threshold**: the bang handler inserts an `agent_schedule`
111
- row with `task_type='approval'`, DMs you the estimate, and pauses.
112
- The request shows up as an **Approvals** card on the dashboard home
113
- page (`/`); the `/settings/wiki` page also points you there.
114
- Clicking **Approve** flips the row to `task_type='approved_task'`
115
- and the scheduler picks it up — only then is the pre-compile git
116
- snapshot taken (see below) and the compile session spawned.
103
+ - **Below threshold**: the compile runs on its own, and you get a
104
+ completion DM with the actual spend.
105
+ - **Above threshold**: the compile pauses. It inserts an
106
+ `agent_schedule` row with `task_type='approval'`, DMs you the
107
+ estimate, and waits. The request shows up as an **Approvals** card
108
+ on the dashboard home page (`/`); the `/settings/wiki` page also
109
+ points you there. When you click **Approve**, the row flips to
110
+ `task_type='approved_task'` and the scheduler picks it up — only
111
+ then does Aitne take the pre-compile git snapshot (see below) and
112
+ start the compile session.
117
113
 
118
- If you change your mind, hit **Deny** on the approval card the row
119
- flips to `skipped`, no git commit is made, and no agent session is
120
- spawned.
114
+ Changed your mind? Click **Deny** on the approval card. The row flips
115
+ to `skipped`, no git commit is made, and no agent session runs.
121
116
 
122
117
  ## Git Pre-Compile Snapshot
123
118
 
124
119
  On an external workspace that is a git repo and has **Auto-commit
125
- before `!compile full`** enabled, Aitne runs:
126
-
127
- ```
128
- git -C <vault> status --porcelain
129
- # must be emptydirty trees refuse the operation entirely
130
- git -C <vault> add -A
131
- git -C <vault> commit --allow-empty -m "aitne wiki: pre-compile snapshot <ISO-8601-ts>"
132
- ```
133
-
134
- before the compile session starts. The commit message is
135
- deterministic so you can roll back with `git reset --hard HEAD~1` if
136
- the compile produces a surprise. The `--no-verify` flag is not used —
137
- your pre-commit hooks run as normal.
120
+ before `!compile full`** enabled, Aitne commits the vault
121
+ (`git add -A && git commit`) just before the compile session starts,
122
+ giving you a rollback point. If the compile produces a surprise,
123
+ `git reset --hard HEAD~1` puts the vault back. A dirty working tree
124
+ refuses the operation entirelycommit or stash first, then re-run.
125
+ The commit runs your normal pre-commit hooks (the `--no-verify` flag
126
+ is not used).
138
127
 
139
128
  The estimate DM tells you which snapshot path applies:
140
129
  **"will commit before compile starts"** (clean repo), **"not taken
141
130
  (no git repo)"**, **"disabled by setting"** (auto-commit off), or
142
131
  **"not applicable"** for internal-mode workspaces — those recover via
143
132
  `md_file_snapshots` instead of git. When no git backup will be taken,
144
- you can decide whether to add one before approving.
133
+ you can add one yourself before approving.
134
+
135
+ For the full state-by-state table of what the snapshot gate does in
136
+ each workspace configuration, see
137
+ [features/wiki/cost-and-approval](../features/wiki/cost-and-approval.md).
145
138
 
146
139
  ## Tuning the Threshold
147
140
 
@@ -14,7 +14,6 @@ summary: |
14
14
  notes, and ask a question against the vault.
15
15
  section: build-your-wiki
16
16
  tags:
17
- - guide
18
17
  - wiki
19
18
  - knowledge
20
19
  status: stable
@@ -24,7 +23,7 @@ ask_examples:
24
23
  - How do I compile my ingested notes into wiki articles?
25
24
  locale: en-US
26
25
  created: 2026-05-12
27
- updated: 2026-05-28
26
+ updated: 2026-07-01
28
27
  keywords:
29
28
  - wiki
30
29
  - build wiki
@@ -53,14 +52,14 @@ prerequisites:
53
52
 
54
53
  ## Goal
55
54
 
56
- Stand up the internal wiki, capture a URL, compile it into a wiki
57
- article, and run a question against the result.
55
+ Turn on the internal wiki, capture a URL, compile it into a wiki
56
+ article, and ask a question about the result.
58
57
 
59
58
  ## Prerequisites
60
59
 
61
60
  - A paired messaging channel (Telegram, Slack, Discord, WhatsApp, or
62
61
  dashboard chat) — see
63
- [Pairing and the Magic Phrase](../messaging/pairing-and-magic-phrase.md).
62
+ [Pairing and the Magic Phrase](../features/messaging/pairing-and-magic-phrase.md).
64
63
  - The daemon is running and the dashboard is reachable.
65
64
 
66
65
  ## Where you'll work in the dashboard
@@ -71,8 +70,8 @@ browsing lives under **My Life**.
71
70
 
72
71
  - **My Life → Wiki** (`/wiki`) — your main entry point. Shows
73
72
  workspace stats, the compiled `_index.md`, and recent activity. When
74
- the wiki is not enabled yet, this page renders an **Enable Wiki**
75
- call-to-action.
73
+ the wiki is not enabled yet, this page shows an **Enable Wiki**
74
+ button instead.
76
75
  - **Setup → Settings → Wiki** (`/settings/wiki`) — workspace creation,
77
76
  internal/external mode, per-command model selectors, budgets,
78
77
  archive / delete.
@@ -101,8 +100,8 @@ you enable a workspace, so you do not need to remember the URL.
101
100
  number of URLs queued.
102
101
  5. Wait for the per-URL completion DMs (parallel mode) or the single
103
102
  summary reply (serial mode).
104
- 6. Run `!compile` to compile raw captures into wiki articles. The
105
- compile session synthesises `20_wiki/<slug>.md` files and updates
103
+ 6. Run `!compile` to turn your raw captures into wiki articles. The
104
+ compile session writes `20_wiki/<slug>.md` files and updates
106
105
  `20_wiki/_index.md`.
107
106
  7. Ask a question: `!ask What did this source say about X?`. The
108
107
  answer is written to `30_outputs/<YYYY-MM-DD>-<slug>.md` with
@@ -115,9 +114,9 @@ returns the command list.
115
114
  ## What to Try Next
116
115
 
117
116
  - **Send multiple URLs at once**: `!ingest https://a.com, https://b.com`
118
- fans out in parallel by default. Switch to serial mode on
119
- `/settings/wiki` when you care about ordering and rate
120
- predictability.
117
+ processes them in parallel (all at once) by default. Switch to serial
118
+ mode on `/settings/wiki` when you want them handled one at a time, for
119
+ predictable ordering and request pacing.
121
120
  - **Point at an existing Obsidian vault** instead of the daemon-owned
122
121
  root — see [Use An Existing Obsidian Vault](use-an-existing-obsidian-vault.md).
123
122
  - **Tune the budget** for `wiki.compile` and `wiki.ingest_url` from
@@ -14,7 +14,6 @@ summary: |
14
14
  reasoning, or run a routine on Codex while Claude stays the default.
15
15
  section: change-which-model-handles-x
16
16
  tags:
17
- - guide
18
17
  - backends
19
18
  - operations
20
19
  - routing
@@ -25,7 +24,7 @@ ask_examples:
25
24
  - Can I change the model for just one ProcessKey?
26
25
  locale: en-US
27
26
  created: 2026-04-25
28
- updated: 2026-05-28
27
+ updated: 2026-07-01
29
28
  keywords:
30
29
  - per-process model
31
30
  - /settings/models
@@ -54,50 +53,53 @@ config_keys:
54
53
 
55
54
  ## Goal
56
55
 
57
- Override the default backend or model tier for a **single** ProcessKey
58
- without changing the global default. Use this when one surface needs a
59
- stronger (or cheaper) model than the seeded default for example,
60
- pinning the evening review to Opus (high tier), or pushing a noisy
61
- delegated routine onto Gemini to save Claude quota.
56
+ Change the backend or model tier for a **single** ProcessKey — the label
57
+ the agent gives to one kind of work, such as `routine.evening_review`
58
+ without touching the global default. Reach for this when one job needs a
59
+ stronger (or cheaper) model than the shipped default: pin the evening
60
+ review to Opus (high tier), or push a noisy delegated routine onto Gemini
61
+ to save your Claude quota.
62
62
 
63
63
  ## Steps
64
64
 
65
65
  1. Open `/settings/models`.
66
66
  2. Find the ProcessKey row in the per-process table (e.g.
67
67
  `routine.evening_review`).
68
- 3. Set its **main backend** and **tier** explicitly. The tier maps to a
68
+ 3. Set its **main backend** and **tier** explicitly. Each tier picks a
69
69
  model class — `lite` → Haiku-class, `medium` → Sonnet-class,
70
- `high` → Opus-class. Optionally set a **fallback** backend too.
71
- 4. Save. The row is now marked operator-edited and will keep your pin
72
- through a defaults reset (only an install-time `force` re-seed
73
- overwrites it).
70
+ `high` → Opus-class. You can also set a **fallback** backend to use if
71
+ the main one is unavailable.
72
+ 4. Save. The row is now marked operator-edited, so it keeps your pin
73
+ through a defaults reset — only an install-time `force` re-seed
74
+ overwrites it.
74
75
 
75
76
  ## Concrete Example
76
77
 
77
78
  To give the evening review deeper reasoning, set
78
79
  `routine.evening_review` → main `claude`, tier `high`. The next evening
79
- run resolves to **Opus 4.8** instead of the default Sonnet 5. The
80
- execution budget for that run also scales with the tier (high tier
81
- carries a larger turn / cost envelope than medium).
80
+ run then uses **Opus 4.8** instead of the default Sonnet 5. The run's
81
+ budget scales with the tier too — high tier carries a larger turn and
82
+ cost envelope than medium.
82
83
 
83
84
  ## Verification
84
85
 
85
- - The next fire of that ProcessKey shows the new backend and model in
86
- the **Activity** event detail (after fallback resolution).
86
+ - The next time that ProcessKey runs, its **Activity** event detail
87
+ shows the new backend and model (after fallback resolution).
87
88
 
88
89
  ## Caveats
89
90
 
90
- - **`dashboard.docs_qa` is tier-locked to `medium`** — a high/lite pin
91
- on that row is ignored by the router. It also inherits its backend
92
- from `message.dm`'s pin.
93
- - **High tier is opt-in, not auto-selected.** No install-time-seeded
94
- surface defaults to high; the only `high`-tagged ProcessKey shipped is
95
- `delegated_task_heavy`, gated behind the `delegatedTaskHeavyEnabled`
96
- config flag. Any *other* ProcessKey can still be pinned to high here.
97
- - **On Codex and Gemini there is no separately-seeded high model** —
98
- their high tier collapses to the medium model, so pinning those
99
- backends to high won't change the model unless you pick a specific
100
- higher model in the row.
91
+ - **`dashboard.docs_qa` is tier-locked to `medium`** — the router
92
+ ignores a high or lite pin on that row. It also takes its backend from
93
+ whatever `message.dm` is pinned to.
94
+ - **High tier is opt-in, never auto-selected.** No shipped surface
95
+ defaults to high. The only `high`-tagged ProcessKey out of the box is
96
+ `delegated_task_heavy`, and that stays behind the
97
+ `delegatedTaskHeavyEnabled` config flag. You can still pin any *other*
98
+ ProcessKey to high here.
99
+ - **Codex and Gemini ship no separate high model.** On those backends
100
+ the high tier falls back to the medium model, so pinning them to high
101
+ changes nothing unless you also pick a specific higher model in the
102
+ row.
101
103
  - To change the backend for *every* ProcessKey at once, use the global
102
104
  default instead — see Related.
103
105
 
@@ -17,7 +17,6 @@ summary: |
17
17
  use an app password.
18
18
  section: connect-a-new-mail-account
19
19
  tags:
20
- - guide
21
20
  - mail
22
21
  - integrations
23
22
  status: stable
@@ -27,7 +26,7 @@ ask_examples:
27
26
  - How do I connect an Outlook mailbox?
28
27
  locale: en-US
29
28
  created: 2026-04-25
30
- updated: 2026-06-07
29
+ updated: 2026-07-01
31
30
  keywords:
32
31
  - mail
33
32
  - imap
@@ -62,17 +61,17 @@ and search it.
62
61
 
63
62
  ## Supported providers
64
63
 
65
- The mail registry recognizes exactly four provider kinds — `gmail`,
66
- `outlook`, `yahoo`, `icloud`. It deliberately stops at hosted
67
- providers, so there is no separate "generic IMAP server" kind. Each
68
- kind authenticates differently:
64
+ The mail registry supports exactly four provider kinds — `gmail`,
65
+ `outlook`, `yahoo`, `icloud`. It sticks to these hosted providers on
66
+ purpose, so there is no separate "generic IMAP server" kind. Each kind
67
+ signs in differently:
69
68
 
70
69
  | Provider | How it connects |
71
70
  |---|---|
72
- | **Gmail** | Rides the primary Google sign-in (`/config/google-auth`). Extra Gmail accounts beyond the primary identity are not implemented yet. |
73
- | **Outlook** | OAuth a browser loopback flow, with a device-code fallback for headless machines. |
74
- | **Yahoo** | App password (IMAP). |
75
- | **iCloud** | App password (IMAP). |
71
+ | **Gmail** | Uses the same primary Google sign-in you set up for the app (`/config/google-auth`). Adding extra Gmail accounts beyond that main Google identity isn't supported yet. |
72
+ | **Outlook** | OAuth (a browser sign-in flow). A headless machine — one with no browser, such as a server you reach over SSH — falls back to a device code you type in instead. |
73
+ | **Yahoo** | App password (connects over IMAP). |
74
+ | **iCloud** | App password (connects over IMAP). |
76
75
 
77
76
  ## Prerequisites
78
77
 
@@ -87,39 +86,41 @@ kind authenticates differently:
87
86
  2. Click "Add account" and pick the provider kind.
88
87
  3. Authenticate for that kind:
89
88
  - **Gmail** — connect the primary Google account from the setup or
90
- connections flow (`/config/google-auth`). It then appears on the
91
- unified mail surface automatically; you do not add it as a
92
- separate mail account.
89
+ connections flow (`/config/google-auth`). It then shows up in your
90
+ mail view automatically; you do not add it as a separate mail
91
+ account.
93
92
  - **Outlook** — step through the OAuth browser flow. On a headless
94
- machine (SSH / WSL), use the device-code fallback, which prints a
95
- code to enter at a verification URL.
93
+ machine (one you reach over SSH or WSL, with no browser of its
94
+ own), use the device-code fallback, which shows a code to type in
95
+ at a verification URL.
96
96
  - **Yahoo / iCloud** — paste the email address and the app password.
97
- 4. Save. Registration succeeds regardless of the enabled-providers
98
- setting (`enabledMailProviders`); the account goes live only when
99
- you flip its **Enable** toggle on the mail card.
100
- 5. The account is picked up on the next mail poll tick (default every
101
- 180 seconds, configurable via `mailPollIntervalSeconds`).
97
+ 4. Save. The account saves whether or not its provider is turned on in
98
+ the enabled-providers setting (`enabledMailProviders`); it goes live
99
+ only when you flip its **Enable** toggle on the mail card.
100
+ 5. The agent picks up the account on the next mail poll (by default
101
+ every 180 seconds, which you can change with
102
+ `mailPollIntervalSeconds`).
102
103
 
103
104
  ## Verification
104
105
 
105
- - The account row turns healthy on the auth-health card.
106
+ - The account row turns healthy (green) on the auth-health card.
106
107
  - The mail count updates on `/connections/mail`.
107
108
 
108
109
  ## If It Fails
109
110
 
110
- - **Outlook OAuth never returns** — the loopback flow binds an
111
- ephemeral port on `127.0.0.1`, so a fixed-port redirect mismatch is
112
- not the cause. Confirm the browser actually opened and completed the
113
- redirect; on a headless host switch to the device-code flow instead.
111
+ - **Outlook OAuth never returns** — the sign-in flow opens a temporary
112
+ local port on `127.0.0.1`, so a fixed-port redirect mismatch isn't
113
+ the cause. Check that the browser actually opened and finished the
114
+ redirect; on a headless host, switch to the device-code flow instead.
114
115
  - **Outlook add returns "client config missing"** — set the Outlook
115
116
  client config (`PUT /api/config/mail/outlook/client-config`) before
116
- adding the account.
117
+ you add the account.
117
118
  - **Yahoo / iCloud login rejected** — re-check the address and the app
118
- password (not your normal account password); regenerate the app
119
+ password (not your normal account password); generate a fresh app
119
120
  password if it still fails.
120
121
  - **Adding a second Gmail account fails** — only the primary Google
121
- identity is supported today; additional Gmail accounts are not yet
122
- implemented.
122
+ identity is supported today; extra Gmail accounts aren't available
123
+ yet.
123
124
 
124
125
  ## Related
125
126
 
@@ -16,10 +16,7 @@ summary: |
16
16
  <b>` to find bridges between two domains.
17
17
  section: guides
18
18
  tags:
19
- - guides
20
19
  - wiki
21
- - exploration
22
- - bang-commands
23
20
  status: stable
24
21
  ask_examples:
25
22
  - How do I trace an idea across the wiki?
@@ -30,7 +27,7 @@ ask_examples:
30
27
  - How do I run !trace against a non-default wiki workspace?
31
28
  locale: en-US
32
29
  created: 2026-05-12
33
- updated: 2026-06-07
30
+ updated: 2026-07-01
34
31
  keywords:
35
32
  - "!trace"
36
33
  - "!connect"
@@ -55,35 +52,36 @@ ui_anchors:
55
52
 
56
53
  # Explore Your Wiki with `!trace` and `!connect`
57
54
 
58
- `!trace` and `!connect` are the two wiki exploration commands. Both
59
- produce a one-off output document in `30_outputs/` and never touch
60
- your raw or wiki notes. Think of them as cited essays written from
61
- what your wiki actually contains.
55
+ `!trace` and `!connect` are the two wiki exploration commands. Each
56
+ one writes a single new document to `30_outputs/` and never changes
57
+ your raw or wiki notes. Think of them as short, cited essays built
58
+ only from what your wiki already contains.
62
59
 
63
- Both run as owner-DM bang commands. Both also accept an optional
64
- leading `@<workspace>` token to target a non-default wiki workspace
65
- for example `!trace @research formal methods` or
66
- `!connect @research category theory, distributed systems`. Omit the
67
- token and the command runs against your default workspace.
60
+ You send both as bang commands (a message that starts with `!`) in a
61
+ direct message to the agent. Both also accept an optional leading
62
+ `@<workspace>` token to point at a wiki workspace other than your
63
+ default — for example `!trace @research formal methods` or
64
+ `!connect @research category theory, distributed systems`. Leave the
65
+ token off and the command runs against your default workspace.
68
66
 
69
67
  ## `!trace <topic>` — Time-Based Exploration
70
68
 
71
69
  Use `!trace` when you want to see **how thinking about a topic has
72
- evolved**. The wiki agent searches every layer, orders the matches
73
- chronologically (preferring dates asserted in the content over
74
- file mtimes), and groups them into two-to-five phases of stable
75
- framing.
70
+ evolved**. The wiki agent searches every layer, puts the matches in
71
+ time order (preferring dates written inside a note over the file's
72
+ last-modified time), and groups them into two-to-five phases, each
73
+ holding a stretch where the framing stayed roughly the same.
76
74
 
77
75
  ```
78
76
  !trace quantum computing
79
77
  !trace formal methods in distributed systems
80
78
  ```
81
79
 
82
- The topic is free-form prose. The skill canonicalises against
83
- `90_meta/taxonomy.md` before deriving the output slug, so
84
- `!trace quantum computing` and `!trace quantum-computing` produce
85
- the same output filename if `quantum-computing` is your canonical
86
- topic.
80
+ The topic is free-form prose. Before it builds the output filename,
81
+ the skill maps your wording to its standard form using
82
+ `90_meta/taxonomy.md`, so `!trace quantum computing` and
83
+ `!trace quantum-computing` produce the same filename when
84
+ `quantum-computing` is your canonical topic.
87
85
 
88
86
  ### Output
89
87
 
@@ -117,9 +115,9 @@ says so directly. No padding, no speculation.
117
115
  Use `!connect` to find honest overlaps between two domains in
118
116
  your wiki. The agent surfaces four kinds of bridges:
119
117
 
120
- 1. **Shared terminology** — terms that mean the same (or
121
- recognisably different) things in each domain, disambiguated
122
- against `90_meta/taxonomy.md`.
118
+ 1. **Shared terminology** — terms that mean the same (or clearly
119
+ different) things in each domain, sorted out against
120
+ `90_meta/taxonomy.md`.
123
121
  2. **Common references** — the same URL, author, or wiki note
124
122
  linked from both sides.
125
123
  3. **Structural analogies** — recurring patterns of reasoning or
@@ -153,16 +151,16 @@ The output lands at:
153
151
  ```
154
152
 
155
153
  The double-hyphen (`--`) separates the two canonical slugs in the
156
- filename. Each report cites bridges with at least one path from
157
- each side — a one-sided match becomes a bridging candidate, not a
158
- bridge.
154
+ filename. Each report only counts a bridge when it has at least one
155
+ supporting note from each side — a match found on just one side
156
+ becomes a bridging candidate, not a bridge.
159
157
 
160
158
  ### Honest "No Connection" Reports
161
159
 
162
- If your wiki contains nothing in common between the two domains,
163
- the report still writes — with `_(none)_` filling the empty
164
- sections and a `## Summary` that says so plainly. A negative
165
- finding is itself useful: it tells you where the wiki has gaps.
160
+ If your wiki holds nothing in common between the two domains, the
161
+ report is still written — with `_(none)_` filling the empty
162
+ sections and a `## Summary` that says so plainly. An empty result
163
+ is useful in itself: it tells you where the wiki has gaps.
166
164
 
167
165
  ### `!connect` Does Not Create Wiki Notes
168
166