@aitne-sh/aitne 0.1.11 → 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.
- package/README.md +4 -0
- package/agent-assets/agent-profiles/background-task.md +8 -1
- package/agent-assets/agent-profiles/routine-fetch-window.md +11 -0
- package/agent-assets/agents/evening-review/agent.md +6 -2
- package/agent-assets/agents/lesson-maintenance/agent.md +56 -0
- package/agent-assets/agents/morning-routine/agent.md +10 -6
- package/agent-assets/agents/source-librarian/agent.md +51 -0
- package/agent-assets/docs/concepts/agent-day.md +15 -15
- package/agent-assets/docs/concepts/auth-health.md +10 -7
- package/agent-assets/docs/concepts/backends-and-tiers.md +34 -23
- package/agent-assets/docs/concepts/costs-and-quotas.md +10 -10
- package/agent-assets/docs/concepts/delegated-mode.md +18 -18
- package/agent-assets/docs/concepts/memory-model.md +25 -24
- package/agent-assets/docs/concepts/observations.md +27 -19
- package/agent-assets/docs/concepts/process-keys.md +25 -26
- package/agent-assets/docs/concepts/routines.md +18 -17
- package/agent-assets/docs/concepts/safety-and-execution.md +20 -17
- package/agent-assets/docs/concepts/safety-model.md +16 -15
- package/agent-assets/docs/concepts/skills.md +7 -4
- package/agent-assets/docs/features/integrations/browser-history.md +52 -47
- package/agent-assets/docs/features/integrations/calendar.md +7 -7
- package/agent-assets/docs/features/integrations/git.md +15 -13
- package/agent-assets/docs/features/integrations/github.md +12 -10
- package/agent-assets/docs/features/integrations/mail.md +47 -45
- package/agent-assets/docs/features/integrations/notion.md +15 -11
- package/agent-assets/docs/features/integrations/obsidian.md +27 -23
- package/agent-assets/docs/features/lifestyle/git.md +7 -8
- package/agent-assets/docs/features/lifestyle/reading.md +11 -8
- package/agent-assets/docs/features/lifestyle/receipts.md +21 -22
- package/agent-assets/docs/features/lifestyle/travel-bookings.md +9 -9
- package/agent-assets/docs/features/memory-files/agent-journal.md +12 -10
- package/agent-assets/docs/features/memory-files/agent-lessons.md +46 -21
- package/agent-assets/docs/features/memory-files/projects.md +13 -14
- package/agent-assets/docs/features/memory-files/roadmap.md +16 -15
- package/agent-assets/docs/features/memory-files/schedule.md +10 -10
- package/agent-assets/docs/features/memory-files/today.md +18 -18
- package/agent-assets/docs/features/memory-files/user-profile.md +17 -17
- package/agent-assets/docs/features/messaging/bang-commands.md +15 -15
- package/agent-assets/docs/features/messaging/dashboard-chat.md +8 -7
- package/agent-assets/docs/features/messaging/discord.md +7 -5
- package/agent-assets/docs/features/messaging/overview.md +14 -14
- package/agent-assets/docs/features/messaging/pairing-and-magic-phrase.md +12 -12
- package/agent-assets/docs/features/messaging/slack.md +9 -8
- package/agent-assets/docs/features/messaging/telegram.md +7 -7
- package/agent-assets/docs/features/messaging/whatsapp.md +6 -6
- package/agent-assets/docs/features/operations/activity-and-conversations.md +9 -9
- package/agent-assets/docs/features/operations/approvals.md +13 -12
- package/agent-assets/docs/features/operations/backend-routing.md +38 -37
- package/agent-assets/docs/features/operations/browser-tasks.md +63 -57
- package/agent-assets/docs/features/operations/cost-tracking.md +5 -5
- package/agent-assets/docs/features/operations/managed-chromium.md +23 -22
- package/agent-assets/docs/features/operations/notifications.md +15 -15
- package/agent-assets/docs/features/operations/quiet-hours.md +14 -15
- package/agent-assets/docs/features/operations/schedule-approaching.md +16 -14
- package/agent-assets/docs/features/routines/activity-scan.md +14 -11
- package/agent-assets/docs/features/routines/custom-routines.md +9 -7
- package/agent-assets/docs/features/routines/evening-review.md +6 -7
- package/agent-assets/docs/features/routines/morning-routine.md +23 -22
- package/agent-assets/docs/features/routines/weekly-review.md +57 -51
- package/agent-assets/docs/features/wiki/commands.md +28 -22
- package/agent-assets/docs/features/wiki/cost-and-approval.md +28 -23
- package/agent-assets/docs/features/wiki/dashboard.md +22 -24
- package/agent-assets/docs/features/wiki/overview.md +17 -25
- package/agent-assets/docs/features/wiki/search.md +15 -17
- package/agent-assets/docs/features/wiki/workspaces.md +55 -56
- package/agent-assets/docs/getting-started/01-what-is-this.md +4 -5
- package/agent-assets/docs/getting-started/02-first-steps.md +12 -13
- package/agent-assets/docs/getting-started/03-what-can-this-do.md +7 -7
- package/agent-assets/docs/getting-started/04-first-day.md +4 -5
- package/agent-assets/docs/glossary.md +21 -19
- package/agent-assets/docs/guides/add-a-custom-routine.md +17 -12
- package/agent-assets/docs/guides/backup-and-restore.md +19 -16
- package/agent-assets/docs/guides/budget-and-cost-for-wiki.md +57 -62
- package/agent-assets/docs/guides/build-your-wiki.md +11 -12
- package/agent-assets/docs/guides/change-which-model-handles-x.md +30 -28
- package/agent-assets/docs/guides/connect-a-new-mail-account.md +30 -29
- package/agent-assets/docs/guides/explore-with-trace-and-connect.md +30 -32
- package/agent-assets/docs/guides/import-knowledge-file.md +9 -10
- package/agent-assets/docs/guides/install-and-run.md +9 -10
- package/agent-assets/docs/guides/maintain-wiki-health.md +10 -10
- package/agent-assets/docs/guides/migrate-machines.md +16 -14
- package/agent-assets/docs/guides/multiple-wikis-for-multiple-domains.md +12 -13
- package/agent-assets/docs/guides/pause-the-agent.md +25 -25
- package/agent-assets/docs/guides/reinstall-cleanly.md +13 -12
- package/agent-assets/docs/guides/setup-wizard.md +10 -12
- package/agent-assets/docs/guides/switch-default-backend.md +9 -9
- package/agent-assets/docs/guides/use-an-existing-obsidian-vault.md +9 -11
- package/agent-assets/docs/pages/activity.md +76 -0
- package/agent-assets/docs/pages/agents.md +78 -0
- package/agent-assets/docs/pages/analytics.md +70 -0
- package/agent-assets/docs/pages/browser.md +73 -0
- package/agent-assets/docs/pages/chat.md +67 -0
- package/agent-assets/docs/pages/connections.md +78 -0
- package/agent-assets/docs/pages/git.md +73 -0
- package/agent-assets/docs/pages/knowledge.md +75 -0
- package/agent-assets/docs/pages/overview.md +90 -0
- package/agent-assets/docs/pages/reading.md +65 -0
- package/agent-assets/docs/pages/settings.md +77 -0
- package/agent-assets/docs/pages/tasks.md +74 -0
- package/agent-assets/docs/pages/wiki.md +73 -0
- package/agent-assets/docs/reference/api.md +18 -17
- package/agent-assets/docs/reference/cli-commands.md +13 -10
- package/agent-assets/docs/reference/config.md +40 -35
- package/agent-assets/docs/reference/disallowed-tools.md +18 -17
- package/agent-assets/docs/reference/keyboard-shortcuts.md +6 -8
- package/agent-assets/docs/reference/knowledge-layout.md +10 -10
- package/agent-assets/docs/reference/process-keys.md +20 -22
- package/agent-assets/docs/reference/skills.md +18 -16
- package/agent-assets/docs/troubleshooting/auth-failed.md +13 -11
- package/agent-assets/docs/troubleshooting/dashboard-shows-degraded.md +10 -10
- package/agent-assets/docs/troubleshooting/fallback-keeps-firing.md +26 -24
- package/agent-assets/docs/troubleshooting/messaging-not-pairing.md +8 -9
- package/agent-assets/docs/troubleshooting/morning-routine-didnt-run.md +19 -18
- package/agent-assets/docs/troubleshooting/observation-not-detected.md +14 -15
- package/agent-assets/docs/troubleshooting/quota-exhausted.md +28 -26
- package/agent-assets/docs/troubleshooting/wiki-ingest-full-blocked.md +35 -34
- package/agent-assets/docs/troubleshooting/wiki-write-failed.md +21 -24
- 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 +71 -32
- 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 +13 -8
- package/agent-assets/skills/background-task-reply/SKILL.md +2 -2
- package/agent-assets/skills/board/SKILL.md +92 -0
- package/agent-assets/skills/browser-history/SKILL.md +3 -3
- package/agent-assets/skills/browser-history-respond/SKILL.md +3 -3
- package/agent-assets/skills/browser-task/SKILL.md +4 -2
- package/agent-assets/skills/context/seeds/file-responsibilities.seed.json +2 -1
- package/agent-assets/skills/schedule/SKILL.md +21 -18
- 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/sources/SKILL.md +68 -0
- package/agent-assets/skills/sources/curation.json +21 -0
- package/agent-assets/skills/sources/seeds/filing-rules.seed.json +25 -0
- package/agent-assets/skills/sources/seeds/source-collections.seed.json +20 -0
- package/agent-assets/skills/task/SKILL.md +82 -0
- package/agent-assets/task-flows/background_task.md +29 -3
- package/agent-assets/task-flows/message.received.dm.md +1 -1
- package/agent-assets/task-flows/routine.activity_scan.md +17 -2
- package/agent-assets/task-flows/routine.evening_review.md +72 -11
- package/agent-assets/task-flows/routine.fetch_window.md +21 -0
- package/agent-assets/task-flows/routine.monthly_review.md +3 -1
- package/agent-assets/task-flows/routine.morning_routine_today.md +26 -7
- package/agent-assets/task-flows/routine.source_maintenance.md +50 -0
- package/agent-assets/task-flows/scheduled.dm.md +29 -16
- package/agent-assets/templates/_manifest.json +1 -0
- package/agent-assets/templates/knowledge/sources/_index.md +19 -0
- package/package.json +4 -4
|
@@ -15,8 +15,6 @@ summary: |
|
|
|
15
15
|
and pointers to the canonical key tuples in shared/.
|
|
16
16
|
section: config
|
|
17
17
|
tags:
|
|
18
|
-
- core
|
|
19
|
-
- reference
|
|
20
18
|
- config
|
|
21
19
|
- operations
|
|
22
20
|
- backends
|
|
@@ -78,7 +76,7 @@ ui_anchors:
|
|
|
78
76
|
- /settings/infrastructure
|
|
79
77
|
- /settings/models
|
|
80
78
|
created: 2026-04-25
|
|
81
|
-
updated: 2026-
|
|
79
|
+
updated: 2026-07-01
|
|
82
80
|
related:
|
|
83
81
|
- reference/api
|
|
84
82
|
- reference/cli-commands
|
|
@@ -89,21 +87,24 @@ related:
|
|
|
89
87
|
# Config Reference
|
|
90
88
|
|
|
91
89
|
The full `AgentConfig` schema lives in
|
|
92
|
-
`packages/daemon/src/config.ts`. Three
|
|
93
|
-
`packages/shared/src/editable-config-keys.ts`
|
|
94
|
-
and when:
|
|
95
|
-
|
|
96
|
-
- **`EDITABLE_RUNTIME_KEY_TUPLE`** — the ~130 keys
|
|
97
|
-
via `PATCH /api/config`. Both the daemon and
|
|
98
|
-
|
|
99
|
-
in both packages.
|
|
100
|
-
- **`RESTART_REQUIRED_KEY_TUPLE`** — runtime
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
90
|
+
`packages/daemon/src/config.ts`. Three fixed lists of key names
|
|
91
|
+
(TypeScript tuples) in `packages/shared/src/editable-config-keys.ts`
|
|
92
|
+
decide which keys you can change, and when:
|
|
93
|
+
|
|
94
|
+
- **`EDITABLE_RUNTIME_KEY_TUPLE`** — the ~130 keys you can change while
|
|
95
|
+
the daemon is running, via `PATCH /api/config`. Both the daemon and
|
|
96
|
+
the dashboard import this list, so the set of accepted keys is checked
|
|
97
|
+
at compile time in both packages.
|
|
98
|
+
- **`RESTART_REQUIRED_KEY_TUPLE`** — keys you can edit at runtime, but
|
|
99
|
+
the new value only reaches a worker after a restart; it does not apply
|
|
100
|
+
to a worker that is already running. The dashboard shows a
|
|
101
|
+
restart-required badge for these.
|
|
102
|
+
- **`EDITABLE_BOOTSTRAP_KEY_TUPLE`** — only `apiPort`. It is written to
|
|
103
|
+
`.env` because the daemon reads it before it starts listening on the
|
|
104
|
+
network (binds to a port).
|
|
105
|
+
|
|
106
|
+
Any key that is not in one of these three lists can only be set through
|
|
107
|
+
an environment variable or by restarting.
|
|
107
108
|
|
|
108
109
|
## Where Each Field Comes From
|
|
109
110
|
|
|
@@ -116,9 +117,9 @@ Anything not in those tuples must be set via env or restart.
|
|
|
116
117
|
|
|
117
118
|
## Selected Keys
|
|
118
119
|
|
|
119
|
-
A representative
|
|
120
|
-
of ~130 keys is in `editable-config-keys.ts`.
|
|
121
|
-
case-sensitive.
|
|
120
|
+
A representative sample of `EDITABLE_RUNTIME_KEY_TUPLE`; the full list
|
|
121
|
+
of ~130 keys is in `editable-config-keys.ts`. The names below are exact
|
|
122
|
+
and case-sensitive.
|
|
122
123
|
|
|
123
124
|
### Identity and timezone
|
|
124
125
|
|
|
@@ -127,18 +128,19 @@ case-sensitive.
|
|
|
127
128
|
| `agentDisplayName` | string | What the agent calls itself in DMs. |
|
|
128
129
|
| `character` | string | Free-text user-defined communication style / persona (max 1000 chars). When non-empty, rendered as a `## Character (user-defined)` block into each backend's instruction file. The agent profile itself is selected by ProcessKey, not by this key. |
|
|
129
130
|
| `timezone` | IANA tz | Empty falls back to the system tz. |
|
|
130
|
-
| `dayBoundaryHour` | 0–9 | Default `4`.
|
|
131
|
+
| `dayBoundaryHour` | 0–9 | Default `4`. Sets the agent-day boundary — the moment "today" rolls over for the agent (must be an early-morning hour). |
|
|
131
132
|
| `primaryLanguage` | BCP-47 | Output language for DMs, journal, and Obsidian writes. Templates stay English-headered. |
|
|
132
133
|
| `vaultMode` | enum | Where context lives — `plain` (default; `<dataDir>/context`) or `obsidian` (an external Obsidian vault). |
|
|
133
134
|
|
|
134
135
|
### Activity scan and gate
|
|
135
136
|
|
|
136
|
-
The first five keys are **deprecated fallbacks
|
|
137
|
-
cadence, active window,
|
|
138
|
-
|
|
139
|
-
tab → Cadence card; Enable/Disable).
|
|
140
|
-
`PATCH /api/config`
|
|
141
|
-
|
|
137
|
+
The first five keys are **deprecated fallbacks**. The activity-scan
|
|
138
|
+
cadence (how often it runs), active window, minimum-observations
|
|
139
|
+
threshold, and enable switch now live on the activity-scan agent
|
|
140
|
+
(`/agents/activity-scan`, Definition tab → Cadence card; Enable/Disable).
|
|
141
|
+
`PATCH /api/config` still accepts these keys, but the dashboard no longer
|
|
142
|
+
shows them. A value resolves in this order: agent override → legacy
|
|
143
|
+
config key → built-in default.
|
|
142
144
|
|
|
143
145
|
| Key | Type | Notes |
|
|
144
146
|
|---|---|---|
|
|
@@ -247,7 +249,7 @@ resolve agent override → legacy config key → built-in default.
|
|
|
247
249
|
### Feedback learning
|
|
248
250
|
|
|
249
251
|
The feedback learning loop (capture → nightly consolidation → injection of
|
|
250
|
-
durable lessons). All
|
|
252
|
+
durable lessons). All knobs are runtime-editable via `PATCH /api/config`,
|
|
251
253
|
surfaced by `GET /config`, and tunable from the dashboard `/settings/lessons`
|
|
252
254
|
page. Defaults and ranges below are enforced in
|
|
253
255
|
`packages/daemon/src/settings/runtime-settings.ts`.
|
|
@@ -255,12 +257,15 @@ page. Defaults and ranges below are enforced in
|
|
|
255
257
|
| Key | Type | Notes |
|
|
256
258
|
|---|---|---|
|
|
257
259
|
| `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). |
|
|
260
|
+
| `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); the daemon DMs you once when 3 consecutive shadow cycles were fully approved (graduation). |
|
|
259
261
|
| `feedbackPromotionThreshold` | 1–10 | Default `2` (env `FEEDBACK_PROMOTION_THRESHOLD`). Weighted-evidence threshold a behavioral / self-critique lesson must clear before it becomes injectable. |
|
|
260
262
|
| `feedbackLessonMaxBytesGlobal` | 1024–32768 | Default `8192` (env `FEEDBACK_LESSON_MAX_BYTES_GLOBAL`). Byte cap for `policies/agent-lessons.md`. |
|
|
261
263
|
| `feedbackLessonMaxBytesPerAgent` | 512–16384 | Default `4096` (env `FEEDBACK_LESSON_MAX_BYTES_PER_AGENT`). Byte cap for each `policies/agents/<slug>/lessons.md`. |
|
|
262
|
-
| `feedbackLessonStaleDays` | 7–365 | Default `60` (env `FEEDBACK_LESSON_STALE_DAYS`).
|
|
264
|
+
| `feedbackLessonStaleDays` | 7–365 | Default `60` (env `FEEDBACK_LESSON_STALE_DAYS`). Staleness horizon for the graduated expiration lifecycle: an active lesson past the horizon whose time-decayed confidence is below the floor demotes to provisional (reversible); a provisional lesson uncorroborated for twice the horizon is archived. `kind=constraint` lessons are durable and never expire. |
|
|
263
265
|
| `feedbackSignalRetentionDays` | 30–365 | Default `180` (env `FEEDBACK_SIGNAL_RETENTION_DAYS`). Consumed `feedback_signals` rows older than this are swept. |
|
|
266
|
+
| `feedbackLessonConfidenceFloor` | 0–1 | Default `0.25` (env `FEEDBACK_LESSON_CONFIDENCE_FLOOR`). Inferred lessons whose effective (time-decayed) confidence `cf` falls below this floor are dropped from injection; also the demote test in the expiration lifecycle. Durable `constraint` lessons are exempt from the injection filter, and explicit owner corrections are floor-tested on their undecayed `cf` (an obeyed directive produces no corroborating signals, so decay alone must not silently un-bind it). `0` disables the filter. |
|
|
267
|
+
| `feedbackContradictionGuardCf` | 0–1 | Default `0.6` (env `FEEDBACK_CONTRADICTION_GUARD_CF`). Anti-whiplash guard: a new candidate contradicting an established lesson with `cf` at or above this value is held provisional until it accumulates 1.5x the usual evidence. Explicit owner corrections always win immediately. |
|
|
268
|
+
| `feedbackOutcomeLearningEnabled` | boolean | Default `true` (env `FEEDBACK_OUTCOME_LEARNING_ENABLED`). Includes the per-notification-type outcome rollup (replied / corrected / ignored, correction rate) in the nightly consolidation worksheet so lesson promotions weigh real reactions. |
|
|
264
269
|
|
|
265
270
|
## Routine Schedule Times Are Not Configurable
|
|
266
271
|
|
|
@@ -284,10 +289,10 @@ cadence and active window — edited on the activity-scan agent's page
|
|
|
284
289
|
|
|
285
290
|
## Restart-Required Keys
|
|
286
291
|
|
|
287
|
-
The `RESTART_REQUIRED_KEY_TUPLE` covers fields whose new value is
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
292
|
+
The `RESTART_REQUIRED_KEY_TUPLE` covers fields whose new value is saved
|
|
293
|
+
through `applyConfigUpdates` but does not reach a worker that is already
|
|
294
|
+
running — the dashboard shows a badge prompting an `aitne restart`. The
|
|
295
|
+
current list:
|
|
291
296
|
|
|
292
297
|
- `apiPort` (env-only)
|
|
293
298
|
- `externalObsidianVaultName` / `externalObsidianVaultPath` / `externalObsidianWatch`
|
|
@@ -14,9 +14,7 @@ summary: |
|
|
|
14
14
|
by skill-level allow-lists. Mirrors src/safety/always-disallowed.ts.
|
|
15
15
|
section: reference
|
|
16
16
|
tags:
|
|
17
|
-
- reference
|
|
18
17
|
- safety
|
|
19
|
-
- core
|
|
20
18
|
- audit
|
|
21
19
|
status: stable
|
|
22
20
|
ask_examples:
|
|
@@ -25,7 +23,7 @@ ask_examples:
|
|
|
25
23
|
- Why can't the agent read my .env or SSH keys?
|
|
26
24
|
locale: en-US
|
|
27
25
|
created: 2026-04-25
|
|
28
|
-
updated: 2026-
|
|
26
|
+
updated: 2026-07-01
|
|
29
27
|
keywords:
|
|
30
28
|
- disallowedTools
|
|
31
29
|
- deniedTools
|
|
@@ -41,16 +39,18 @@ related:
|
|
|
41
39
|
|
|
42
40
|
# Disallowed Tools
|
|
43
41
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
`
|
|
42
|
+
The agent keeps two separate lists of tools it refuses to run. The
|
|
43
|
+
first is the **absolute-block layer**, which nothing can turn off —
|
|
44
|
+
not your config, not a skill's allow-list. The second is the
|
|
45
|
+
**default strict-mode list** (`DEFAULT_DISALLOWED_TOOLS` in
|
|
46
|
+
`src/settings/runtime-settings.ts`), which you *can* relax by
|
|
47
|
+
switching to Allow mode or by setting `allowedToolsOverride`.
|
|
48
48
|
|
|
49
49
|
## Absolute-block layer (cannot be widened past)
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
`packages/daemon/src/safety/always-disallowed.ts`.
|
|
51
|
+
The agent always refuses these patterns — no matter which execution
|
|
52
|
+
mode it is in, and no matter what you put in `allowedToolsOverride`.
|
|
53
|
+
Source of truth: `packages/daemon/src/safety/always-disallowed.ts`.
|
|
54
54
|
|
|
55
55
|
| Category | Examples |
|
|
56
56
|
|---|---|
|
|
@@ -79,13 +79,14 @@ managed-Chromium chokepoints above).
|
|
|
79
79
|
|
|
80
80
|
## Default strict-mode list (relaxable)
|
|
81
81
|
|
|
82
|
-
`DEFAULT_DISALLOWED_TOOLS` (in `src/settings/runtime-settings.ts
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
`Bash(git push --force *)`, `Bash(git reset --hard *)
|
|
87
|
-
of other
|
|
88
|
-
layer
|
|
82
|
+
`DEFAULT_DISALLOWED_TOOLS` (in `src/settings/runtime-settings.ts`)
|
|
83
|
+
seeds `config.disallowedTools` with a few extra blocks you can lift —
|
|
84
|
+
either by setting `allowedToolsOverride` or by switching to Allow
|
|
85
|
+
mode. These include `Bash(chmod *)`, `Bash(chown *)`,
|
|
86
|
+
`Bash(git push --force *)`, `Bash(git reset --hard *)`, and a handful
|
|
87
|
+
of other patterns that are easy to run by accident and hard to undo.
|
|
88
|
+
Because they are **not** part of the absolute-block layer, Allow mode
|
|
89
|
+
permits them.
|
|
89
90
|
|
|
90
91
|
## Audit log
|
|
91
92
|
|
|
@@ -9,13 +9,11 @@ aliases:
|
|
|
9
9
|
- key bindings
|
|
10
10
|
category: reference
|
|
11
11
|
summary: |
|
|
12
|
-
Keyboard shortcuts available in the dashboard. The set is small
|
|
13
|
-
|
|
12
|
+
Keyboard shortcuts available in the dashboard. The set is small on
|
|
13
|
+
purpose — the dashboard is meant to stay calm and easy to scan.
|
|
14
14
|
section: reference
|
|
15
15
|
tags:
|
|
16
|
-
- reference
|
|
17
16
|
- dashboard
|
|
18
|
-
- core
|
|
19
17
|
status: stable
|
|
20
18
|
ask_examples:
|
|
21
19
|
- What keyboard shortcuts work in the dashboard?
|
|
@@ -23,7 +21,7 @@ ask_examples:
|
|
|
23
21
|
- What does pressing "?" do in the dashboard?
|
|
24
22
|
locale: en-US
|
|
25
23
|
created: 2026-04-25
|
|
26
|
-
updated: 2026-
|
|
24
|
+
updated: 2026-07-01
|
|
27
25
|
keywords:
|
|
28
26
|
- shortcut
|
|
29
27
|
- hotkey
|
|
@@ -42,9 +40,9 @@ related:
|
|
|
42
40
|
|
|
43
41
|
# Keyboard Shortcuts
|
|
44
42
|
|
|
45
|
-
The dashboard ships a deliberately small set of shortcuts — it is
|
|
46
|
-
|
|
47
|
-
dashboard screen.
|
|
43
|
+
The dashboard ships a deliberately small set of shortcuts — it is built
|
|
44
|
+
to stay calm and easy to scan, not to be a power-user IDE. These work
|
|
45
|
+
from any dashboard screen.
|
|
48
46
|
|
|
49
47
|
| Keys | Action |
|
|
50
48
|
|---|---|
|
|
@@ -19,8 +19,6 @@ summary: |
|
|
|
19
19
|
api/routes/context/permissions.ts.
|
|
20
20
|
section: knowledge-layout
|
|
21
21
|
tags:
|
|
22
|
-
- reference
|
|
23
|
-
- core
|
|
24
22
|
- memory
|
|
25
23
|
- knowledge
|
|
26
24
|
- operations
|
|
@@ -34,7 +32,7 @@ ask_examples:
|
|
|
34
32
|
- Which files can the agent write to?
|
|
35
33
|
locale: en-US
|
|
36
34
|
created: 2026-05-18
|
|
37
|
-
updated: 2026-
|
|
35
|
+
updated: 2026-07-01
|
|
38
36
|
keywords:
|
|
39
37
|
- context
|
|
40
38
|
- knowledge
|
|
@@ -87,15 +85,17 @@ knowledge of you. Every file lives under `PA_DATA_DIR/context/`
|
|
|
87
85
|
(default `~/.personal-agent/context/`) as plain Markdown that you can read,
|
|
88
86
|
edit, version, and back up with ordinary tools.
|
|
89
87
|
|
|
90
|
-
The vault is
|
|
91
|
-
`plans/`, `journal/`, `knowledge/`, and `policies/`.
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
88
|
+
The vault is split into **six authority classes** — `identity/`, `state/`,
|
|
89
|
+
`plans/`, `journal/`, `knowledge/`, and `policies/`. An authority class is
|
|
90
|
+
simply a top-level directory with its own rules for who may write to it and
|
|
91
|
+
how long its files are kept. The daemon enforces those rules through each
|
|
92
|
+
file's YAML frontmatter (advisory in this release; strict in the next
|
|
93
|
+
phase). This shape landed in the context-vault v2 restructure
|
|
95
94
|
(migration `0004-context-vault-restructure`); legacy pre-v2 paths such as <!-- drift-allow -->
|
|
96
95
|
`today.md`, `user/profile`, `rules/management`, `agent/journal`, etc. continue to work <!-- drift-allow -->
|
|
97
|
-
because the daemon
|
|
98
|
-
minor release while shipped skills and
|
|
96
|
+
because the daemon rewrites them to the new paths in-process — never via an
|
|
97
|
+
HTTP 3xx redirect — for one minor release while the shipped skills and
|
|
98
|
+
task-flows are updated.
|
|
99
99
|
|
|
100
100
|
The layout below is the canonical source-of-truth. It mirrors
|
|
101
101
|
`packages/daemon/src/core/context-paths.ts` (`CONTEXT_RELATIVE_PATHS`) and
|
|
@@ -14,11 +14,8 @@ summary: |
|
|
|
14
14
|
tier. Mirrors packages/shared/src/process-key.ts.
|
|
15
15
|
section: process-keys
|
|
16
16
|
tags:
|
|
17
|
-
- core
|
|
18
|
-
- reference
|
|
19
|
-
- dispatch
|
|
20
|
-
- backends
|
|
21
17
|
- routing
|
|
18
|
+
- backends
|
|
22
19
|
status: stable
|
|
23
20
|
ask_examples:
|
|
24
21
|
- List all the ProcessKeys
|
|
@@ -41,7 +38,7 @@ keywords:
|
|
|
41
38
|
- delegated_task
|
|
42
39
|
- gmail_classify
|
|
43
40
|
created: 2026-04-25
|
|
44
|
-
updated: 2026-
|
|
41
|
+
updated: 2026-07-01
|
|
45
42
|
config_keys:
|
|
46
43
|
- monthlyReviewEnabled
|
|
47
44
|
- delegatedTaskHeavyEnabled
|
|
@@ -61,12 +58,13 @@ related:
|
|
|
61
58
|
|
|
62
59
|
# ProcessKeys
|
|
63
60
|
|
|
64
|
-
A **ProcessKey**
|
|
65
|
-
the morning routine, an activity scan,
|
|
66
|
-
|
|
67
|
-
|
|
61
|
+
A **ProcessKey** is a label for one kind of work the agent runs — an owner
|
|
62
|
+
DM, the morning routine, an activity scan, and so on. When a piece of work
|
|
63
|
+
starts, the dispatcher hands its ProcessKey to the `BackendRouter`, which
|
|
64
|
+
turns the key into a `{ main, fallback }` backend pair plus an execution
|
|
65
|
+
tier. The dispatcher itself never picks a model; the router does that.
|
|
68
66
|
|
|
69
|
-
The **default tier** column maps to a model size, not a specific id:
|
|
67
|
+
The **default tier** column maps to a model size, not to a specific id:
|
|
70
68
|
|
|
71
69
|
- `lite` → Haiku-class (cheap, fast, narrow)
|
|
72
70
|
- `medium` → Sonnet-class (the default for most owner-facing and routine work)
|
|
@@ -128,21 +126,21 @@ The **default tier** column maps to a model size, not a specific id:
|
|
|
128
126
|
| `routine.research_wiki_summary` | Accept path for the "wiki summary" option — writes a wiki note into Obsidian inbox / Notion / local context per integration availability | medium | yes |
|
|
129
127
|
| `browser_task` | Open-ended browser sub-agent (BROWSER_TASK_REDESIGN_PLAN.md §6.1). Claude-only backend floor; dispatched from `POST /api/browser-task` (DM, dashboard, or scheduler). | medium | yes |
|
|
130
128
|
|
|
131
|
-
|
|
132
|
-
`/settings/models`
|
|
133
|
-
|
|
134
|
-
global default.
|
|
129
|
+
**Configurable** means the operator can override the backend or tier for
|
|
130
|
+
that key on `/settings/models` — these are the keys listed in
|
|
131
|
+
`CONFIGURABLE_PROCESS_KEYS`. **no** means the binding is fixed and always
|
|
132
|
+
uses the global default for its tier.
|
|
135
133
|
|
|
136
134
|
This list mirrors `packages/shared/src/process-key.ts`. The codebase
|
|
137
135
|
is the source of truth.
|
|
138
136
|
|
|
139
137
|
## Reactive vs Autonomous
|
|
140
138
|
|
|
141
|
-
|
|
142
|
-
`message.dm`, `message.mention`,
|
|
143
|
-
`setup`, `knowledge.import`. Every
|
|
144
|
-
under the tighter Approve-tier
|
|
145
|
-
established.
|
|
139
|
+
Reactive keys run while the owner is in the loop, waiting on a reply.
|
|
140
|
+
`REACTIVE_PROCESS_KEYS` holds them: `message.dm`, `message.mention`,
|
|
141
|
+
`dashboard.chat`, `dashboard.docs_qa`, `setup`, `knowledge.import`. Every
|
|
142
|
+
other key is autonomous — it runs on its own, under the tighter Approve-tier
|
|
143
|
+
MCP tool-stripping that B-003 Phase 3 established.
|
|
146
144
|
|
|
147
145
|
## Tier Locks
|
|
148
146
|
|
|
@@ -160,6 +158,6 @@ by `DELEGATED_TASK_HARD_CAPS` (server-enforced, not user-tunable):
|
|
|
160
158
|
- `maxTimeoutMs` ≤ 300 000
|
|
161
159
|
- `maxSchemaBytes` ≤ 4096
|
|
162
160
|
|
|
163
|
-
`config.ts` holds the *defaults* (`delegatedTaskDefaultMaxToolCalls`,
|
|
164
|
-
|
|
165
|
-
per-request fields.
|
|
161
|
+
`config.ts` holds the *defaults* (`delegatedTaskDefaultMaxToolCalls`, …),
|
|
162
|
+
but the caps above bound the request even when a prompt-injected caller
|
|
163
|
+
tries to raise the per-request fields.
|
|
@@ -13,8 +13,6 @@ summary: |
|
|
|
13
13
|
a SKILL.md under agent-assets/skills/<slug>/.
|
|
14
14
|
section: skills
|
|
15
15
|
tags:
|
|
16
|
-
- core
|
|
17
|
-
- reference
|
|
18
16
|
- skills
|
|
19
17
|
status: stable
|
|
20
18
|
ask_examples:
|
|
@@ -34,7 +32,7 @@ keywords:
|
|
|
34
32
|
- wiki skill
|
|
35
33
|
- notify skill
|
|
36
34
|
created: 2026-04-25
|
|
37
|
-
updated: 2026-
|
|
35
|
+
updated: 2026-07-01
|
|
38
36
|
ui_anchors:
|
|
39
37
|
- /knowledge?tab=skills
|
|
40
38
|
process_keys:
|
|
@@ -56,11 +54,13 @@ related:
|
|
|
56
54
|
|
|
57
55
|
# Built-in Skills
|
|
58
56
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
57
|
+
A skill is a small instruction file that teaches the agent how to do one job.
|
|
58
|
+
Aitne ships a fixed set of built-in skills, and the agent loads the ones it
|
|
59
|
+
needs at the start of each session. Most are always available. A few are
|
|
60
|
+
**conditional** — the agent loads them only when a gating flag turns them on
|
|
61
|
+
(`gmail-lifestyle`, `managed-tasks`), or only for a specific event such as an
|
|
62
|
+
owner DM (`browser-task` / `background-task` / `background-task-reply`). The
|
|
63
|
+
table below is the full, authoritative roster.
|
|
64
64
|
|
|
65
65
|
| Slug | Purpose |
|
|
66
66
|
|---|---|
|
|
@@ -94,14 +94,16 @@ DMs). The table below is the canonical roster.
|
|
|
94
94
|
|
|
95
95
|
## How skills are sourced
|
|
96
96
|
|
|
97
|
-
|
|
98
|
-
`agent-assets/skills/<slug
|
|
99
|
-
|
|
97
|
+
Each skill is defined by its own `SKILL.md` file under
|
|
98
|
+
`agent-assets/skills/<slug>/` — that file is the single source of truth. The
|
|
99
|
+
`description` field at the top of that file (its frontmatter) is the text the
|
|
100
|
+
dispatcher reads when it decides which skills to load for a session.
|
|
100
101
|
|
|
101
102
|
## Runtime overlays
|
|
102
103
|
|
|
103
|
-
|
|
104
|
-
recipes,
|
|
105
|
-
the skill-curation loop. The seed files in
|
|
106
|
-
|
|
107
|
-
|
|
104
|
+
Some sections of these skills (knowledge layout, routing tables, search
|
|
105
|
+
recipes, and the like) can be refined at runtime through JSON **overlays** — small
|
|
106
|
+
patches maintained by the skill-curation loop. The shipped seed files in
|
|
107
|
+
`agent-assets/skills/` are never rewritten. Instead, the `SkillsCompiler`
|
|
108
|
+
applies the overlays when a session starts, reading them from
|
|
109
|
+
`<dataDir>/skill-curation-overlays/<slug>/<section-id>.json`.
|
|
@@ -12,7 +12,6 @@ summary: |
|
|
|
12
12
|
via the backend's CLI or paste a fresh API key.
|
|
13
13
|
section: troubleshooting
|
|
14
14
|
tags:
|
|
15
|
-
- troubleshooting
|
|
16
15
|
- safety
|
|
17
16
|
- backends
|
|
18
17
|
- health
|
|
@@ -23,7 +22,7 @@ ask_examples:
|
|
|
23
22
|
- The auth-health pill went red, what now?
|
|
24
23
|
locale: en-US
|
|
25
24
|
created: 2026-04-25
|
|
26
|
-
updated: 2026-
|
|
25
|
+
updated: 2026-07-01
|
|
27
26
|
keywords:
|
|
28
27
|
- auth failed
|
|
29
28
|
- auth error
|
|
@@ -56,16 +55,18 @@ api_endpoints:
|
|
|
56
55
|
|
|
57
56
|
## Most Likely Causes
|
|
58
57
|
|
|
59
|
-
1. **Provider API key revoked or rotated**
|
|
60
|
-
on a healthy install. Re-paste the key on
|
|
58
|
+
1. **Provider API key revoked or rotated** (replaced with a new one) —
|
|
59
|
+
the most common cause on a healthy install. Re-paste the key on
|
|
60
|
+
`/settings/models`.
|
|
61
61
|
2. **Subscription-fallback login expired** when no API key was
|
|
62
|
-
registered
|
|
63
|
-
`claude auth login`, `codex login`, `gemini` — and
|
|
64
|
-
timed out
|
|
65
|
-
3. **Account-level
|
|
66
|
-
|
|
67
|
-
(Bedrock / Vertex / Foundry for Claude, Vertex AI for Gemini),
|
|
68
|
-
IAM
|
|
62
|
+
registered. This means the daemon was signed in through the CLI's
|
|
63
|
+
local login — `claude auth login`, `codex login`, `gemini` — and
|
|
64
|
+
that session timed out. The recommended fix is to register an API key.
|
|
65
|
+
3. **Account-level change** at the provider (key disabled, project
|
|
66
|
+
deleted, billing suspended). If you use cloud-provider auth
|
|
67
|
+
(Bedrock / Vertex / Foundry for Claude, Vertex AI for Gemini), a
|
|
68
|
+
change to the underlying IAM role or service account shows up the
|
|
69
|
+
same way.
|
|
69
70
|
|
|
70
71
|
## Diagnostic Steps
|
|
71
72
|
|
|
@@ -109,3 +110,4 @@ probe (default 10 minutes).
|
|
|
109
110
|
## Related
|
|
110
111
|
|
|
111
112
|
- [Auth Health](../concepts/auth-health.md)
|
|
113
|
+
- [Dashboard Shows Degraded](./dashboard-shows-degraded.md)
|
|
@@ -18,7 +18,6 @@ summary: |
|
|
|
18
18
|
section: troubleshooting
|
|
19
19
|
status: stable
|
|
20
20
|
tags:
|
|
21
|
-
- troubleshooting
|
|
22
21
|
- operations
|
|
23
22
|
- health
|
|
24
23
|
- memory
|
|
@@ -28,7 +27,7 @@ ask_examples:
|
|
|
28
27
|
- Why are context writes being refused with 503?
|
|
29
28
|
locale: en-US
|
|
30
29
|
created: 2026-04-25
|
|
31
|
-
updated: 2026-
|
|
30
|
+
updated: 2026-07-01
|
|
32
31
|
keywords:
|
|
33
32
|
- degraded
|
|
34
33
|
- degraded banner
|
|
@@ -61,17 +60,18 @@ related:
|
|
|
61
60
|
followed by the offending path.
|
|
62
61
|
- An **Open Management Mode** button on the right of the banner (links to
|
|
63
62
|
Settings → Management Mode).
|
|
64
|
-
- Any routine or skill that touches a
|
|
63
|
+
- Any routine or skill that touches a memory file fails. While degraded, the
|
|
65
64
|
context API returns **HTTP 503** for every request — reads (`GET`) as well as
|
|
66
|
-
writes (`POST`/`PUT`/`PATCH`/`DELETE`)
|
|
67
|
-
|
|
65
|
+
writes (`POST`/`PUT`/`PATCH`/`DELETE`). This is on purpose: it stops the agent
|
|
66
|
+
from quietly falling back to the wrong, out-of-date location.
|
|
68
67
|
|
|
69
68
|
## What "Degraded" Actually Means
|
|
70
69
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
70
|
+
Every 30 seconds the daemon runs a vault-health probe — a quick background
|
|
71
|
+
check on the folder that holds your memory files. If that check fails, the
|
|
72
|
+
daemon switches to degraded mode. It is **not** about backend auth, message
|
|
73
|
+
delivery, or a stuck write lock — it means only one thing: the daemon can't
|
|
74
|
+
safely write your memory files right now.
|
|
75
75
|
|
|
76
76
|
You only see this banner if you switched memory to an **Obsidian-style vault**
|
|
77
77
|
(`vaultMode: "obsidian"`). The default `vaultMode: "plain"` stores memory under
|
|
@@ -83,7 +83,7 @@ The `reason` in the banner is one of:
|
|
|
83
83
|
|--------------------------------|---------|
|
|
84
84
|
| `primary_vault_unreachable` | The configured vault path doesn't exist, isn't a directory, or isn't writable (e.g. an external drive was unplugged). |
|
|
85
85
|
| `primary_vault_not_configured` | Vault mode is Obsidian but no `primaryVaultPath` is set. |
|
|
86
|
-
| `primary_vault_missing_content`| The path is reachable but
|
|
86
|
+
| `primary_vault_missing_content`| The path is reachable but is missing the marker files that identify a set-up vault (it was never seeded, or was moved/restructured). |
|
|
87
87
|
|
|
88
88
|
A context-vault migration (`POST /api/setup/migrate-context`) is a **separate**
|
|
89
89
|
state, not a degraded reason — it does **not** raise this banner. During a
|
|
@@ -17,7 +17,6 @@ summary: |
|
|
|
17
17
|
section: fallback-keeps-firing
|
|
18
18
|
status: stable
|
|
19
19
|
tags:
|
|
20
|
-
- troubleshooting
|
|
21
20
|
- backends
|
|
22
21
|
- routing
|
|
23
22
|
- health
|
|
@@ -53,15 +52,16 @@ related:
|
|
|
53
52
|
- concepts/backends-and-tiers
|
|
54
53
|
locale: en-US
|
|
55
54
|
created: 2026-04-25
|
|
56
|
-
updated: 2026-
|
|
55
|
+
updated: 2026-07-01
|
|
57
56
|
---
|
|
58
57
|
|
|
59
58
|
# Fallback Keeps Firing
|
|
60
59
|
|
|
61
|
-
|
|
62
|
-
the
|
|
63
|
-
the
|
|
64
|
-
|
|
60
|
+
For every run, the router picks two backends: a `main` and a `fallback`. (A
|
|
61
|
+
backend is the service that does the actual work — Claude, Codex, or Gemini.)
|
|
62
|
+
When the main backend can't take the job, the router quietly switches to the
|
|
63
|
+
fallback so the run still finishes. One switch now and then is normal. A
|
|
64
|
+
switch on run after run means the main backend has a lasting problem.
|
|
65
65
|
|
|
66
66
|
## What you see
|
|
67
67
|
|
|
@@ -70,32 +70,34 @@ If it happens run after run, the main backend has a persistent problem.
|
|
|
70
70
|
|
|
71
71
|
## Most likely causes
|
|
72
72
|
|
|
73
|
-
1. **
|
|
74
|
-
credentials (or API key) for the main backend are no longer
|
|
75
|
-
every run raises a `BackendDecisiveFailure("auth")` and the
|
|
76
|
-
over.
|
|
77
|
-
2. **
|
|
78
|
-
usage
|
|
79
|
-
|
|
80
|
-
the router falls over until the window
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
73
|
+
1. **The main backend's auth has expired.** This is the most common cause.
|
|
74
|
+
The CLI credentials (or API key) for the main backend are no longer
|
|
75
|
+
valid, so every run raises a `BackendDecisiveFailure("auth")` and the
|
|
76
|
+
router falls over.
|
|
77
|
+
2. **The main backend's usage window is used up.** Claude and Codex count
|
|
78
|
+
usage against a rolling window (a limit that refills over time); Gemini
|
|
79
|
+
also has a per-day free-tier cap. Once the limit is reached, the backend
|
|
80
|
+
raises a `BackendQuotaError` and the router falls over until the window
|
|
81
|
+
resets.
|
|
82
|
+
3. **A repeating `BackendDecisiveFailure` from a config problem** — for
|
|
83
|
+
example, the main backend's CLI isn't installed, a pinned model id no
|
|
84
|
+
longer resolves, or execution-mode settings reject the run.
|
|
84
85
|
|
|
85
86
|
`BackendQuotaError` and `BackendDecisiveFailure` are the two signals the
|
|
86
|
-
router watches
|
|
87
|
+
router watches, and one of them is firing on every attempt.
|
|
87
88
|
|
|
88
89
|
## Diagnose
|
|
89
90
|
|
|
90
91
|
1. **Check auth on `/settings/models`.** Each backend has a card showing
|
|
91
92
|
its auth status. If the main backend's card flags expired or failed
|
|
92
93
|
auth, that's your cause — re-verify or re-authenticate it there.
|
|
93
|
-
2. **Check quota
|
|
94
|
-
backend's recent spend.
|
|
95
|
-
cause 2. If you set
|
|
96
|
-
stop once the daily
|
|
97
|
-
|
|
98
|
-
|
|
94
|
+
2. **Check quota and spend on `/analytics` (Cost tab).** Look at the main
|
|
95
|
+
backend's recent spend. Spend that flattens against a ceiling, or a
|
|
96
|
+
window that has run dry, points to cause 2. If you set
|
|
97
|
+
`autonomousDailyCostCapUsd`, autonomous runs also stop once the daily
|
|
98
|
+
cap is hit (reactive DMs are never blocked by it).
|
|
99
|
+
3. **Read the failure detail in `/activity`.** Open the row that fell over
|
|
100
|
+
to see the exact error. You can do the same from the CLI:
|
|
99
101
|
|
|
100
102
|
```bash
|
|
101
103
|
# recent runs on the main backend that didn't succeed
|