@aitne-sh/aitne 0.1.10 → 0.1.12
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 +12 -8
- package/agent-assets/agent-profiles/background-task.md +53 -0
- package/agent-assets/agent-profiles/conversational.md +1 -0
- package/agent-assets/agent-profiles/routine-fetch-window.md +14 -75
- package/agent-assets/agent-profiles/routine.md +1 -1
- package/agent-assets/agents/{hourly-check → activity-scan}/agent.md +22 -17
- package/agent-assets/agents/monthly-review/agent.md +6 -5
- package/agent-assets/agents/morning-routine/agent.md +3 -4
- package/agent-assets/docs/concepts/agent-day.md +4 -5
- package/agent-assets/docs/concepts/auth-health.md +23 -20
- package/agent-assets/docs/concepts/backends-and-tiers.md +25 -18
- package/agent-assets/docs/concepts/costs-and-quotas.md +11 -10
- package/agent-assets/docs/concepts/delegated-mode.md +13 -12
- package/agent-assets/docs/concepts/memory-model.md +13 -9
- package/agent-assets/docs/concepts/observations.md +24 -20
- package/agent-assets/docs/concepts/process-keys.md +10 -9
- package/agent-assets/docs/concepts/routines.md +34 -31
- package/agent-assets/docs/concepts/safety-and-execution.md +11 -7
- package/agent-assets/docs/concepts/safety-model.md +19 -8
- package/agent-assets/docs/concepts/skills.md +10 -8
- package/agent-assets/docs/features/integrations/browser-history.md +14 -10
- package/agent-assets/docs/features/integrations/calendar.md +24 -13
- package/agent-assets/docs/features/integrations/git.md +13 -11
- package/agent-assets/docs/features/integrations/github.md +22 -14
- package/agent-assets/docs/features/integrations/mail.md +22 -20
- package/agent-assets/docs/features/integrations/notion.md +35 -11
- package/agent-assets/docs/features/integrations/obsidian.md +8 -8
- package/agent-assets/docs/features/lifestyle/git.md +24 -20
- package/agent-assets/docs/features/lifestyle/reading.md +5 -3
- package/agent-assets/docs/features/lifestyle/receipts.md +11 -10
- package/agent-assets/docs/features/memory-files/agent-journal.md +25 -16
- package/agent-assets/docs/features/memory-files/agent-lessons.md +7 -6
- package/agent-assets/docs/features/memory-files/projects.md +5 -4
- package/agent-assets/docs/features/memory-files/schedule.md +6 -3
- package/agent-assets/docs/features/memory-files/today.md +10 -7
- package/agent-assets/docs/features/memory-files/user-profile.md +14 -9
- package/agent-assets/docs/features/messaging/bang-commands.md +21 -6
- package/agent-assets/docs/features/messaging/dashboard-chat.md +1 -1
- package/agent-assets/docs/features/messaging/overview.md +12 -9
- package/agent-assets/docs/features/operations/activity-and-conversations.md +1 -1
- package/agent-assets/docs/features/operations/browser-tasks.md +184 -0
- package/agent-assets/docs/features/operations/cost-tracking.md +11 -1
- package/agent-assets/docs/features/operations/managed-chromium.md +1 -0
- package/agent-assets/docs/features/operations/notifications.md +11 -1
- package/agent-assets/docs/features/operations/quiet-hours.md +41 -12
- package/agent-assets/docs/features/operations/schedule-approaching.md +2 -2
- package/agent-assets/docs/features/routines/activity-scan.md +220 -0
- package/agent-assets/docs/features/routines/custom-routines.md +82 -138
- package/agent-assets/docs/features/routines/evening-review.md +14 -12
- package/agent-assets/docs/features/routines/morning-routine.md +5 -4
- package/agent-assets/docs/features/routines/weekly-review.md +18 -3
- package/agent-assets/docs/features/wiki/commands.md +1 -1
- package/agent-assets/docs/features/wiki/dashboard.md +1 -1
- package/agent-assets/docs/getting-started/01-what-is-this.md +4 -4
- package/agent-assets/docs/getting-started/04-first-day.md +27 -30
- package/agent-assets/docs/glossary.md +8 -7
- package/agent-assets/docs/guides/add-a-custom-routine.md +122 -68
- package/agent-assets/docs/guides/budget-and-cost-for-wiki.md +5 -3
- package/agent-assets/docs/guides/change-which-model-handles-x.md +1 -1
- package/agent-assets/docs/guides/multiple-wikis-for-multiple-domains.md +1 -1
- package/agent-assets/docs/guides/pause-the-agent.md +22 -20
- package/agent-assets/docs/guides/reinstall-cleanly.md +2 -0
- package/agent-assets/docs/guides/setup-wizard.md +13 -10
- package/agent-assets/docs/reference/api.md +11 -0
- package/agent-assets/docs/reference/config.md +30 -20
- package/agent-assets/docs/reference/keyboard-shortcuts.md +2 -2
- package/agent-assets/docs/reference/knowledge-layout.md +14 -10
- package/agent-assets/docs/reference/process-keys.md +7 -7
- package/agent-assets/docs/reference/skills.md +5 -2
- package/agent-assets/docs/troubleshooting/morning-routine-didnt-run.md +32 -16
- package/agent-assets/docs/troubleshooting/observation-not-detected.md +26 -24
- package/agent-assets/docs/troubleshooting/wiki-ingest-full-blocked.md +1 -1
- package/agent-assets/docs/troubleshooting/wiki-write-failed.md +3 -3
- package/agent-assets/playbooks/markdown-note.md +43 -0
- package/agent-assets/playbooks/monitoring.md +29 -0
- package/agent-assets/playbooks/research.md +47 -0
- package/agent-assets/skills/agent-create/SKILL.md +45 -29
- package/agent-assets/skills/agent-create/references/prompt-frame-extended.md +132 -0
- package/agent-assets/skills/agent-create/references/prompt-frame.md +125 -0
- package/agent-assets/skills/background-task/SKILL.md +184 -0
- package/agent-assets/skills/background-task-reply/SKILL.md +100 -0
- package/agent-assets/skills/board/SKILL.md +93 -0
- package/agent-assets/skills/browser-history/SKILL.md +34 -16
- package/agent-assets/skills/browser-history-respond/SKILL.md +3 -3
- package/agent-assets/skills/browser-task/SKILL.md +14 -7
- package/agent-assets/skills/context/SKILL.md +4 -3
- package/agent-assets/skills/context/references/api.md +5 -3
- package/agent-assets/skills/context/references/snapshot-files.md +4 -4
- package/agent-assets/skills/external-services/SKILL.native.claude.md +13 -7
- package/agent-assets/skills/external-services/SKILL.native.codex.md +11 -5
- package/agent-assets/skills/external-services/SKILL.native.gemini.md +11 -5
- package/agent-assets/skills/mail/SKILL.md +2 -2
- package/agent-assets/skills/mail/SKILL.native.claude.md +16 -9
- package/agent-assets/skills/mail/SKILL.native.codex.md +15 -8
- package/agent-assets/skills/mail/SKILL.native.gemini.md +11 -5
- package/agent-assets/skills/managed-tasks/references/recurrence-rule.md +20 -12
- package/agent-assets/skills/management-policy/SKILL.md +26 -17
- package/agent-assets/skills/management-policy/curation.json +1 -1
- package/agent-assets/skills/management-policy/references/policy-workflow.md +26 -13
- package/agent-assets/skills/notify/SKILL.md +10 -5
- package/agent-assets/skills/notify/references/priority.md +30 -17
- package/agent-assets/skills/notion/SKILL.md +1 -1
- package/agent-assets/skills/notion/SKILL.native.claude.md +3 -3
- package/agent-assets/skills/notion/SKILL.native.codex.md +2 -2
- package/agent-assets/skills/notion/SKILL.native.gemini.md +2 -2
- package/agent-assets/skills/observations/SKILL.md +5 -5
- package/agent-assets/skills/roadmap/references/api.md +7 -2
- package/agent-assets/skills/schedule/SKILL.md +26 -15
- package/agent-assets/skills/schedule/references/batch.md +1 -1
- package/agent-assets/skills/schedule/references/model-selection.md +1 -1
- package/agent-assets/skills/schedule/references/prompt-frame.md +125 -0
- package/agent-assets/skills/schedule/references/recurrence-rule.md +20 -12
- package/agent-assets/skills/scheduled-managed-task/SKILL.md +12 -9
- package/agent-assets/skills/task/SKILL.md +79 -0
- package/agent-assets/skills/today/SKILL.md +19 -3
- package/agent-assets/skills/today/references/agent-plan-lifecycle.md +9 -4
- package/agent-assets/skills/today/references/agent-plan-revision.md +28 -0
- package/agent-assets/skills/today/references/today-skeleton.md +5 -5
- package/agent-assets/skills/user-interview/references/op-morning.md +1 -1
- package/agent-assets/system-prompts/routine-research-cluster-update.md +71 -0
- package/agent-assets/task-flows/_partials/notion-acquire.notion.md +47 -21
- package/agent-assets/task-flows/background_task.md +81 -0
- package/agent-assets/task-flows/git.local_ahead.stale.md +1 -1
- package/agent-assets/task-flows/git.push.detected.md +1 -1
- package/agent-assets/task-flows/git.tag.created.md +1 -1
- 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.security_alert.md +1 -1
- package/agent-assets/task-flows/message.received.dm.md +7 -3
- package/agent-assets/task-flows/message.received.dm_first.md +4 -2
- package/agent-assets/task-flows/{routine.hourly_check.md → routine.activity_scan.md} +31 -23
- package/agent-assets/task-flows/{routine.hourly_check.triage.md → routine.activity_scan.triage.md} +3 -3
- package/agent-assets/task-flows/routine.monthly_review.md +9 -8
- package/agent-assets/task-flows/routine.research_cluster_update.md +33 -19
- package/agent-assets/task-flows/routine.roadmap_refresh.md +2 -2
- package/agent-assets/task-flows/routine.today_refresh.md +1 -1
- package/agent-assets/task-flows/routine.weekly_review.md +103 -4
- package/agent-assets/task-flows/schedule.approaching.md +2 -2
- package/agent-assets/task-flows/scheduled.dm.md +96 -12
- package/agent-assets/task-flows/scheduled.task.md +7 -1
- package/agent-assets/templates/_manifest.json +2 -2
- package/agent-assets/templates/knowledge/dossiers/_index.md +1 -1
- package/agent-assets/templates/knowledge/dossiers/{hourly.md → activity-scan.md} +1 -1
- package/agent-assets/templates/policies/journal-format.md +1 -1
- package/agent-assets/templates/policies/mcp.md +1 -1
- package/agent-assets/templates/policies/routines/_index.md +1 -1
- package/agent-assets/templates/policies/routines/{hourly.md → activity-scan.md} +5 -5
- package/package.json +6 -5
- 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:
|
|
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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
|
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-
|
|
35
|
+
updated: 2026-06-10
|
|
31
36
|
keywords:
|
|
32
|
-
-
|
|
33
|
-
-
|
|
37
|
+
- recurring agent
|
|
38
|
+
- new agent
|
|
34
39
|
- cron
|
|
40
|
+
- schedule
|
|
35
41
|
- recurrence
|
|
36
|
-
-
|
|
37
|
-
-
|
|
42
|
+
- task prompt
|
|
43
|
+
- agent.task
|
|
38
44
|
ui_anchors:
|
|
39
|
-
- /
|
|
45
|
+
- /agents
|
|
40
46
|
api_endpoints:
|
|
41
|
-
-
|
|
47
|
+
- POST /api/agents
|
|
48
|
+
- GET /api/agents/{slug}/executions
|
|
49
|
+
- POST /api/agents/{slug}/run-now
|
|
42
50
|
context_files:
|
|
43
|
-
- policies/
|
|
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
|
-
#
|
|
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 `/
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
- **
|
|
68
|
-
|
|
69
|
-
`
|
|
70
|
-
|
|
71
|
-
- **
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
- **Backend tier** — `lite` (Haiku), `medium`
|
|
75
|
-
(
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
- **
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
context
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
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
|
-
|
|
106
|
-
|
|
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
|
-
-
|
|
111
|
-
|
|
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
|
-
-
|
|
116
|
-
|
|
117
|
-
-
|
|
118
|
-
|
|
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)
|
|
@@ -91,9 +91,11 @@ Per-file token approximation is script-aware: ~4 characters per token
|
|
|
91
91
|
for Latin/prose, ~1.5 for majority-CJK files, with a 200-token floor
|
|
92
92
|
per file so empty or one-line stubs still account for the fixed
|
|
93
93
|
per-call overhead (system prompt, skills bundle, tool docs). The unit
|
|
94
|
-
cost (`$0.003` per 1k tokens) matches Claude Sonnet
|
|
95
|
-
Mtoken input price.
|
|
96
|
-
|
|
94
|
+
cost (`$0.003` per 1k tokens) matches Claude Sonnet 5's ~$3 /
|
|
95
|
+
Mtoken standard input price. (An introductory $2 / Mtoken rate runs
|
|
96
|
+
through 2026-08-31; the estimate lists the standard rate, while the
|
|
97
|
+
SDK's billed `total_cost_usd` reflects the intro price during the
|
|
98
|
+
window.) The bracket lets you see a worst case before approving.
|
|
97
99
|
|
|
98
100
|
> The dashboard surfaces the top raw files by estimated token count,
|
|
99
101
|
> so you can see which sources dominate the bill before approving.
|
|
@@ -76,7 +76,7 @@ delegated routine onto Gemini to save Claude quota.
|
|
|
76
76
|
|
|
77
77
|
To give the evening review deeper reasoning, set
|
|
78
78
|
`routine.evening_review` → main `claude`, tier `high`. The next evening
|
|
79
|
-
run resolves to **Opus 4.8** instead of the default Sonnet
|
|
79
|
+
run resolves to **Opus 4.8** instead of the default Sonnet 5. The
|
|
80
80
|
execution budget for that run also scales with the tier (high tier
|
|
81
81
|
carries a larger turn / cost envelope than medium).
|
|
82
82
|
|
|
@@ -196,7 +196,7 @@ vault on Opus 4.8 and a parenting journal on Haiku 4.5 at the same
|
|
|
196
196
|
time, you cannot — the `wiki.ask` row resolves to one backend/model for
|
|
197
197
|
every workspace. The pragmatic shape is:
|
|
198
198
|
|
|
199
|
-
- Bind `wiki.ask` to its medium-tier default (Sonnet
|
|
199
|
+
- Bind `wiki.ask` to its medium-tier default (Sonnet 5), a sensible
|
|
200
200
|
cross-workspace balance of cost and quality.
|
|
201
201
|
- Keep cost differences per workspace through each workspace's own
|
|
202
202
|
full-compile approval threshold (see above).
|
|
@@ -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-06-
|
|
26
|
+
updated: 2026-06-10
|
|
27
27
|
keywords:
|
|
28
28
|
- pause agent
|
|
29
29
|
- stop agent
|
|
@@ -36,11 +36,10 @@ related:
|
|
|
36
36
|
- features/messaging/bang-commands
|
|
37
37
|
- concepts/routines
|
|
38
38
|
ui_anchors:
|
|
39
|
-
- /settings/
|
|
40
|
-
- /settings/routines
|
|
39
|
+
- /settings/hours
|
|
41
40
|
- /agents
|
|
42
41
|
config_keys:
|
|
43
|
-
-
|
|
42
|
+
- activityScanEnabled
|
|
44
43
|
- monthlyReviewEnabled
|
|
45
44
|
- quietHoursStart
|
|
46
45
|
- quietHoursEnd
|
|
@@ -63,7 +62,7 @@ DM `!stop` to the agent on any paired messaging app. This is the
|
|
|
63
62
|
recommended way to go silent and the only one you need for most cases:
|
|
64
63
|
|
|
65
64
|
- It pauses **every** cron-driven routine — morning, evening, weekly,
|
|
66
|
-
monthly, and the
|
|
65
|
+
monthly, and the activity scan — not just one of them.
|
|
67
66
|
- Non-command DMs are declined with a paused notice (no LLM cost)
|
|
68
67
|
until you resume.
|
|
69
68
|
- The paused state is persisted, so a daemon restart does **not**
|
|
@@ -76,26 +75,29 @@ Resume with `!start` whenever you want the agent active again. See
|
|
|
76
75
|
|
|
77
76
|
## Finer-grained control from the dashboard
|
|
78
77
|
|
|
79
|
-
If you want to mute specific behaviour rather than pause everything
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
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.
|
|
90
92
|
|
|
91
93
|
Morning (fires at the day boundary, default 04:00), evening (18:00),
|
|
92
94
|
and weekly (Fri 19:00) reviews each have a per-routine Enable/Disable
|
|
93
95
|
toggle on the `/agents` page — open `/agents/<slug>` (e.g.
|
|
94
96
|
`/agents/weekly-review`) and click Disable (a stop-warning confirmation
|
|
95
97
|
appears for these system agents). To halt all of them at once, use
|
|
96
|
-
`!stop` above instead.
|
|
97
|
-
on
|
|
98
|
-
|
|
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`).
|
|
99
101
|
|
|
100
102
|
## Last resort: stop the daemon
|
|
101
103
|
|
|
@@ -115,7 +117,7 @@ temporary pause that survives across days, prefer `!stop`. Restart with
|
|
|
115
117
|
|
|
116
118
|
- A routine still fires after `!stop`: confirm the pause registered by
|
|
117
119
|
checking `!help` or the dashboard banner; re-send `!stop`.
|
|
118
|
-
- A
|
|
120
|
+
- A setting on `/settings/hours` did not take effect: confirm it
|
|
119
121
|
saved — the dashboard's "Save" button must be clicked.
|
|
120
122
|
|
|
121
123
|
## Related
|
|
@@ -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-06-
|
|
32
|
+
updated: 2026-06-10
|
|
33
33
|
keywords:
|
|
34
34
|
- setup
|
|
35
35
|
- wizard
|
|
@@ -57,8 +57,8 @@ ui_anchors:
|
|
|
57
57
|
- /setup
|
|
58
58
|
- /settings/models
|
|
59
59
|
- /connections
|
|
60
|
-
- /
|
|
61
|
-
- /settings/
|
|
60
|
+
- /agents
|
|
61
|
+
- /settings/hours
|
|
62
62
|
---
|
|
63
63
|
|
|
64
64
|
# Setup Wizard Walkthrough
|
|
@@ -143,7 +143,7 @@ subscription. Anthropic in particular currently prohibits using the
|
|
|
143
143
|
Claude Agent SDK with a Claude Pro / Max subscription.
|
|
144
144
|
|
|
145
145
|
Per-process model bindings are seeded with fixed defaults: **Claude
|
|
146
|
-
Sonnet
|
|
146
|
+
Sonnet 5** (`claude-sonnet-5`) for owner-facing work and **Claude
|
|
147
147
|
Haiku 4.5** (`claude-haiku-4-5-20251001`) for delegated/simple
|
|
148
148
|
polling. Opus (`claude-opus-4-8`) is registered but not seeded — opt
|
|
149
149
|
in per row. There are no subscription-plan questions. Change the
|
|
@@ -188,12 +188,15 @@ character prompt referenced in Step 1 actually gets written.
|
|
|
188
188
|
|
|
189
189
|
## After the wizard
|
|
190
190
|
|
|
191
|
-
Routines are **not** configured in the wizard.
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
`/
|
|
196
|
-
|
|
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.
|
|
197
200
|
|
|
198
201
|
## Verification
|
|
199
202
|
|
|
@@ -139,6 +139,17 @@ All three routes are `RiskTier.Autonomous`. `POST /api/feedback` server-restrict
|
|
|
139
139
|
| Feedback consume | `POST /api/feedback/consume` | `feedback.ts` | `{ids: number[], lessonRef?}` → `{consumed, notFound}`. Marks signals consumed after a consolidation pass. |
|
|
140
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
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
|
+
|
|
142
153
|
### Docs and wiki
|
|
143
154
|
|
|
144
155
|
| Group | Path | Source | Purpose |
|
|
@@ -36,14 +36,14 @@ keywords:
|
|
|
36
36
|
- EDITABLE_RUNTIME_KEY_TUPLE
|
|
37
37
|
- RESTART_REQUIRED_KEY_TUPLE
|
|
38
38
|
- dayBoundaryHour
|
|
39
|
-
-
|
|
39
|
+
- activityScanIntervalMinutes
|
|
40
40
|
- quietHoursStart
|
|
41
41
|
- quietHoursEnd
|
|
42
42
|
- executeTimeoutMinutes
|
|
43
43
|
- autonomousDailyCostCapUsd
|
|
44
44
|
- allowedToolsOverride
|
|
45
45
|
- voiceTranscriptionEnabled
|
|
46
|
-
-
|
|
46
|
+
- activityScanPrePassFreshnessMinutes
|
|
47
47
|
- vaultMode
|
|
48
48
|
- PA_DATA_DIR
|
|
49
49
|
- PA_API_PORT
|
|
@@ -52,9 +52,9 @@ config_keys:
|
|
|
52
52
|
- timezone
|
|
53
53
|
- primaryLanguage
|
|
54
54
|
- vaultMode
|
|
55
|
-
-
|
|
56
|
-
-
|
|
57
|
-
-
|
|
55
|
+
- activityScanEnabled
|
|
56
|
+
- activityScanIntervalMinutes
|
|
57
|
+
- activityScanPrePassFreshnessMinutes
|
|
58
58
|
- quietHoursStart
|
|
59
59
|
- quietHoursEnd
|
|
60
60
|
- maxNotificationsPerHour
|
|
@@ -75,7 +75,7 @@ api_endpoints:
|
|
|
75
75
|
- PATCH /api/config
|
|
76
76
|
- POST /api/voice/install
|
|
77
77
|
ui_anchors:
|
|
78
|
-
- /settings/
|
|
78
|
+
- /settings/infrastructure
|
|
79
79
|
- /settings/models
|
|
80
80
|
created: 2026-04-25
|
|
81
81
|
updated: 2026-06-08
|
|
@@ -131,19 +131,26 @@ case-sensitive.
|
|
|
131
131
|
| `primaryLanguage` | BCP-47 | Output language for DMs, journal, and Obsidian writes. Templates stay English-headered. |
|
|
132
132
|
| `vaultMode` | enum | Where context lives — `plain` (default; `<dataDir>/context`) or `obsidian` (an external Obsidian vault). |
|
|
133
133
|
|
|
134
|
-
###
|
|
134
|
+
### Activity scan and gate
|
|
135
|
+
|
|
136
|
+
The first five keys are **deprecated fallbacks**: the activity-scan
|
|
137
|
+
cadence, active window, min-observations threshold, and enable switch
|
|
138
|
+
moved onto the activity-scan agent (`/agents/activity-scan`, Definition
|
|
139
|
+
tab → Cadence card; Enable/Disable). The keys are still accepted by
|
|
140
|
+
`PATCH /api/config` but no longer surfaced in the dashboard; values
|
|
141
|
+
resolve agent override → legacy config key → built-in default.
|
|
135
142
|
|
|
136
143
|
| Key | Type | Notes |
|
|
137
144
|
|---|---|---|
|
|
138
|
-
| `
|
|
139
|
-
| `
|
|
140
|
-
| `
|
|
141
|
-
| `
|
|
142
|
-
| `
|
|
143
|
-
| `
|
|
144
|
-
| `
|
|
145
|
-
| `
|
|
146
|
-
| `
|
|
145
|
+
| `activityScanEnabled` | boolean | **Deprecated fallback** — the agent's enable switch on `/agents/activity-scan` is the source of truth. Default `true`. |
|
|
146
|
+
| `activityScanIntervalMinutes` | number | **Deprecated fallback** — edit on `/agents/activity-scan`. Default `60`. |
|
|
147
|
+
| `activityScanActiveStartHour` | 0–23 | **Deprecated fallback** — edit on `/agents/activity-scan`. Default `4`. |
|
|
148
|
+
| `activityScanActiveEndHour` | 1–24 | **Deprecated fallback** — edit on `/agents/activity-scan`. End-exclusive; `24` ≡ midnight. |
|
|
149
|
+
| `activityScanMinObservations` | number | **Deprecated fallback** — edit on `/agents/activity-scan`. Default `1`. |
|
|
150
|
+
| `activityScanStage2Enabled` | boolean | cost-reduction-structural §B Stage 2 toggle. |
|
|
151
|
+
| `activityScanHeartbeatHours` | number | Quiet-day heartbeat cadence. |
|
|
152
|
+
| `activityScanLowSignalPendingCeiling` | number | Low-signal ceiling before forcing dispatch. |
|
|
153
|
+
| `activityScanPrePassFreshnessMinutes` | 0–480 | Default `30`. Layer-1 freshness window — `harvestForGate` skips a per-integration fetch if `runtime_state.pre_pass_last_run:<key>` is fresher. Cap widened 240 → 480 for the self-tuning R1 ladder (120/240/360/480). |
|
|
147
154
|
|
|
148
155
|
### Notifications and quiet hours
|
|
149
156
|
|
|
@@ -248,6 +255,7 @@ page. Defaults and ranges below are enforced in
|
|
|
248
255
|
| Key | Type | Notes |
|
|
249
256
|
|---|---|---|
|
|
250
257
|
| `feedbackLearningEnabled` | boolean | Default `true` (env `FEEDBACK_LEARNING_ENABLED`). Master kill-switch for the whole loop — capture, consolidation, and injection. |
|
|
258
|
+
| `selfTuningEnabled` | boolean | Default `false` (env `SELF_TUNING_ENABLED`). Actuation gate for the self-tuning review cycle. While `false`, the loop runs in shadow mode: the weekly review still receives `<tuning_recommendations>` and records verdicts via `POST /api/tuning/verdicts`, but no config change is ever applied. With the flag on, apply verdicts for config knobs actuate through the bounded config chokepoint — one owner DM per applied change, `!revert tuning` undoes the latest, and a daily monitor auto-reverts any change whose 7-day verify metrics regressed. Flip only after ≥2 clean shadow cycles (SELF_TUNING_REVIEW_CYCLE_DESIGN.md §7 shadow→live gate). |
|
|
251
259
|
| `feedbackPromotionThreshold` | 1–10 | Default `2` (env `FEEDBACK_PROMOTION_THRESHOLD`). Weighted-evidence threshold a behavioral / self-critique lesson must clear before it becomes injectable. |
|
|
252
260
|
| `feedbackLessonMaxBytesGlobal` | 1024–32768 | Default `8192` (env `FEEDBACK_LESSON_MAX_BYTES_GLOBAL`). Byte cap for `policies/agent-lessons.md`. |
|
|
253
261
|
| `feedbackLessonMaxBytesPerAgent` | 512–16384 | Default `4096` (env `FEEDBACK_LESSON_MAX_BYTES_PER_AGENT`). Byte cap for each `policies/agents/<slug>/lessons.md`. |
|
|
@@ -266,11 +274,13 @@ shift the whole day, change `dayBoundaryHour` instead.
|
|
|
266
274
|
| `routine.morning_routine` | Daily at `dayBoundaryHour` (default 04:00). |
|
|
267
275
|
| `routine.evening_review` | Daily at `18:00` local. |
|
|
268
276
|
| `routine.weekly_review` | Friday `19:00` local (one hour after the evening review). |
|
|
269
|
-
| `routine.monthly_review` | Last day of the month at `18:00` local, but **disabled by default** (`monthlyReviewEnabled
|
|
277
|
+
| `routine.monthly_review` | Last day of the month at `18:00` local, but **disabled by default** — opt in by enabling the monthly-review agent at `/agents/monthly-review` (`agents.enabled` is the single switch; the legacy `monthlyReviewEnabled` config key is a deprecated fallback, carried forward once by a boot-time reconcile). |
|
|
270
278
|
|
|
271
|
-
The
|
|
272
|
-
cadence
|
|
273
|
-
(
|
|
279
|
+
The activity scan is the one autonomous routine with a configurable
|
|
280
|
+
cadence and active window — edited on the activity-scan agent's page
|
|
281
|
+
(`/agents/activity-scan`, Definition tab → Cadence card); the legacy
|
|
282
|
+
`activityScanIntervalMinutes` / `activityScanActiveStartHour` /
|
|
283
|
+
`…ActiveEndHour` keys remain as deprecated fallbacks.
|
|
274
284
|
|
|
275
285
|
## Restart-Required Keys
|
|
276
286
|
|
|
@@ -23,7 +23,7 @@ ask_examples:
|
|
|
23
23
|
- What does pressing "?" do in the dashboard?
|
|
24
24
|
locale: en-US
|
|
25
25
|
created: 2026-04-25
|
|
26
|
-
updated: 2026-
|
|
26
|
+
updated: 2026-06-10
|
|
27
27
|
keywords:
|
|
28
28
|
- shortcut
|
|
29
29
|
- hotkey
|
|
@@ -65,7 +65,7 @@ regardless of where focus sits.
|
|
|
65
65
|
## Examples
|
|
66
66
|
|
|
67
67
|
- Press `Cmd+K`, type "timezone", and hit Enter to jump straight to the
|
|
68
|
-
Timezone field on `/settings/
|
|
68
|
+
Timezone field on `/settings/hours`.
|
|
69
69
|
- On any screen, press `?` to ask a question about what you are looking
|
|
70
70
|
at; the help slide-over opens pre-scoped to that page's doc.
|
|
71
71
|
- While drafting a message in `/chat`, press `Cmd+Enter` to send without
|