# Settings compendium

Every Settings pane: section titles, control labels, and what they do. Labels match the in-app copy unless noted.

**Keychain:** Some panes store secrets only in the macOS Keychain (called out below).

## Settings index (quick reference) {#settings-index}

| Pane | Anchor |
|------|--------|
| [Profile](#profile) | `#profile` |
| [You](#you) | `#you` |
| [General](#general) | `#general` |
| [LLMs](#llms) | `#llms` |
| [Motion](#motion) | `#motion` |
| [Advanced](#advanced) | `#advanced` |
| [Access](#access) | `#access` |
| [Network](#network) | `#network` |
| [Messaging](#messaging) | `#messaging` |
| [Audio](#audio) | `#audio` |
| [Heartbeats](#heartbeats) | `#heartbeats` |
| [Plugins](#plugins) | `#plugins` |
| [Dashboard](#dashboard) | `#dashboard` |
| [MCP](#mcp) | `#mcp` |
| [Knowledge](#knowledge) | `#knowledge` |
| [Kanban](#kanban) | `#kanban` |
| [Mesh](#mesh) | `#mesh` |
| [Diagnostics](#diagnostics) | `#diagnostics` |
| [Software](#software) | `#software` |
| [Pending workflow updates (sheet)](#pending-workflow-updates) | (under Advanced) |

The **You** pane is the most important surface for **reviewing** what Mugi has learned. **Profile** is the everyday editor for name, tone, and assistant personality. Kanban and Knowledge also have substantial dedicated panes.

---

## Profile {#profile}

Edit everyday identity for you and the assistant. Click **Save profile** after changes.

### You
- **Name**, **What to call them**, **Pronouns**, **Timezone**, **Preferred tone** — Used in generated text and time reasoning.
- **Notes** — Free-form space for anything else you want the assistant to remember about you.

### Assistant
- **Name**, **Creature**, **Vibe**, **Emoji** — Core assistant identity fields used in every chat turn.

### Save
- **Save profile** — Writes your edits to the running profile (required after changes; not auto-save on every keystroke).

Background noticing may later **propose** updates to personal facts — those appear in **Settings → You** for review.

---

## You {#you}

Review what Mugi has learned: proposals, connections, checkpoints. Badge on the Settings sidebar when proposals are pending.

### Who you are (summary)

Summary of accepted facts. For name, pronouns, timezone, tone, and notes, use **Settings → Profile**.

### Connections & Threads

Cross-topic links from conversations, Vault, and Knowledge corpora.

### What Mugi has noticed

Recent observations before they become proposals.

### Suggestions from Mugi

Proposed facts or updates with rationale, source, before/after diff, and **Accept** / **Reject**.

### History / Checkpoints

Timeline of the personal model. **Mark this moment** saves a snapshot you can compare later.

---

## General {#general}

### Appearance

- **Theme** — Segmented control: **Light**, **Dark**, **System**. Saves immediately and applies window chrome + app theme.
- **Light theme pack** / **Dark theme pack** — Independent pickers for the color palette used in each appearance. Each pack is a small JSON file that supplies colors for Mugi’s status tokens (OK / info / warn / block) across trust, activity, and chat surfaces. Choosing the same pack on both sides is fine — packs ship both halves.
- **Reveal user theme packs…** — Opens `~/.mugi/ThemePacks/` in Finder (creating it on first use). Drop a folder named `<id>/mugi-theme.json` (one pack per folder) and click **Reload themes**; the new pack appears in both pickers. Each pack supplies `light` and `dark` color sections; invalid values are rejected in this pane.
- **Reload themes** — Rediscovers bundled + user packs without relaunching the app. Use after editing a pack JSON or dropping a new one in the user folder.
- **Reset to Default** — Sets both pickers back to the bundled **Default** pack.
- **What themes can and cannot change:** theme packs recolor the **semantic status tokens** (used by trust, activity, and chat severity surfaces). They do not replace macOS window chrome, system materials, or SwiftUI semantic text colors — those continue to follow the **Theme** control above. Invalid hex values or pack ids are surfaced inline in this pane and the app falls back to the bundled default.

### Quick prompt panel

- **Global shortcut** — Click the field, then press a shortcut. Must include **⌘**, **⌥**, or **⌃**. Requires **Input Monitoring** (and sometimes **Accessibility**) in System Settings for global use while other apps are focused.

### Council mode

- **When to convene** — **Off**, **When I ask**, **Suggest on hard questions**, **Always** (Always shows a confirmation because it can run many model passes).
- In chat, **`/council <question>`** convenes the council pipeline even when this setting is **Off** ([slash commands](07-chat-search-and-confirmations.md#slash-commands)).
- **Daily cap**, **Hourly cap**, **Batch time limit** — Rate limits when council is not Off.
- **Append council transcript in chat** — Include seat-by-seat output in the thread when on.

### Grounding / fact-checking

- **Verify Mugi's own claims** — **Off**, **Standard** (default), or **Ask first**.
  - **Standard** — when Mugi states a checkable fact it is not sure of, it may dispatch a background check (local SearXNG) and post **Confirmed**, **Quick correction**, or **Inconclusive** when done — without blocking your turn.
  - **Ask first** — offers to check before dispatching.
  - **Off** — no background checks; Mugi hedges in prose only.
- **Allow background checks to use the public web** — Off by default; when on, weak local evidence may escalate to the public web (still opt-in per check path).
- Mugi only ever checks **its own** claims, never yours.

### Results

- **When Mugi delivers a page, chart, or video** — **Switch to Results**, **Switch only while in Chat**, or **Show a badge only**.
- **Also open a separate preview window** — legacy floating preview in addition to the Results workspace.
- **Notify when a result arrives in the background** — toast when Kanban, scheduled, or research work saves to Results while you are on another conversation.

Full walkthrough: [15-results-workspace.md](15-results-workspace.md).

### Chat

- **Show agent thinking** — Separate lighter bubbles for model reasoning.
- **Show tool details in chat** — When off, tool calls appear in the status line and Activity feed (failures still show in chat).
- **Show tabs in a vertical strip** — Optional vertical tab list for many open branches.

### Debug

- **Enable debug logging** — Troubleshooting output under `~/.mugi/logs`. Debug logs can include conversation or tool excerpts.

### Setup

- **Reset identity & templates…** — Resets identity/templates without wiping all conversations (confirmation required).
- **Re-run Initial Setup** — Reinstalls runtime environments (Python, Kraken, Playwright, MLX, utility); keeps conversations and personality files; **Mugi restarts**.
- **Full Reset…** — Removes **all** Mugi data; moves personality and conversations to **Trash** for recovery; **Mugi restarts**.

Replay the onboarding carousel anytime via **Help → Welcome Tour…**.

---

## LLMs {#llms}

The **Engines** tab picks which server powers chat. **Parameters** and **Memory & research** apply regardless of engine (context window reload behavior follows the active engine).

### Inference engine picker

| Choice | Meaning |
|--------|---------|
| **MLX (mlx-vlm)** | Default. Mugi installs/manages mlx-vlm on port **8000**. Model download, LoRA, native tool probe, stack upgrade. |
| **Exo (connect)** | Connect-only: you run Exo; Mugi probes `exo_backend_base_url` (default `http://127.0.0.1:52415/v1`). **Connect / Test** checks reachability, loaded model, and native tool calls. Mugi does not install Exo. |
| **External API** | OpenAI-compatible remote URL + optional API key (LM Studio, Ollama, vLLM, cloud). |

`inference_engine` in `app_prefs.json` is set on migration from older MLX/external toggles. Embeddings and the **utility model** always use the MLX venv.

### MLX panel (when MLX is selected)

- Model picker, download, install MLX stack, LoRA/adapters when shown.
- **Native tool probe** — confirms `delta.tool_calls` from the loaded model.
- Server log: **`~/.mugi/logs/server.log`** (MLX generation server).
- **Text-only models** — Mugi disables Automatic Prompt Caching (APC) on launch for text-only checkpoints (APC assumes multimodal models).

### Exo panel (when Exo is selected)

- Base URL, model id field, **Connect / Test** status.
- Exo must already be running; use Qwen / Hermes-template models for reliable native tool calls.

### External API panel (when External is selected)

- Base URL, API key (Keychain-backed where applicable), model id.
- Mugi does not manage the remote process.

### Model Parameters

- **Context Window** — Slider (large range); shows formatted token count; saves `llm_context_length`. Applies to the active chat engine after you stop dragging.
- **Temperature** — Slider 0…2.
- **Max Output Tokens** — Slider.
- **Apply Context Window** — Reloads the active local model with the current context (disabled while a reload is in progress).

### Research Mode Limits

- **Max Search Rounds**, **Max Read URLs**, **Min Scratch Appends**, **Min Scratch Size** — Stepped sliders with live values.
- **Strict research phase hints** — Toggle.
- **LLM-generated follow-up queries** — Toggle.

Foreground **Research mode** spawns a durable Kanban research worker bound to the thread ([Research mode](07-chat-search-and-confirmations.md#research-mode)).

### Agent loop limits (advanced)

These keys live in **`~/.mugi/app_prefs.json`**. They are not required for normal use; raise them only when you need longer tool-heavy runs or more guardrail retries.

| Key | Default | Role |
|-----|---------|------|
| `agent_max_tool_rounds` | 35 | Maximum tool-calling rounds per chat run before stop or the max-rounds summary round (clamped 1–500). |
| `agent_guard_retries_total` | 8 | Shared budget for harness-injected retries (e.g. task-plan continuation, max-rounds summary; clamped 0–100). |
| `task_plan_continuation_retries` | 3 | How many times to nudge when a recorded task plan still has open steps before allowing a final answer (clamped 0–50). |

### Memory & Recall

- **Retrieval profile** — **Conservative** / **Balanced**.
- **Memory write safety** — **Off — no guardrails** / **Warn — flag risky writes** / **Insights only — require structured sections** / **Block — reject risky writes**. Captions explain password/API noise handling.
- **Semantic session search (utility model)** — Toggle; requires utility model when available.

---

## Network {#network}

### SearXNG Search Engine

- **Use local SearXNG (Docker)** — When on, **Base URL** shows a fixed `http://127.0.0.1:<port>` (read-only). When off, **Base URL** is editable if you run SearXNG elsewhere yourself.
- **Port** — Used with local Docker (defaults restored if invalid).
- **Fallback URL** — Default example in UI is `https://searx.party`; used when the primary search endpoint is unavailable.
- **Status:** — Shows **running** (green) or other states; **Refresh** updates status.

### Docker Controls

- Buttons: **Setup**, **Start**, **Stop**, **Restart**, **Remove** — Each POSTs to `/preferences/searxng/<action>`; errors show in red below. **Setup** / **Remove** may reload preferences on success.

---

## Advanced {#advanced}

### Shell Execution

- **Allow shell command execution** — Turning **on** starts an inline flow: caption **Authentication required to enable shell access** with **Confirm** (device owner auth) and **Cancel**. **Confirm** saves `allow_shell_execute: true`; failure or cancel turns the toggle back off.

### CLI Tools

- **Enable CLI tools (brew, ffmpeg, run_installed_cli)** — Saves `include_cli_tools`. Caption describes `~/.mugi/homebrew` and `~/.mugi/cli-venvs`, and that shell must be allowed to install new programs.
- **Install into Mugi Homebrew** — **Formula** text field, optional **Tap**, **Install Formula** button (disabled if shell disabled or empty formula). Caption: binaries under `~/.mugi/homebrew/bin`.

### Kraken OCR

- **Install Kraken OCR environment** / **Remove Kraken OCR environment** — One-time venv under `~/.mugi/kraken-venv`.
- **Recognition model path (optional)** — Text field + **Choose…** (`.mlmodel`). Empty = auto default.

### Browser Automation

- **Use Playwright for full-page screenshots** — Toggle.
- **Browser for screenshots** — Picker (installed Chrome/Edge/Brave vs bundled Chromium). Captions for **Screen Recording** permission.
- **Status:** Installed / Not installed; **Install Playwright** or **Reinstall Playwright** — venv `~/.mugi/playwright-venv`.

### Backend environment

- **Update backend packages** — Installs/upgrades packages in the **main** backend venv (not Kraken/Playwright venvs).

### Parallel utility model

- **Enable embedded utility model** — Toggle; **Model** picker (Qwen, Bonsai, etc.).
- **Status** line, **Model:** repo line, error text if load fails.
- Buttons: **Download model**, **Upgrade utility MLX**, **Refresh Status**, **Unload from memory** — as enabled by state. Prism/Bonsai caption when applicable.

### Active Hours

- Caption: silences heartbeat/idle/curiosity outside windows; **cron** and **inbound webhooks** are **not** gated.
- **Schedule** — **Always active** vs **Custom schedule** (segmented).
- Custom: **Start** / **End** time pickers; **Days** toggles (weekday buttons); overnight ranges supported; empty weekdays = always active.

### Inbound Webhooks

- **Accept inbound webhooks** — Master toggle. Caption: HMAC per source; **secrets in Keychain only**.
- **Copy webhook URL** — Disabled when webhooks off.
- **Generate primary token** / **Rotate primary token** — Keychain-backed primary token for `X-Mugi-Webhook-Token`.
- Per-source UI: add sources, **Notify only** vs **Full turn** modes (see in-app table). New sources get HMAC once; copy into external services. Details: [Inbound webhooks](inbound-webhooks.md).

### Outbound Webhooks

- HTTPS targets by **slug**; HMAC in Keychain; cron jobs reference slugs in **Deliver-to**. Caption explains POST body and `X-Mugi-Signature`.

### File Watcher

- Enable + list of rules; add rule with **rule name**, **path**, **glob**, **Notify only** / **Full turn**, **Recursive**, **Debounce**, **Add rule**. Stored under `[file_watcher]` in `mugi_config.toml` (caption).

### Personal noticing

- **Personal pattern noticing & connections journal** — Master toggle for cross-topic noticing from conversations (and optionally Vault).
- **Surface personal pattern notes in On my mind** — Pattern follow-ups in the proactive inbox (requires personal noticing).
- **Include Vault notebook in noticing** — Vault excerpts participate in connection proposals (requires personal noticing).
- Connection facts → **Settings → You**; pattern follow-ups → **On my mind** (at most once per week per pattern).

### Weekly self-review

- **Enable ledger self-review** — Background review of task health (separate from personal noticing); writes insights and may open follow-ups. Off by default.

### Evolution mode (advanced) — disclosure

Inside **Evolution mode (advanced)**:

- **Evolution mode** — Constitution, git, plugin tools, **background consciousness**. Caption: **restart the background agent** after changing so the consciousness heartbeat picks it up.
- **Workflow learning (text evolution)** — Background evaluation of workflows; proposals need approval.
  - **Pause workflow learning** — Pauses analysis only.
  - **Pending workflow updates:** count + **Review** → opens [Pending workflow updates](#pending-workflow-updates) sheet.

---

## Audio {#audio}

### Text-to-Speech

- **Speak agent replies** — Master toggle.
- **TTS engine** — **Apple built-in voices**, **Supertonic** (when installed), or **Chatterbox** (optional — install from **Settings → Software**).
- Engine-specific voice pickers, **Preview**, speed/quality controls for Supertonic; Chatterbox voice profiles when installed.

### Voice Input

- **Insert text while speaking**, **Push-to-talk mode**, **Prefer on-device recognition** — Dictation behavior; use with **Edit → Voice Input (⌘⇧V)**.
- **Enable Full Duplex voice mode (Beta)** — Continuous listen/speak loop with barge-in and partial transcript options when on.
- **Enable Voice Conversation pane (Beta)** — Adds **Voice** to the left mode rail (⌃⌘3) with idle timeout and max session duration steppers.

---

## Motion {#motion}

- **Motion preference** — **Calm**, **Standard**, or **Vivid** — global animation intensity (respects macOS Reduce Motion).
- **Per-surface toggles** — Subagent indicators, Activity feed highlight, inertial chat auto-scroll, terminal streaming animation, voice mic pulse.

---

## Dashboard {#dashboard}

- **Global shortcut** — **⇧⌥D** toggles the **Dashboard panel** (**View → Dashboard**). Same Input Monitoring requirements as the Quick Panel. When a shell-approval alert is open, **⇧⌘D** is reserved for **Deny shell command** instead.
- **Open Dashboard Plugins Folder** / **Reload Dashboard Plugins** — Dashboard plugins live under `~/.mugi/dashboard_plugins`.
- Per-plugin settings when plugins are installed.

User guide: [Dashboard panel](08-right-panels.md#dashboard-panel).

---

## Kanban {#kanban}

Configuration only — open the board from the **toolbar Kanban button** or **View → Kanban Board**. How dispatcher, workers, and coordinator mode fit together: [08-right-panels.md § Kanban](08-right-panels.md#kanban-overlay) and [Security overview §8](security/harness_threat_model.md#8-kanban-and-task-completion).

- **Kanban enabled** — Master kill switch. When off, tasks cannot be claimed and the dispatcher idles.
- **Mesh delegation** — Allow agents to tag tasks mesh-eligible; surface inbound mesh delegations on the board.
- **Limits & lifecycle** — Tick interval (how often the dispatcher scans the board), claim TTL, deadlines, failure limits, retention, create rate limits.
- **Concurrency profiles** — Maximum simultaneous **workers** per assignee profile (general, research, extraction, etc.). A profile cap of `2` means at most two research workers at once.

**Not in this pane:** coordinator mode (automatic when a chat thread creates a multi-task batch) and Council mode (**Settings → General**).

---

## Software {#software}

Optional runtimes not bundled in the main app:

- **Chatterbox TTS** — Install/remove optional voice-cloning runtime; voice profile count; install log under `~/.mugi/logs/`.
- **Hyperframes** (when shown) — Optional video tooling with dependency checks and install/remove flows.

After installing Chatterbox, choose it under **Settings → Audio → TTS engine**.

---

## Messaging {#messaging}

### Message Gateway

- **Enable messaging gateway** — `_config_messaging.enabled`.
- **Rate limit:** `0…120` seconds (stepper).

### Discord

- **Enable Discord bot**
- **Bot token** — `SecureField`. **Keychain:** service `mugi-discord`, account `bot_token` — saved on **Save** / auto-save paths; empty token deletes keychain entry.
- **Channel IDs (comma-separated)**
- **Command prefix** — Default `!`
- **Require @mention**
- **Save** (⌘S) — Persists messaging config + token to Keychain.
- **Test Connection** — Alert **Discord Test** with success or error string.

---

## Heartbeats {#heartbeats}

### Continuity

- **Continuity prompts when idle** — Maps to `idle_in_chat_tick_enabled`; posts `idleTickConfigChanged` so idle behavior updates. Caption: internal prompt after quiet chat; disable to stop **foreground** continuity runs.

### Intervals

- **Standard interval:** `1…1440` **min** (stepper) — heartbeat cadence.

### Features

- **Memory maintenance** — Toggle + interval stored in heartbeat config.
- **Growth check** — Toggle.
- **Notification sound** — Toggle.

### Watchlist (collector)

- **Enable watchlist monitoring** — When on: **Check interval** `30…1440` min (step 30).
- Caption: re-fetch URLs and notify on content change.

### RSS / Atom Feeds

- **Enable feeds monitoring** — When on: **Check interval** `30…1440` min (step 30).
- List of feeds with label + URL; **+** / **−** bar to add (sheet) or remove selection.
- **Add RSS / Atom Feed** sheet: **Feed URL**, **Label (optional)**.
- Bottom: **Save Heartbeat Settings** — flushes heartbeat JSON to preferences.

---

## Plugins {#plugins}

Top caption: plugins live in **`~/.mugi/plugins`**; use **Reload** after editing files.

- **Open Plugins Folder** — Reveals `~/.mugi/plugins` in Finder.
- **Reload Plugins** — Rescans installed plugins on disk.

### Installed plugins

Each row: **DisclosureGroup** with status dot, **name**, **Enabled** / **Disabled**.

Expanded:

- **Slug**, **Version**, **Author**, **Load error**, **Load warning(s)**, **Route mount error** (when present).
- **Disable** / **Enable** — Toggles a plugin without uninstalling it.
- **View in Finder** — `~/.mugi/plugins/<slug>`.
- **Remove** — Confirmation: disables plugin and **removes approval**; **does not delete files on disk**.

### Plugin settings

If the plugin registered a schema:

- **Plugin settings** — Dynamic fields from `settings_schema.fields`.
- **Save Settings** — `PUT preferences/plugins/<slug>/settings`; values merged into **`~/.mugi/app_prefs.json`** (caption in UI).

---

## Access {#access}

Top banner: **dangerous paths** (system dirs, `.ssh`, `.aws`, `.config`, keychain files, etc.) and **`~/.mugi/plugins`** cannot be allowed.

### Allowed Directories

- List of paths with **minus** to remove.
- **Add Directory…** — macOS **folder** picker; duplicate path shows an error in-form.

### Calendar

- Caption; **Request Calendar Access…** — async permission via `CalendarService`.

### Reminders

- Caption; **Request Reminders Access…** — reminders permission.

### Email

- Caption: IMAP; **Password is stored in the system Keychain.**
- **IMAP server**, **Port**, **Email or username**, **Password** (`SecureField`).
- **Save** (⌘S) — **Keychain:** service `mugi-imap`, account `password`.
- **Test connection** — Alert with result.

---

## Mesh {#mesh}

### Mugi Mesh

- Caption: local discovery and encrypted collaboration.
- **Send files via Mesh…** — Opens the same flow as chat **`/mesh-send`**: encrypted LAN file transfer to a connected peer (explicit file picker + consent). Size caps and `file_transfer_enabled` are configured in **Settings → Mesh** or in `mugi_config.toml` under `~/.mugi`.
- **Refresh Mesh Status** — Reloads peer/session lists.

### Known Peers

- Per peer: **hostname**, **fingerprint**, **Remove**, **Allow task offload** (toggle). Help on toggle: delegated subtasks via `contact_peer(is_task=true)` only if you trust the peer.
- Footer: only enable offload for trusted peers.

### Discovered Peers

- Optional **connectStatusMessage**; each row: hostname, `address:port`, fingerprint, **Connect**.

### Pending Requests

- **Allow** / **Deny** for each request (can also use **macOS notifications** — see [05-notifications.md](05-notifications.md)).

### Active Sessions

- Lists `peer_hostname` and `peer_address:peer_port`.

---

## MCP {#mcp}

### Agent

- **Enable MCP tools for the agent** — `mcp_enabled`. When **off**, config stays on disk but the assistant does **not** load or call MCP tools; **discovery and health checks still run** (caption).

### MCP Servers

- Trust warning; config path **`~/.mugi/mcp_servers.json`**.

### Status

- Messages for SDK missing, MCP disabled, invalid JSON.
- **SDK installed**, **Config exists**, **Cached tools**, **Health checked** (timestamp).
- Per server: health dot, **id**, **transport**, **N tools**, summary, **Copy error** on health errors.
- **Refresh Status**, **Check Server Health**, **Open .mugi Folder**.

### Discover Tools

- **Discover Now** — May open sheet with tools/errors; first **npx** runs can be slow (caption).

### Config Editor

- **Import conflict policy** — Segmented: **Rename** / **Skip** / **Overwrite**.
- Monospaced **JSON** editor; **Save** when dirty (see app for exact button labels).
- Import from common paths: `~/.cursor/mcp.json`, `~/.claude/mcp.json`, `~/.config/mcp/mcp.json` (when present).
- **Add Server** wizard — HTTP vs stdio, preflight, preview (full flow in-app).

### URL schemes

- `mugi://mcp/add?...` and `mugi-app://` — Prefills add-server from another app.

### Setup wizard

- **Import from Cursor** posts `importCursorMCPConfig` to open MCP settings with import.

---

## Knowledge {#knowledge}

Point Mugi at a folder or repo; it digests the material into a searchable corpus (synthesis, per-file notes, topic map, claims graph). Original files are never modified. Compiled output lives under `~/.mugi/workspace/knowledge/<slug>/`.

### Ingest profiles

- **docs** — prose, PDFs, Markdown, Office files (default for document folders).
- **repo** — code trees; skips `.git`, `node_modules`, build artifacts, etc.

Change profile and re-digest anytime; compiled output is replaced.

### Library vs Settings pane

| Surface | Use |
|---------|-----|
| **Knowledge Library** (books icon on mode rail) | Browse, search, Ask with citations, **Discuss this** into chat |
| **Settings → Knowledge** | Add/remove corpora, re-digest, staleness check, export ZIP, status |

Interrupted ingest shows **Continue ingest** in the Library. **Pause ingest** checkpoints cleanly. Search and Ask need a complete digest; partial source notes may still be browsable.

### Staleness

**Check Staleness** counts changed files (no LLM). **Re-digest** updates only new/changed sources when hashes differ. Optional folder watch re-runs when files change.

### You pane and chat

Overlaps between chat, Vault, and corpus claims can appear as proposals in **Settings → You**. **Discuss this** on a source injects that note plus context into the current thread, same pattern as Vault.

Workflow: [14-workflows-and-examples.md](14-workflows-and-examples.md) §4.

### Corpus actions

- **Open Notes** — reveal compiled folder in Finder
- **Re-digest** — refresh (skips unchanged files)
- **Check Staleness** — count changes only
- **Remove** — deletes compiled tree only; source folder untouched

Folders outside `~/.mugi/workspace` need a one-time **Allow digest outside workspace** grant (security-scoped bookmark). Errors show on the corpus row and in the Library banner.

---

## Diagnostics {#diagnostics}

### Memory & Knowledge Inspector

- **Memory & Knowledge Inspector toolbar + SSE** — When on, adds a **Memory Inspector** toolbar button and right pane showing per-turn context assembly. Off by default.

### System Diagnostics

- **Run Diagnostics** — Refreshes health checks **and** recent background runs. Shortcut **⌘⇧R** when the pane is focused.
- **Summary banner** — All checks passed, needs attention, or autonomy warnings; elapsed time shown.
- **Autonomy posture** — Disclosure with OK/warning bullets when present.
- **Doctor notes** — Warning list from the health report.
- **Checks** — Individual pass/fail rows (models, Docker, permissions, etc.).
- Empty state before first run: loading indicator, then **Run Diagnostics**.

### Recent background runs

- **Refresh** — Updates the task history list only.
- **Filter by run kind** — All, Cron, Webhooks, Heartbeats, Idle, Browser.
- **Filter by run status** — All, Skipped, Problems.
- Skipped runs are often normal (active hours, kill switches).

---

## Pending workflow updates {#pending-workflow-updates}

**Entry:** **Settings → Advanced → Evolution mode (advanced) → Workflow learning → Review** (enabled when pending count > 0).

**Sheet: Pending Workflow Updates**

- **Dismiss All** — Reject all pending workflow proposals.
- **Done** — Close sheet.
- List of pending workflow improvements; tap a row for before/after diff and accept/reject.

---

## Cross-references

- First-line diagnostics: [06-diagnostics-and-basic-troubleshooting.md](06-diagnostics-and-basic-troubleshooting.md)  
- Webhook tunneling: [Inbound webhooks](inbound-webhooks.md)
