@aitne-sh/aitne 0.1.9 → 0.1.11

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 (218) hide show
  1. package/README.md +41 -11
  2. package/agent-assets/agent-profiles/background-task.md +53 -0
  3. package/agent-assets/agent-profiles/conversational.md +1 -0
  4. package/agent-assets/agent-profiles/routine-fetch-window.md +14 -75
  5. package/agent-assets/agent-profiles/routine.md +1 -1
  6. package/agent-assets/agents/{hourly-check → activity-scan}/agent.md +22 -17
  7. package/agent-assets/agents/monthly-review/agent.md +6 -5
  8. package/agent-assets/docs/concepts/agent-day.md +6 -7
  9. package/agent-assets/docs/concepts/auth-health.md +23 -20
  10. package/agent-assets/docs/concepts/backends-and-tiers.md +13 -9
  11. package/agent-assets/docs/concepts/costs-and-quotas.md +14 -12
  12. package/agent-assets/docs/concepts/delegated-mode.md +18 -17
  13. package/agent-assets/docs/concepts/memory-model.md +16 -9
  14. package/agent-assets/docs/concepts/observations.md +24 -20
  15. package/agent-assets/docs/concepts/process-keys.md +10 -9
  16. package/agent-assets/docs/concepts/routines.md +34 -31
  17. package/agent-assets/docs/concepts/safety-and-execution.md +11 -7
  18. package/agent-assets/docs/concepts/safety-model.md +39 -25
  19. package/agent-assets/docs/concepts/skills.md +12 -10
  20. package/agent-assets/docs/features/integrations/browser-history.md +23 -18
  21. package/agent-assets/docs/features/integrations/calendar.md +28 -17
  22. package/agent-assets/docs/features/integrations/git.md +13 -11
  23. package/agent-assets/docs/features/integrations/github.md +22 -14
  24. package/agent-assets/docs/features/integrations/mail.md +25 -22
  25. package/agent-assets/docs/features/integrations/notion.md +35 -11
  26. package/agent-assets/docs/features/integrations/obsidian.md +8 -8
  27. package/agent-assets/docs/features/lifestyle/git.md +27 -23
  28. package/agent-assets/docs/features/lifestyle/reading.md +20 -11
  29. package/agent-assets/docs/features/lifestyle/receipts.md +11 -10
  30. package/agent-assets/docs/features/lifestyle/travel-bookings.md +4 -3
  31. package/agent-assets/docs/features/memory-files/agent-journal.md +53 -26
  32. package/agent-assets/docs/features/memory-files/agent-lessons.md +178 -0
  33. package/agent-assets/docs/features/memory-files/projects.md +11 -8
  34. package/agent-assets/docs/features/memory-files/roadmap.md +17 -14
  35. package/agent-assets/docs/features/memory-files/schedule.md +6 -3
  36. package/agent-assets/docs/features/memory-files/today.md +10 -7
  37. package/agent-assets/docs/features/memory-files/user-profile.md +14 -9
  38. package/agent-assets/docs/features/messaging/bang-commands.md +21 -6
  39. package/agent-assets/docs/features/messaging/overview.md +17 -14
  40. package/agent-assets/docs/features/messaging/telegram.md +10 -9
  41. package/agent-assets/docs/features/operations/activity-and-conversations.md +6 -5
  42. package/agent-assets/docs/features/operations/approvals.md +6 -5
  43. package/agent-assets/docs/features/operations/browser-tasks.md +184 -0
  44. package/agent-assets/docs/features/operations/cost-tracking.md +11 -1
  45. package/agent-assets/docs/features/operations/managed-chromium.md +4 -2
  46. package/agent-assets/docs/features/operations/notifications.md +11 -1
  47. package/agent-assets/docs/features/operations/quiet-hours.md +41 -11
  48. package/agent-assets/docs/features/operations/schedule-approaching.md +2 -2
  49. package/agent-assets/docs/features/routines/activity-scan.md +220 -0
  50. package/agent-assets/docs/features/routines/custom-routines.md +82 -134
  51. package/agent-assets/docs/features/routines/evening-review.md +23 -13
  52. package/agent-assets/docs/features/routines/morning-routine.md +7 -5
  53. package/agent-assets/docs/features/routines/weekly-review.md +24 -3
  54. package/agent-assets/docs/features/wiki/commands.md +4 -4
  55. package/agent-assets/docs/features/wiki/cost-and-approval.md +4 -3
  56. package/agent-assets/docs/features/wiki/dashboard.md +7 -6
  57. package/agent-assets/docs/features/wiki/overview.md +3 -3
  58. package/agent-assets/docs/features/wiki/search.md +5 -5
  59. package/agent-assets/docs/features/wiki/workspaces.md +2 -2
  60. package/agent-assets/docs/getting-started/01-what-is-this.md +3 -3
  61. package/agent-assets/docs/getting-started/02-first-steps.md +5 -3
  62. package/agent-assets/docs/getting-started/04-first-day.md +27 -30
  63. package/agent-assets/docs/glossary.md +8 -8
  64. package/agent-assets/docs/guides/add-a-custom-routine.md +122 -68
  65. package/agent-assets/docs/guides/budget-and-cost-for-wiki.md +2 -2
  66. package/agent-assets/docs/guides/connect-a-new-mail-account.md +4 -2
  67. package/agent-assets/docs/guides/explore-with-trace-and-connect.md +5 -4
  68. package/agent-assets/docs/guides/install-and-run.md +2 -2
  69. package/agent-assets/docs/guides/maintain-wiki-health.md +2 -2
  70. package/agent-assets/docs/guides/pause-the-agent.md +27 -21
  71. package/agent-assets/docs/guides/reinstall-cleanly.md +2 -0
  72. package/agent-assets/docs/guides/setup-wizard.md +12 -6
  73. package/agent-assets/docs/guides/use-an-existing-obsidian-vault.md +6 -6
  74. package/agent-assets/docs/reference/api.md +26 -5
  75. package/agent-assets/docs/reference/cli-commands.md +3 -3
  76. package/agent-assets/docs/reference/config.md +51 -24
  77. package/agent-assets/docs/reference/disallowed-tools.md +6 -4
  78. package/agent-assets/docs/reference/keyboard-shortcuts.md +2 -2
  79. package/agent-assets/docs/reference/knowledge-layout.md +25 -12
  80. package/agent-assets/docs/reference/process-keys.md +9 -9
  81. package/agent-assets/docs/reference/skills.md +10 -6
  82. package/agent-assets/docs/troubleshooting/auth-failed.md +9 -8
  83. package/agent-assets/docs/troubleshooting/dashboard-shows-degraded.md +16 -9
  84. package/agent-assets/docs/troubleshooting/messaging-not-pairing.md +2 -2
  85. package/agent-assets/docs/troubleshooting/morning-routine-didnt-run.md +32 -16
  86. package/agent-assets/docs/troubleshooting/observation-not-detected.md +26 -24
  87. package/agent-assets/docs/troubleshooting/quota-exhausted.md +7 -6
  88. package/agent-assets/docs/troubleshooting/wiki-write-failed.md +3 -3
  89. package/agent-assets/skills/agent-actions/SKILL.md +23 -39
  90. package/agent-assets/skills/agent-create/SKILL.md +26 -6
  91. package/agent-assets/skills/attach/SKILL.md +8 -27
  92. package/agent-assets/skills/background-task/SKILL.md +184 -0
  93. package/agent-assets/skills/background-task-reply/SKILL.md +100 -0
  94. package/agent-assets/skills/browser-history/SKILL.md +60 -29
  95. package/agent-assets/skills/browser-history-respond/SKILL.md +6 -1
  96. package/agent-assets/skills/browser-task/SKILL.md +33 -31
  97. package/agent-assets/skills/context/SKILL.md +26 -34
  98. package/agent-assets/skills/context/curation.json +12 -12
  99. package/agent-assets/skills/context/references/api.md +22 -20
  100. package/agent-assets/skills/context/references/required-frontmatter.md +10 -9
  101. package/agent-assets/skills/context/references/snapshot-files.md +16 -15
  102. package/agent-assets/skills/context/seeds/file-responsibilities.seed.json +5 -5
  103. package/agent-assets/skills/context/seeds/frontmatter-requirements.seed.json +3 -3
  104. package/agent-assets/skills/docs-search/SKILL.md +19 -31
  105. package/agent-assets/skills/external-services/SKILL.delegated.claude.md +8 -95
  106. package/agent-assets/skills/external-services/SKILL.delegated.codex.md +8 -94
  107. package/agent-assets/skills/external-services/SKILL.delegated.gemini.md +8 -94
  108. package/agent-assets/skills/external-services/SKILL.native.claude.md +15 -9
  109. package/agent-assets/skills/external-services/SKILL.native.codex.md +11 -5
  110. package/agent-assets/skills/external-services/SKILL.native.gemini.md +11 -5
  111. package/agent-assets/skills/external-services/references/exec-errors.md +32 -0
  112. package/agent-assets/skills/external-services/references/skills-crud.md +5 -5
  113. package/agent-assets/skills/gmail-lifestyle/SKILL.md +3 -2
  114. package/agent-assets/skills/gmail-lifestyle/references/receipts-api.md +4 -0
  115. package/agent-assets/skills/gmail-lifestyle/references/travel-bookings-api.md +9 -0
  116. package/agent-assets/skills/mail/SKILL.delegated.claude.md +13 -25
  117. package/agent-assets/skills/mail/SKILL.delegated.codex.md +3 -2
  118. package/agent-assets/skills/mail/SKILL.delegated.gemini.md +3 -2
  119. package/agent-assets/skills/mail/SKILL.md +12 -20
  120. package/agent-assets/skills/mail/SKILL.native.claude.md +24 -16
  121. package/agent-assets/skills/mail/SKILL.native.codex.md +16 -9
  122. package/agent-assets/skills/mail/SKILL.native.gemini.md +12 -6
  123. package/agent-assets/skills/mail/references/api.md +6 -1
  124. package/agent-assets/skills/mail/references/examples.md +2 -1
  125. package/agent-assets/skills/managed-tasks/SKILL.md +44 -77
  126. package/agent-assets/skills/managed-tasks/references/errors.md +25 -14
  127. package/agent-assets/skills/managed-tasks/references/output-path.md +33 -17
  128. package/agent-assets/skills/managed-tasks/references/recurrence-rule.md +26 -16
  129. package/agent-assets/skills/management-policy/SKILL.md +36 -28
  130. package/agent-assets/skills/management-policy/curation.json +1 -1
  131. package/agent-assets/skills/management-policy/references/policy-workflow.md +30 -18
  132. package/agent-assets/skills/notify/SKILL.md +16 -13
  133. package/agent-assets/skills/notify/references/priority.md +42 -26
  134. package/agent-assets/skills/notion/SKILL.delegated.claude.md +1 -1
  135. package/agent-assets/skills/notion/SKILL.delegated.codex.md +1 -1
  136. package/agent-assets/skills/notion/SKILL.delegated.gemini.md +1 -1
  137. package/agent-assets/skills/notion/SKILL.md +18 -18
  138. package/agent-assets/skills/notion/SKILL.native.claude.md +4 -4
  139. package/agent-assets/skills/notion/SKILL.native.codex.md +3 -3
  140. package/agent-assets/skills/notion/SKILL.native.gemini.md +3 -3
  141. package/agent-assets/skills/observations/SKILL.md +9 -24
  142. package/agent-assets/skills/observations/references/fetch-fallback.md +22 -0
  143. package/agent-assets/skills/project-doc/SKILL.md +9 -6
  144. package/agent-assets/skills/project-doc/curation.json +3 -3
  145. package/agent-assets/skills/project-doc/seeds/project-shape.seed.json +2 -2
  146. package/agent-assets/skills/project-doc/seeds/slug-grammar.seed.json +3 -3
  147. package/agent-assets/skills/reading/SKILL.md +8 -42
  148. package/agent-assets/skills/reading/references/reading-taste.md +5 -5
  149. package/agent-assets/skills/roadmap/SKILL.md +3 -19
  150. package/agent-assets/skills/roadmap/references/api.md +23 -8
  151. package/agent-assets/skills/roadmap/references/horizon-tags.md +11 -0
  152. package/agent-assets/skills/roadmap/references/migration.md +8 -6
  153. package/agent-assets/skills/roadmap/references/retention.md +18 -0
  154. package/agent-assets/skills/schedule/SKILL.md +20 -28
  155. package/agent-assets/skills/schedule/references/importance.md +23 -0
  156. package/agent-assets/skills/schedule/references/recurrence-rule.md +26 -16
  157. package/agent-assets/skills/scheduled-managed-task/SKILL.md +46 -46
  158. package/agent-assets/skills/today/SKILL.md +38 -81
  159. package/agent-assets/skills/today/references/agent-plan-lifecycle.md +9 -4
  160. package/agent-assets/skills/today/references/agent-plan-revision.md +28 -0
  161. package/agent-assets/skills/today/references/today-skeleton.md +66 -0
  162. package/agent-assets/skills/today/seeds/agent-notes-flavors.seed.json +1 -1
  163. package/agent-assets/skills/today/seeds/section-shape.seed.json +6 -6
  164. package/agent-assets/skills/user-interview/SKILL.md +15 -90
  165. package/agent-assets/skills/user-interview/references/op-briefing.md +1 -1
  166. package/agent-assets/skills/user-interview/references/op-dm-handler.md +88 -0
  167. package/agent-assets/skills/user-interview/references/op-morning.md +2 -2
  168. package/agent-assets/skills/user-interview/references/sweep-and-fallback.md +1 -1
  169. package/agent-assets/skills/user-profile/SKILL.md +16 -26
  170. package/agent-assets/skills/user-profile/curation.json +3 -3
  171. package/agent-assets/skills/user-profile/references/character-preferences.md +3 -3
  172. package/agent-assets/skills/wiki/wiki-ask/SKILL.md +1 -1
  173. package/agent-assets/skills/wiki/wiki-compile/SKILL.md +5 -4
  174. package/agent-assets/skills/wiki/wiki-connect/SKILL.md +32 -5
  175. package/agent-assets/skills/wiki/wiki-ingest/SKILL.md +6 -50
  176. package/agent-assets/skills/wiki/wiki-ingest/references/curl-errors.md +58 -0
  177. package/agent-assets/skills/wiki/wiki-lint/SKILL.md +20 -14
  178. package/agent-assets/skills/wiki/wiki-trace/SKILL.md +10 -5
  179. package/agent-assets/skills/wiki/wiki-vault-rules/SKILL.md +2 -0
  180. package/agent-assets/system-prompts/routine-research-cluster-update.md +71 -0
  181. package/agent-assets/task-flows/_partials/feedback-capture.md +30 -0
  182. package/agent-assets/task-flows/_partials/notion-acquire.notion.md +47 -21
  183. package/agent-assets/task-flows/background_task.md +81 -0
  184. package/agent-assets/task-flows/git.local_ahead.stale.md +1 -1
  185. package/agent-assets/task-flows/git.push.detected.md +1 -1
  186. package/agent-assets/task-flows/git.tag.created.md +1 -1
  187. package/agent-assets/task-flows/github.assigned.md +1 -1
  188. package/agent-assets/task-flows/github.pull_request.review_requested.md +2 -2
  189. package/agent-assets/task-flows/github.security_alert.md +1 -1
  190. package/agent-assets/task-flows/message.received.dm.md +11 -3
  191. package/agent-assets/task-flows/message.received.dm_first.md +8 -2
  192. package/agent-assets/task-flows/{routine.hourly_check.md → routine.activity_scan.md} +31 -23
  193. package/agent-assets/task-flows/{routine.hourly_check.triage.md → routine.activity_scan.triage.md} +3 -3
  194. package/agent-assets/task-flows/routine.evening_review.md +80 -0
  195. package/agent-assets/task-flows/routine.monthly_review.md +81 -8
  196. package/agent-assets/task-flows/routine.research_cluster_update.md +33 -19
  197. package/agent-assets/task-flows/routine.roadmap_refresh.md +2 -2
  198. package/agent-assets/task-flows/routine.today_refresh.md +1 -1
  199. package/agent-assets/task-flows/routine.weekly_review.md +124 -4
  200. package/agent-assets/task-flows/schedule.approaching.md +2 -2
  201. package/agent-assets/task-flows/scheduled.dm.md +77 -1
  202. package/agent-assets/task-flows/scheduled.task.md +7 -1
  203. package/agent-assets/task-flows/wiki.trace.md +1 -1
  204. package/agent-assets/templates/_manifest.json +2 -2
  205. package/agent-assets/templates/knowledge/dossiers/_index.md +1 -1
  206. package/agent-assets/templates/knowledge/dossiers/{hourly.md → activity-scan.md} +1 -1
  207. package/agent-assets/templates/policies/journal-format.md +1 -1
  208. package/agent-assets/templates/policies/mcp.md +1 -1
  209. package/agent-assets/templates/policies/routines/_index.md +1 -1
  210. package/agent-assets/templates/policies/routines/{hourly.md → activity-scan.md} +5 -5
  211. package/bin/aitne.mjs +45 -11
  212. package/package.json +6 -5
  213. package/scripts/commands/doctor.mjs +11 -2
  214. package/scripts/lib/process-identity.d.mts +46 -0
  215. package/scripts/lib/process-identity.mjs +193 -0
  216. package/scripts/lib/read-api-token.mjs +1 -1
  217. package/scripts/start.mjs +14 -4
  218. package/agent-assets/docs/features/routines/hourly-check.md +0 -205
@@ -1,46 +1,54 @@
1
1
  ---
2
2
  schema_version: 1
3
3
  slug: guides/add-a-custom-routine
4
- title: Add a Custom Routine
4
+ title: Create a Recurring Agent
5
5
  id: add-a-custom-routine
6
6
  aliases:
7
+ - recurring agent
8
+ - new agent
9
+ - user agent
7
10
  - custom routine
8
- - user-defined routine
9
11
  - add a routine
10
12
  - scheduled task
11
13
  category: guides
12
14
  summary: |
13
- Define a new autonomous routine slug, cron expression, model tier, and
14
- budget cap — via /settings/routines. The form writes a vault file at
15
- policies/routines/custom/<slug>.md; saving it registers the cron job.
15
+ Make the agent run a prompt you write on a schedule you pick by
16
+ creating a user Agent — via the "New Agent" form on /agents or
17
+ POST /api/agents. The Markdown body (the prompt) becomes the task
18
+ prompt for every run; runs appear on the Agent's detail page.
16
19
  section: add-a-custom-routine
17
20
  tags:
18
21
  - guides
22
+ - agents
19
23
  - routines
20
24
  - scheduler
21
25
  - autonomous
22
26
  - core
23
27
  status: stable
24
28
  ask_examples:
25
- - How do I add a custom routine?
26
- - What can a custom routine do?
29
+ - How do I create a recurring agent?
27
30
  - How do I schedule the agent to run on a cron?
31
+ - How do I add a custom routine?
32
+ - Where do I see my agent's runs?
28
33
  locale: en-US
29
34
  created: 2026-04-25
30
- updated: 2026-05-28
35
+ updated: 2026-06-10
31
36
  keywords:
32
- - custom routine
33
- - schedule
37
+ - recurring agent
38
+ - new agent
34
39
  - cron
40
+ - schedule
35
41
  - recurrence
36
- - backend_tier
37
- - process_key
42
+ - task prompt
43
+ - agent.task
38
44
  ui_anchors:
39
- - /settings/routines
45
+ - /agents
40
46
  api_endpoints:
41
- - PUT /api/context/*
47
+ - POST /api/agents
48
+ - GET /api/agents/{slug}/executions
49
+ - POST /api/agents/{slug}/run-now
42
50
  context_files:
43
- - policies/routines/custom/<slug>.md
51
+ - policies/agents/<slug>/agent.md
44
52
  related:
45
53
  - features/routines/custom-routines
46
54
  - concepts/routines
@@ -48,76 +56,122 @@ related:
48
56
  - concepts/backends-and-tiers
49
57
  ---
50
58
 
51
- # Add a Custom Routine
59
+ # Create a Recurring Agent
52
60
 
53
61
  ## Goal
54
62
 
55
- Make the agent fire a particular kind of work on a schedule you pick.
63
+ Make the agent fire a particular kind of work on a schedule you pick
64
+ as a user **Agent** you can watch, tune, and toggle from `/agents`.
56
65
 
57
66
  ## Prerequisites
58
67
 
59
68
  - Daemon running.
60
69
 
61
- ## Steps
62
-
63
- 1. Open `/settings/routines` (the older `/connections/routines` URL
64
- redirects here).
65
- 2. Click **Add**. The "New custom routine" dialog opens.
66
- 3. Fill the form:
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
- ---
70
+ ## Steps (dashboard)
71
+
72
+ 1. Open **Agents** (`/agents`) and click **New Agent**.
73
+ 2. Fill the form:
74
+ - **Name** the human label in the agents list (e.g. "Daily
75
+ Digest").
76
+ - **ID** — lowercase kebab-case slug. It becomes the URL
77
+ (`/agents/<id>`) and the definition file
78
+ `policies/agents/<id>/agent.md`. Must not collide with an
79
+ existing Agent (built-in slugs are reserved too).
80
+ - **Schedule** — pick a frequency (hourly / daily / weekly /
81
+ monthly) and its fields, e.g. weekly on Tuesday at 11:00. An
82
+ optional toggle defers runs that land inside your quiet hours.
83
+ - **Backend engine / Model tier** — `lite` (Haiku-class), `medium`
84
+ (Sonnet-class), or `high` (Opus-class). See
85
+ [Backends and tiers](../concepts/backends-and-tiers.md).
86
+ - **Limits** — max turns, max budget (USD) per run, and timeout
87
+ (minutes).
88
+ - **Task prompt** — what the agent should do on each run. This text
89
+ becomes the Markdown body of `agent.md` and is the prompt the
90
+ agent receives every time it fires.
91
+ - An **Advanced (YAML)** toggle reveals the raw `agent.md` editor
92
+ for long-tail fields the form doesn't expose (tags, tools,
93
+ success criteria, error handling).
94
+ 3. Save. The dashboard writes `policies/agents/<slug>/agent.md`
95
+ through the context vault and opens the new Agent's detail page;
96
+ the daemon imports the file without a restart.
97
+
98
+ ## Steps (API)
99
+
100
+ `POST /api/agents` is the programmatic counterpart:
101
+
102
+ ```bash
103
+ curl -X POST http://localhost:8321/api/agents \
104
+ -H "Content-Type: application/json" \
105
+ -d '{
106
+ "slug": "tuesday-notion-sweep",
107
+ "name": "Tuesday Notion Sweep",
108
+ "description": "Weekly Notion inbox cleanup",
109
+ "schedule": { "kind": "cron", "expression": "0 11 * * 2" },
110
+ "backend": { "tier": "medium" },
111
+ "limits": { "max_budget_usd": 0.10 },
112
+ "prompt": "- Review my Notion inbox for items older than a week.\n- File or archive each one.\n- DM me a one-paragraph summary."
113
+ }'
103
114
  ```
104
115
 
105
- To stop a routine without deleting it, set `enabled: false` in the
106
- file and save that unregisters the cron job.
116
+ - **`prompt` becomes the Agent's task prompt** — it is stored as the
117
+ Markdown body of `agent.md` and sent to the agent on every run.
118
+ - **`schedule`** takes one of two forms: a raw 5-field cron
119
+ (`{ "kind": "cron", "expression": "0 11 * * 2" }`, interpreted in
120
+ the daemon's timezone unless `schedule.timezone` is set) or a
121
+ structured rule (`{ "kind": "recurring", "recurrence": { "frequency":
122
+ "weekly", "daysOfWeek": ["tuesday"], "time": "11:00" } }`).
123
+ `/agents` is recurring-only — a one-time task belongs on
124
+ `POST /api/schedule` instead.
125
+ - **`backend.tier`** is optional; omitted, the Agent inherits the
126
+ `agent.task` process default (medium). `backend.process_key`
127
+ defaults to `agent.task` — you don't need to set it.
128
+ - **`limits`** defaults: 20 turns, $0.25 per run, 10-minute timeout.
129
+ - Success returns `201 { "status": "created", "slug": ... }`. A taken
130
+ slug returns `409 slug_collision`; validation failures return `400`
131
+ with a field-level `issues` list.
132
+
133
+ ## Where to See Runs
134
+
135
+ - **`/agents`** lists every Agent with its schedule, enable toggle,
136
+ 7-day metrics, and last run.
137
+ - **`/agents/<slug>`** is the detail page: the full definition, recent
138
+ execution history with results and cost, and a **Run now** button
139
+ (`POST /api/agents/<slug>/run-now`).
140
+ - **Activity** logs each run alongside everything else the agent does.
141
+ - Programmatically: `GET /api/agents/<slug>/executions`.
107
142
 
108
143
  ## Verification
109
144
 
110
- - Wait for the cron to fire; check Activity for the row tagged
111
- `routine.custom.<slug>`.
145
+ - Click **Run now** on the detail page (or wait for the schedule); an
146
+ execution row should appear with its result and cost.
112
147
 
113
148
  ## If It Fails
114
149
 
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
150
+ - `409 slug_collision` pick a different ID; built-in Agent slugs are
151
+ reserved.
152
+ - `400 invalid_definition` fix the fields listed in `issues`.
153
+ - `400 one_shot_not_supported` `/agents` is recurring-only; use
154
+ `POST /api/schedule` for one-time work.
155
+ - A prompt that hits the absolute-block guardrails: the run fires but
156
+ the offending tool call is logged as `blocked_absolute` in the
119
157
  action log.
120
158
 
159
+ ## Migrating From Custom Routines
160
+
161
+ The legacy custom-routine format —
162
+ `policies/routines/custom/<slug>.md` files with `cron:` frontmatter
163
+ and a `## Checks` body — is retired and those files no longer fire.
164
+ At the first daemon start after the upgrade, each valid file was
165
+ converted **once** into a user Agent with the same cron, tier, budget,
166
+ and enabled state; the `## Checks` body became the Agent's task
167
+ prompt, and the source file was kept but marked inert
168
+ (`enabled: false` plus a `migrated_to_agent: <slug>` marker). See
169
+ [Custom Routines (Retired)](../features/routines/custom-routines.md)
170
+ for collision and invalid-file handling.
171
+
121
172
  ## Related
122
173
 
123
- - [Custom Routines](../features/routines/custom-routines.md)
174
+ - [Custom Routines (Retired)](../features/routines/custom-routines.md)
175
+ - [Routines](../concepts/routines.md)
176
+ - [ProcessKeys](../concepts/process-keys.md)
177
+ - [Backends and tiers](../concepts/backends-and-tiers.md)
@@ -27,7 +27,7 @@ ask_examples:
27
27
  - What does the pre-compile snapshot do?
28
28
  locale: en-US
29
29
  created: 2026-05-12
30
- updated: 2026-05-28
30
+ updated: 2026-06-07
31
31
  keywords:
32
32
  - wiki budget
33
33
  - wiki cost
@@ -126,7 +126,7 @@ before `!compile full`** enabled, Aitne runs:
126
126
  git -C <vault> status --porcelain
127
127
  # must be empty — dirty trees refuse the operation entirely
128
128
  git -C <vault> add -A
129
- git -C <vault> commit -m "aitne wiki: pre-compile snapshot <ISO-8601-ts>"
129
+ git -C <vault> commit --allow-empty -m "aitne wiki: pre-compile snapshot <ISO-8601-ts>"
130
130
  ```
131
131
 
132
132
  before the compile session starts. The commit message is
@@ -27,7 +27,7 @@ ask_examples:
27
27
  - How do I connect an Outlook mailbox?
28
28
  locale: en-US
29
29
  created: 2026-04-25
30
- updated: 2026-05-28
30
+ updated: 2026-06-07
31
31
  keywords:
32
32
  - mail
33
33
  - imap
@@ -48,6 +48,7 @@ api_endpoints:
48
48
  - /api/config/mail/app-password
49
49
  config_keys:
50
50
  - enabledMailProviders
51
+ - mailPollIntervalSeconds
51
52
  context_files:
52
53
  - state/today.md
53
54
  ---
@@ -96,7 +97,8 @@ kind authenticates differently:
96
97
  4. Save. Registration succeeds regardless of the enabled-providers
97
98
  setting (`enabledMailProviders`); the account goes live only when
98
99
  you flip its **Enable** toggle on the mail card.
99
- 5. The first poll runs within a minute of being enabled.
100
+ 5. The account is picked up on the next mail poll tick (default every
101
+ 180 seconds, configurable via `mailPollIntervalSeconds`).
100
102
 
101
103
  ## Verification
102
104
 
@@ -30,7 +30,7 @@ ask_examples:
30
30
  - How do I run !trace against a non-default wiki workspace?
31
31
  locale: en-US
32
32
  created: 2026-05-12
33
- updated: 2026-05-28
33
+ updated: 2026-06-07
34
34
  keywords:
35
35
  - "!trace"
36
36
  - "!connect"
@@ -187,6 +187,7 @@ Every report is a regular wiki file under `30_outputs/`. You can:
187
187
  ## Cost Envelope
188
188
 
189
189
  Both commands run at Sonnet medium tier with a default $1.00
190
- spend cap per run, identical to `!ask`. The 7-day cost rollup on
191
- **Settings Wiki** breaks the spend out per command so you can
192
- see where the budget went.
190
+ spend cap per run, identical to `!ask`. The **Settings Wiki**
191
+ overview shows a single 7-day cost stat across all wiki commands;
192
+ to see per-command spend, filter the timeline on `/wiki/timeline`
193
+ by `wiki.trace` or `wiki.connect`.
@@ -29,7 +29,7 @@ ask_examples:
29
29
  - How do I install the aitne npm package?
30
30
  locale: en-US
31
31
  created: 2026-04-25
32
- updated: 2026-05-28
32
+ updated: 2026-06-07
33
33
  keywords:
34
34
  - install
35
35
  - first run
@@ -60,7 +60,7 @@ through the setup wizard.
60
60
  Google (`GEMINI_API_KEY` / `GOOGLE_API_KEY`). API keys are the
61
61
  recommended and provider-supported way to run Aitne. If you skip
62
62
  the key, Aitne falls back to the corresponding CLI's local
63
- subscription login (`claude`, `codex login`, `gemini auth`); see
63
+ subscription login (`claude auth login`, `codex login`, `gemini`); see
64
64
  [Costs and Quotas](../concepts/costs-and-quotas.md) for the trade-
65
65
  offs and the provider policies that apply.
66
66
  - The CLI binary for whichever backend you pick (Claude Code, Codex
@@ -28,7 +28,7 @@ ask_examples:
28
28
  - What is a taxonomy candidate?
29
29
  locale: en-US
30
30
  created: 2026-05-12
31
- updated: 2026-05-28
31
+ updated: 2026-06-07
32
32
  keywords:
33
33
  - wiki health
34
34
  - wiki lint
@@ -68,7 +68,7 @@ notes itself.
68
68
  ## When to Run
69
69
 
70
70
  `!lint` runs on the `wiki.lint` process key (medium tier — Sonnet
71
- by default, $1.00 budget envelope) and never changes your notes.
71
+ by default, $0.50 budget envelope) and never changes your notes.
72
72
  Run it whenever you want a snapshot of wiki health. A practical
73
73
  cadence:
74
74
 
@@ -23,7 +23,7 @@ ask_examples:
23
23
  - Can I disable everything for a week?
24
24
  locale: en-US
25
25
  created: 2026-04-25
26
- updated: 2026-05-28
26
+ updated: 2026-06-10
27
27
  keywords:
28
28
  - pause agent
29
29
  - stop agent
@@ -36,10 +36,10 @@ related:
36
36
  - features/messaging/bang-commands
37
37
  - concepts/routines
38
38
  ui_anchors:
39
- - /settings/schedule
40
- - /settings/routines
39
+ - /settings/hours
40
+ - /agents
41
41
  config_keys:
42
- - hourlyCheckEnabled
42
+ - activityScanEnabled
43
43
  - monthlyReviewEnabled
44
44
  - quietHoursStart
45
45
  - quietHoursEnd
@@ -62,7 +62,7 @@ DM `!stop` to the agent on any paired messaging app. This is the
62
62
  recommended way to go silent and the only one you need for most cases:
63
63
 
64
64
  - It pauses **every** cron-driven routine — morning, evening, weekly,
65
- monthly, and the hourly check — not just one of them.
65
+ monthly, and the activity scan — not just one of them.
66
66
  - Non-command DMs are declined with a paused notice (no LLM cost)
67
67
  until you resume.
68
68
  - The paused state is persisted, so a daemon restart does **not**
@@ -75,23 +75,29 @@ Resume with `!start` whenever you want the agent active again. See
75
75
 
76
76
  ## Finer-grained control from the dashboard
77
77
 
78
- If you want to mute specific behaviour rather than pause everything, use
79
- `/settings/schedule`:
80
-
81
- 1. **Disable the hourly check** toggle `hourlyCheckEnabled` off. This
82
- leaves the morning, evening, weekly, and monthly routines running.
83
- 2. **Disable the monthly review** toggle `monthlyReviewEnabled` off
84
- (it ships off by default).
85
- 3. **Silence notifications without pausing work** set an extended
86
- quiet hours window: e.g. `quietHoursStart: "00:00"`,
87
- `quietHoursEnd: "23:59"`. Both fields take an `HH:MM` string.
88
- Routines still run; they just don't notify you.
78
+ If you want to mute specific behaviour rather than pause everything:
79
+
80
+ 1. **Disable the activity scan** — open `/agents/activity-scan` and click
81
+ **Disable**. This leaves the morning, evening, weekly, and monthly
82
+ routines running. (The agent's enable switch replaced the legacy
83
+ `activityScanEnabled` config key, now a deprecated fallback.)
84
+ 2. **Disable the monthly review** — open `/agents/monthly-review` and
85
+ click **Disable** (it ships disabled by default; the agent's enable
86
+ switch replaced the legacy `monthlyReviewEnabled` config key).
87
+ 3. **Silence notifications without pausing work** — on `/settings/hours`
88
+ ("Hours & Notifications"), set an extended quiet hours window: e.g.
89
+ `quietHoursStart: "00:00"`, `quietHoursEnd: "23:59"`. Both fields
90
+ take an `HH:MM` string. Routines still run; they just don't notify
91
+ you.
89
92
 
90
93
  Morning (fires at the day boundary, default 04:00), evening (18:00),
91
- and weekly (Fri 18:00) reviews have no per-routine enable toggle in the
92
- dashboard to stop them, use `!stop` above. You can still edit each
93
- routine's instructions on `/settings/routines`, but that page does not
94
- turn them on or off.
94
+ and weekly (Fri 19:00) reviews each have a per-routine Enable/Disable
95
+ toggle on the `/agents` page open `/agents/<slug>` (e.g.
96
+ `/agents/weekly-review`) and click Disable (a stop-warning confirmation
97
+ appears for these system agents). To halt all of them at once, use
98
+ `!stop` above instead. Each routine's instructions (its rulebook) are
99
+ edited on the same page's **Rulebook** tab
100
+ (`/agents/<slug>?tab=rulebook`).
95
101
 
96
102
  ## Last resort: stop the daemon
97
103
 
@@ -111,7 +117,7 @@ temporary pause that survives across days, prefer `!stop`. Restart with
111
117
 
112
118
  - A routine still fires after `!stop`: confirm the pause registered by
113
119
  checking `!help` or the dashboard banner; re-send `!stop`.
114
- - A toggle on `/settings/schedule` did not take effect: confirm it
120
+ - A setting on `/settings/hours` did not take effect: confirm it
115
121
  saved — the dashboard's "Save" button must be clicked.
116
122
 
117
123
  ## Related
@@ -46,6 +46,8 @@ related:
46
46
  - guides/migrate-machines
47
47
  - guides/pause-the-agent
48
48
  - glossary
49
+ ui_anchors:
50
+ - /settings/danger-zone
49
51
  ---
50
52
 
51
53
  # Reinstall Cleanly
@@ -29,7 +29,7 @@ ask_examples:
29
29
  - Where do I paste my API key?
30
30
  locale: en-US
31
31
  created: 2026-04-25
32
- updated: 2026-05-28
32
+ updated: 2026-06-10
33
33
  keywords:
34
34
  - setup
35
35
  - wizard
@@ -57,7 +57,8 @@ ui_anchors:
57
57
  - /setup
58
58
  - /settings/models
59
59
  - /connections
60
- - /settings/routines
60
+ - /agents
61
+ - /settings/hours
61
62
  ---
62
63
 
63
64
  # Setup Wizard Walkthrough
@@ -187,10 +188,15 @@ character prompt referenced in Step 1 actually gets written.
187
188
 
188
189
  ## After the wizard
189
190
 
190
- Routines are **not** configured in the wizard. Enable and schedule the
191
- morning / evening / weekly reviews and the hourly check post-setup on
192
- `/settings/routines`. Repositories are also added after setup, from
193
- Settings Connections Repositories.
191
+ Routines are **not** configured in the wizard. Post-setup, each routine
192
+ is an agent under `/agents`: edit the per-cadence rulebooks (morning /
193
+ evening / weekly / activity scan) on the agent's Rulebook tab, create custom
194
+ recurring agents from the New Agent dialog, set the activity-scan switch
195
+ and cadence on `/agents/activity-scan`, and opt into the monthly review
196
+ by enabling `/agents/monthly-review`. Quiet hours, timezone, and
197
+ notification caps live on `/settings/hours` ("Hours & Notifications").
198
+ Repositories are also added after setup, from Connections →
199
+ Repositories.
194
200
 
195
201
  ## Verification
196
202
 
@@ -26,7 +26,7 @@ ask_examples:
26
26
  - Why is Split greyed out?
27
27
  locale: en-US
28
28
  created: 2026-05-12
29
- updated: 2026-05-28
29
+ updated: 2026-06-07
30
30
  keywords:
31
31
  - external vault
32
32
  - existing obsidian vault
@@ -68,11 +68,11 @@ vs Split**.
68
68
 
69
69
  Open **`/settings/wiki`** in the dashboard (or open `/wiki` and follow
70
70
  the **Enable Wiki** button — both land on the same page). If you have
71
- no workspace yet, the page shows two CTAs:
71
+ no workspace yet, the page shows two options:
72
72
 
73
- - **Enable Internal Workspace** — uses the daemon-owned root.
74
- - **Probe & Create External** — points at the path you choose with
75
- the folder picker.
73
+ - **Internal** → **Enable internal wiki** — uses the daemon-owned root.
74
+ - **Existing Obsidian vault** **Use this folder** — points at the
75
+ path you choose with the folder picker.
76
76
 
77
77
  ### Picking the path
78
78
 
@@ -110,7 +110,7 @@ levels:
110
110
  an existing wiki layout is detected, the wizard will surface the
111
111
  Adopt / Migrate decision in Step 3.
112
112
 
113
- The **Probe & Create External** button is greyed out while the banner
113
+ The **Use this folder** button is greyed out while the banner
114
114
  is an error so you cannot fire a workspace-create that the daemon
115
115
  already knows will fail.
116
116
 
@@ -28,7 +28,7 @@ ask_examples:
28
28
  - How do I list registered backends?
29
29
  locale: en-US
30
30
  created: 2026-04-25
31
- updated: 2026-05-28
31
+ updated: 2026-06-08
32
32
  keywords:
33
33
  - API
34
34
  - REST
@@ -54,7 +54,7 @@ The daemon serves a single Hono app on `127.0.0.1:PA_API_PORT` (default
54
54
  `8321`). Almost all endpoints are mounted under `/api/*`; the lone
55
55
  exception is the GitHub webhook receiver, mounted at root `/webhook/github`.
56
56
  **Source of truth:** `packages/daemon/src/api/server.ts` (`createApp`)
57
- registers most route groups, with two post-compose mounts in
57
+ registers most route groups, with one post-compose mount in
58
58
  `packages/daemon/src/bootstrap/api.ts` (the docs corpus + docs-QA, wired
59
59
  only after the indexer handle exists). Each group lives in its own file
60
60
  or directory under `packages/daemon/src/api/routes/`.
@@ -93,13 +93,13 @@ callers pass it as `Authorization: Bearer <token>`.
93
93
  | Activity sources | `/api/activity-sources/*` | `activity-sources.ts` | Activity feed sources. |
94
94
  | Entities | `/api/entities/*` | `entities.ts` | Entity registry CRUD. |
95
95
  | SoT bindings | `/api/sot-bindings/*` | `sot-bindings.ts` | Source-of-truth bindings (vault ↔ daemon). |
96
- | Voice | `/api/voice/*` | `voice.ts` | Voice transcript cache + transcribe-on-demand. |
96
+ | Voice | `/api/voice/*` | `voice.ts` | Whisper model install / status / weight-removal opt-in surface for the dashboard. |
97
97
 
98
98
  ### Integrations
99
99
 
100
100
  | Group | Path | Source | Purpose |
101
101
  |---|---|---|---|
102
- | Mail | `/api/mail/*` | `mail.ts`, `mail-search.ts` | Multi-provider mail proxy (Gmail / Outlook / Yahoo / iCloud / IMAP) + FTS5 local search. |
102
+ | Mail | `/api/mail/*` | `mail/` | Multi-provider mail proxy (Gmail / Outlook / Yahoo / iCloud / IMAP) + FTS5 local search. |
103
103
  | Calendar | `/api/calendar/*` | `calendar.ts` | Google Calendar proxy. |
104
104
  | Apple Calendar | `/api/apple-calendar/*` | `apple-calendar.ts` | macOS Calendar.app bridge. |
105
105
  | Notion | `/api/notion/*` | `notion.ts` | Notion proxy. |
@@ -107,7 +107,7 @@ callers pass it as `Authorization: Bearer <token>`.
107
107
  | Git | `/api/git/*`, `/api/git-accounts/*` | `git.ts`, `git-accounts.ts`, `git-templates.ts` | Read-only git proxy (`/api/git/{log,diff,show}`), repo templates (`/api/git/templates/*`), and git-account CRUD (`/api/git-accounts/*`). |
108
108
  | Repositories | `/api/repositories/*` | `repositories.ts` | Unified repository CRUD (replaces split Git/GitHub settings). |
109
109
  | GitHub | `/api/github/*`, `POST /webhook/github` | `github.ts` | GitHub proxy and webhook receiver (mounted under `/`, not `/api`). |
110
- | Integrations | `/api/integrations/*` | `integrations.ts`, `integrations-reconcile.ts` | Integration mode CRUD (`direct \| delegated \| native \| disabled`), live probe endpoint, mode reconciliation. |
110
+ | Integrations | `/api/integrations/*` | `integrations/`, `integrations-reconcile.ts` | Integration mode CRUD (`direct \| delegated \| native \| disabled`), live probe endpoint, mode reconciliation. |
111
111
  | Delegated sync | `/api/delegated/*`, `/api/delegated-sync/*` | `delegated.ts`, `delegated-sync.ts` | Delegated worker control + opt-in cadence config. |
112
112
  | MCP | `/api/mcp/*` | `mcp.ts` | Per-session MCP materializer. |
113
113
 
@@ -129,6 +129,27 @@ callers pass it as `Authorization: Bearer <token>`.
129
129
  | Books | `/api/books/*` | `books.ts` | Reading-list CRUD. |
130
130
  | Travel bookings | `/api/travel-bookings/*` | `travel-bookings.ts` | Travel-booking CRUD. |
131
131
 
132
+ ### Feedback learning
133
+
134
+ All three routes are `RiskTier.Autonomous`. `POST /api/feedback` server-restricts `source` to `explicit` / `self_critique` — `behavioral` signals are daemon-only (written by `SignalDetector`) and a `behavioral` body returns 400.
135
+
136
+ | Group | Path | Source | Purpose |
137
+ |---|---|---|---|
138
+ | Feedback | `POST /api/feedback` | `feedback.ts` | Record an explicit or self-critique feedback signal. Dedups on `(scope_type, scope_ref, summary)` within 10 min. When `feedbackLearningEnabled=false` returns `200 {disabled:true}` without recording. |
139
+ | Feedback consume | `POST /api/feedback/consume` | `feedback.ts` | `{ids: number[], lessonRef?}` → `{consumed, notFound}`. Marks signals consumed after a consolidation pass. |
140
+ | Feedback lessons | `GET /api/feedback/lessons` | `feedback.ts` | Read-only lesson-store overview for the dashboard — global `agent` store plus every per-agent store on disk, with cap-utilisation metrics. |
141
+
142
+ ### Self-tuning
143
+
144
+ Both routes are `RiskTier.Autonomous`. The weekly review's Recommend pre-step generates at most 3 bounded recommendations per cycle; verdicts may only reference the single-use ids the daemon generated for the **current** cycle (the pending blob is overwritten — and prior ids expired — every weekly run). Verdicts are always recorded and audited as `agent_actions.action_type='self_tuning.verdict'`, and rejections become `self_critique` feedback signals server-side.
145
+
146
+ While `selfTuningEnabled=false` (the shipped default) the loop runs in **shadow mode**: nothing is ever actuated and responses carry `shadow: true` with an empty `applied` array. With the flag on (**live mode**), newly-recorded `apply` verdicts actuate per key namespace: config knobs go through the `applyConfigUpdates` chokepoint (bounds enforced there), write a `runtime_state.self_tuning:<key>` ledger entry, audit `self_tuning.applied`, and DM the owner one line with the `!revert tuning` undo hint; `notification:<type>` (R2) applies are recorded as lesson guidance only; `recurring_schedules:<id>` (R4) applies become an owner DM suggestion — never an automatic flip. Retried POSTs are `duplicate` per id and never re-actuate. A daily auto-revert monitor re-measures each applied change after its 7-day verify window and reverts on regression (audit `self_tuning.reverted`, 28-day re-proposal cool-down); clean windows are stamped `self_tuning.verified`.
147
+
148
+ | Group | Path | Source | Purpose |
149
+ |---|---|---|---|
150
+ | Tuning verdicts | `POST /api/tuning/verdicts` | `tuning.ts` | `{cycleId, verdicts: [{id, verdict: apply\|reject\|defer, reason}]}` → per-id `recorded`/`duplicate`/`conflict` results plus `shadow`, `applied[]`, and `actuationFailures[]`. Idempotent per id (first verdict wins); 400 atomically on any unknown id; 409 on a missing or expired cycle. |
151
+ | Tuning pending | `GET /api/tuning/pending` | `tuning.ts` | The current cycle's recommendations + recorded verdicts, for the owner's validation and the dashboard. `shadow` reflects the live flag. |
152
+
132
153
  ### Docs and wiki
133
154
 
134
155
  | Group | Path | Source | Purpose |
@@ -28,7 +28,7 @@ ask_examples:
28
28
  - How do I check my install with aitne doctor?
29
29
  locale: en-US
30
30
  created: 2026-04-27
31
- updated: 2026-05-28
31
+ updated: 2026-06-07
32
32
  keywords:
33
33
  - aitne start
34
34
  - aitne stop
@@ -95,7 +95,7 @@ needed.
95
95
  | `aitne open` | Open the dashboard root in the default browser. |
96
96
  | `aitne doctor` | Install-health checks (Node, ports, OS keychain, backend CLIs, native bindings, …). |
97
97
  | `aitne audit [--since 24h] [--type X] [--result failed]` | Show the agent action log; flags filter by time, action type, result, or backend. `--json` for machine-readable. |
98
- | `aitne run-now <job>` | Fire a daemon-internal maintenance job on demand. The only supported job today is `roadmap_maintenance`. Reads the API token from the macOS Keychain, so this command is macOS-only. |
98
+ | `aitne run-now <job>` | Fire a daemon-internal maintenance job on demand. The only supported job today is `roadmap_maintenance`. Reads the API token from the OS secret store (macOS Keychain, Windows DPAPI, Linux libsecret, or the encrypted file fallback), so it works on every supported platform. |
99
99
  | `aitne verify [target]` | Run post-launch verification for a shipped design surface (e.g. `evening-review-slimdown`). |
100
100
  | `aitne version [--json]` | Print version, Node version, install path, last build time. |
101
101
  | `aitne update [--check]` | Print the npm command to upgrade. `--check` makes one network call to compare against the latest published version. |
@@ -150,7 +150,7 @@ and the cost-gate / approval semantics.
150
150
  |---|---|---|
151
151
  | `PA_DATA_DIR` | `~/.personal-agent` | Where logs, the SQLite DB, context Markdown, and prompts live. |
152
152
  | `PA_API_PORT` | `8321` | Daemon HTTP port. |
153
- | `PA_DASHBOARD_PORT` | `3000` | Dashboard port. |
153
+ | `PA_DASHBOARD_PORT` | `8322` | Dashboard port. |
154
154
 
155
155
  All runtime state — PIDs, logs, SQLite DB, context Markdown, prompts —
156
156
  lives under `PA_DATA_DIR`, **not** inside the repo.