@askexenow/exe-os 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +139 -0
  3. package/dist/bin/backfill-responses.js +1912 -0
  4. package/dist/bin/backfill-vectors.js +1642 -0
  5. package/dist/bin/cleanup-stale-review-tasks.js +1339 -0
  6. package/dist/bin/cli.js +18800 -0
  7. package/dist/bin/exe-agent.js +1858 -0
  8. package/dist/bin/exe-assign.js +1957 -0
  9. package/dist/bin/exe-boot.js +6460 -0
  10. package/dist/bin/exe-call.js +197 -0
  11. package/dist/bin/exe-cloud.js +850 -0
  12. package/dist/bin/exe-dispatch.js +1146 -0
  13. package/dist/bin/exe-doctor.js +1657 -0
  14. package/dist/bin/exe-export-behaviors.js +1494 -0
  15. package/dist/bin/exe-forget.js +1627 -0
  16. package/dist/bin/exe-gateway.js +7732 -0
  17. package/dist/bin/exe-healthcheck.js +207 -0
  18. package/dist/bin/exe-heartbeat.js +1647 -0
  19. package/dist/bin/exe-kill.js +1479 -0
  20. package/dist/bin/exe-launch-agent.js +1704 -0
  21. package/dist/bin/exe-link.js +192 -0
  22. package/dist/bin/exe-new-employee.js +852 -0
  23. package/dist/bin/exe-pending-messages.js +1446 -0
  24. package/dist/bin/exe-pending-notifications.js +1321 -0
  25. package/dist/bin/exe-pending-reviews.js +1468 -0
  26. package/dist/bin/exe-repo-drift.js +95 -0
  27. package/dist/bin/exe-review.js +1590 -0
  28. package/dist/bin/exe-search.js +2651 -0
  29. package/dist/bin/exe-session-cleanup.js +3173 -0
  30. package/dist/bin/exe-settings.js +354 -0
  31. package/dist/bin/exe-status.js +1532 -0
  32. package/dist/bin/exe-team.js +1324 -0
  33. package/dist/bin/git-sweep.js +2185 -0
  34. package/dist/bin/graph-backfill.js +1968 -0
  35. package/dist/bin/graph-export.js +1604 -0
  36. package/dist/bin/install.js +656 -0
  37. package/dist/bin/list-providers.js +140 -0
  38. package/dist/bin/scan-tasks.js +1820 -0
  39. package/dist/bin/setup.js +951 -0
  40. package/dist/bin/shard-migrate.js +1494 -0
  41. package/dist/bin/update.js +95 -0
  42. package/dist/bin/wiki-sync.js +1514 -0
  43. package/dist/gateway/index.js +8848 -0
  44. package/dist/hooks/bug-report-worker.js +2743 -0
  45. package/dist/hooks/commit-complete.js +2108 -0
  46. package/dist/hooks/error-recall.js +2861 -0
  47. package/dist/hooks/exe-heartbeat-hook.js +232 -0
  48. package/dist/hooks/ingest-worker.js +4793 -0
  49. package/dist/hooks/ingest.js +684 -0
  50. package/dist/hooks/instructions-loaded.js +1880 -0
  51. package/dist/hooks/notification.js +1726 -0
  52. package/dist/hooks/post-compact.js +1751 -0
  53. package/dist/hooks/pre-compact.js +1746 -0
  54. package/dist/hooks/pre-tool-use.js +2191 -0
  55. package/dist/hooks/prompt-ingest-worker.js +2126 -0
  56. package/dist/hooks/prompt-submit.js +4693 -0
  57. package/dist/hooks/response-ingest-worker.js +1936 -0
  58. package/dist/hooks/session-end.js +1752 -0
  59. package/dist/hooks/session-start.js +2795 -0
  60. package/dist/hooks/stop.js +1835 -0
  61. package/dist/hooks/subagent-stop.js +1726 -0
  62. package/dist/hooks/summary-worker.js +2661 -0
  63. package/dist/index.js +11834 -0
  64. package/dist/lib/cloud-sync.js +495 -0
  65. package/dist/lib/config.js +222 -0
  66. package/dist/lib/consolidation.js +476 -0
  67. package/dist/lib/crypto.js +51 -0
  68. package/dist/lib/database.js +730 -0
  69. package/dist/lib/device-registry.js +900 -0
  70. package/dist/lib/embedder.js +632 -0
  71. package/dist/lib/employee-templates.js +543 -0
  72. package/dist/lib/employees.js +177 -0
  73. package/dist/lib/error-detector.js +156 -0
  74. package/dist/lib/exe-daemon-client.js +451 -0
  75. package/dist/lib/exe-daemon.js +8285 -0
  76. package/dist/lib/file-grep.js +199 -0
  77. package/dist/lib/hybrid-search.js +1819 -0
  78. package/dist/lib/identity-templates.js +320 -0
  79. package/dist/lib/identity.js +223 -0
  80. package/dist/lib/keychain.js +145 -0
  81. package/dist/lib/license.js +377 -0
  82. package/dist/lib/messaging.js +1376 -0
  83. package/dist/lib/reminders.js +63 -0
  84. package/dist/lib/schedules.js +1396 -0
  85. package/dist/lib/session-registry.js +52 -0
  86. package/dist/lib/skill-learning.js +477 -0
  87. package/dist/lib/status-brief.js +235 -0
  88. package/dist/lib/store.js +1551 -0
  89. package/dist/lib/task-router.js +62 -0
  90. package/dist/lib/tasks.js +2456 -0
  91. package/dist/lib/tmux-routing.js +2836 -0
  92. package/dist/lib/tmux-status.js +261 -0
  93. package/dist/lib/tmux-transport.js +83 -0
  94. package/dist/lib/transport.js +128 -0
  95. package/dist/lib/ws-auth.js +19 -0
  96. package/dist/lib/ws-client.js +160 -0
  97. package/dist/mcp/server.js +10538 -0
  98. package/dist/mcp/tools/complete-reminder.js +67 -0
  99. package/dist/mcp/tools/create-reminder.js +52 -0
  100. package/dist/mcp/tools/create-task.js +1853 -0
  101. package/dist/mcp/tools/deactivate-behavior.js +263 -0
  102. package/dist/mcp/tools/list-reminders.js +62 -0
  103. package/dist/mcp/tools/list-tasks.js +463 -0
  104. package/dist/mcp/tools/send-message.js +1382 -0
  105. package/dist/mcp/tools/update-task.js +1692 -0
  106. package/dist/runtime/index.js +6809 -0
  107. package/dist/tui/App.js +17479 -0
  108. package/package.json +104 -0
  109. package/src/commands/exe/assign.md +17 -0
  110. package/src/commands/exe/build-adv.md +381 -0
  111. package/src/commands/exe/call.md +133 -0
  112. package/src/commands/exe/cloud.md +17 -0
  113. package/src/commands/exe/employee-heartbeat.md +44 -0
  114. package/src/commands/exe/forget.md +15 -0
  115. package/src/commands/exe/heartbeat.md +92 -0
  116. package/src/commands/exe/intercom.md +81 -0
  117. package/src/commands/exe/kill.md +34 -0
  118. package/src/commands/exe/launch.md +52 -0
  119. package/src/commands/exe/link.md +17 -0
  120. package/src/commands/exe/logs.md +22 -0
  121. package/src/commands/exe/new-employee.md +12 -0
  122. package/src/commands/exe/review.md +14 -0
  123. package/src/commands/exe/schedule.md +108 -0
  124. package/src/commands/exe/search.md +13 -0
  125. package/src/commands/exe/sessions.md +25 -0
  126. package/src/commands/exe/settings.md +13 -0
  127. package/src/commands/exe/setup.md +171 -0
  128. package/src/commands/exe/status.md +15 -0
  129. package/src/commands/exe/team.md +11 -0
  130. package/src/commands/exe/update.md +11 -0
  131. package/src/commands/exe.md +181 -0
@@ -0,0 +1,171 @@
1
+ ---
2
+ description: Set up exe-os — encryption, sync, and embedding model
3
+ allowed-tools: Bash, AskUserQuestion, Write, Read
4
+ ---
5
+
6
+ Set up the exe-os memory system. Follow these steps exactly:
7
+
8
+ ## Step 0: tmux check
9
+
10
+ tmux is required for exe-os multi-agent. Check if it's installed:
11
+ ```bash
12
+ which tmux >/dev/null 2>&1 && echo "TMUX_INSTALLED" || echo "TMUX_NOT_INSTALLED"
13
+ ```
14
+
15
+ If `TMUX_NOT_INSTALLED`, tell the user:
16
+ > **tmux is required.** exe-os uses tmux for instant cross-session communication between employees.
17
+ >
18
+ > Install it before continuing:
19
+ > - macOS: `brew install tmux`
20
+ > - Linux: `apt install tmux`
21
+ >
22
+ > New to tmux? https://tmuxcheatsheet.com
23
+
24
+ Wait for the user to install tmux before proceeding. Re-check with `which tmux` when they say it's done.
25
+
26
+ ## Step 1: Encryption Key
27
+
28
+ Check if a master key already exists:
29
+ ```bash
30
+ ls -la ~/.exe-os/master.key 2>/dev/null && echo "Key exists" || echo "No key found"
31
+ ```
32
+
33
+ If no key exists, generate one:
34
+ ```bash
35
+ node --input-type=module -e "
36
+ import crypto from 'node:crypto';
37
+ import { writeFile, mkdir, chmod } from 'node:fs/promises';
38
+ import path from 'node:path';
39
+ import os from 'node:os';
40
+ const dir = path.join(os.homedir(), '.exe-os');
41
+ await mkdir(dir, { recursive: true });
42
+ const key = crypto.randomBytes(32);
43
+ const keyPath = path.join(dir, 'master.key');
44
+ await writeFile(keyPath, key.toString('base64') + '\n');
45
+ await chmod(keyPath, 0o600);
46
+ console.log('Encryption key generated at', keyPath);
47
+ "
48
+ ```
49
+
50
+ If key already exists, tell the user: "Encryption key already exists — skipping."
51
+
52
+ ## Step 2: Sync Mode
53
+
54
+ Tell the user:
55
+
56
+ > **Take your AI employees everywhere.**
57
+ >
58
+ > exe-os syncs your encrypted memories across all your machines — Mac, VPS, laptop.
59
+
60
+ Use AskUserQuestion to ask:
61
+ - "How do you want to sync your memories?"
62
+ - **Exe Cloud** — Paste your API key from askexe.com. E2EE — we can't read your data.
63
+ - **Local only** — No sync. Memories stay on this machine. Free forever. You can add sync later.
64
+
65
+ ## Step 3a: If Exe Cloud
66
+
67
+ Use AskUserQuestion to ask for their Exe Cloud API key (exe_sk_...).
68
+
69
+ Validate the key:
70
+ ```bash
71
+ curl -s "https://sync.askexe.com/auth/verify" \
72
+ -H "Authorization: Bearer USER_API_KEY" | cat
73
+ ```
74
+
75
+ If valid, save it in the config (Step 4).
76
+
77
+ ## Step 3b: If Local Only
78
+
79
+ Skip to Step 4.
80
+
81
+ ## Step 4: Write Config
82
+
83
+ First get the absolute home directory path:
84
+ ```bash
85
+ echo $HOME
86
+ ```
87
+
88
+ Then create the config directory:
89
+ ```bash
90
+ mkdir -p ~/.exe-os
91
+ ```
92
+
93
+ Use Write tool to create the config file at the ABSOLUTE path (e.g., `/Users/username/.exe-os/config.json`). Use the $HOME value from above — never write `~` in the dbPath.
94
+
95
+ For **Local only:**
96
+ ```json
97
+ {
98
+ "dbPath": "/Users/USERNAME/.exe-os/memories.db",
99
+ "modelFile": "jina-embeddings-v5-small-q4_k_m.gguf",
100
+ "embeddingDim": 1024,
101
+ "batchSize": 20,
102
+ "flushIntervalMs": 10000,
103
+ "autoIngestion": true,
104
+ "autoRetrieval": true,
105
+ "searchMode": "hybrid",
106
+ "hookSearchMode": "fts"
107
+ }
108
+ ```
109
+
110
+ For **Self-hosted (Turso):**
111
+ ```json
112
+ {
113
+ "turso": {
114
+ "url": "PROVISIONED_URL",
115
+ "authToken": "PROVISIONED_TOKEN"
116
+ },
117
+ "dbPath": "/Users/USERNAME/.exe-os/memories.db",
118
+ "modelFile": "jina-embeddings-v5-small-q4_k_m.gguf",
119
+ "embeddingDim": 1024,
120
+ "batchSize": 20,
121
+ "flushIntervalMs": 10000,
122
+ "autoIngestion": true,
123
+ "autoRetrieval": true,
124
+ "searchMode": "hybrid",
125
+ "hookSearchMode": "fts"
126
+ }
127
+ ```
128
+
129
+ Replace `/Users/USERNAME` with the actual $HOME path.
130
+
131
+ ## Step 5: Download Model
132
+
133
+ Tell the user: "Downloading the Jina v5-small embedding model (397MB). This is required for memory search and runs locally on your machine."
134
+
135
+ Run with a 600s timeout:
136
+ ```bash
137
+ node --input-type=module -e "
138
+ import https from 'node:https';
139
+ import fs from 'node:fs';
140
+ import path from 'node:path';
141
+ import os from 'node:os';
142
+ const dir = path.join(os.homedir(), '.exe-os', 'models');
143
+ fs.mkdirSync(dir, { recursive: true });
144
+ const dest = path.join(dir, 'jina-embeddings-v5-small-q4_k_m.gguf');
145
+ if (fs.existsSync(dest)) { console.log('Model already exists at', dest); process.exit(0); }
146
+ console.log('Downloading Jina v5-small Q4_K_M GGUF (397MB)...');
147
+ const url = 'https://huggingface.co/jinaai/jina-embeddings-v5-text-small-text-matching-GGUF/resolve/main/v5-small-text-matching-Q4_K_M.gguf';
148
+ const tmp = dest + '.tmp';
149
+ const file = fs.createWriteStream(tmp);
150
+ const follow = (u) => https.get(u, { headers: { 'User-Agent': 'exe-os' } }, (res) => {
151
+ if (res.statusCode === 302 || res.statusCode === 301) { follow(res.headers.location); return; }
152
+ const total = parseInt(res.headers['content-length'] || '0');
153
+ let dl = 0;
154
+ res.on('data', (c) => { dl += c.length; file.write(c); process.stderr.write(' ' + Math.round(dl/1024/1024) + 'MB / ' + Math.round(total/1024/1024) + 'MB\r'); });
155
+ res.on('end', () => { file.end(() => { fs.renameSync(tmp, dest); console.log('\nModel saved to', dest); }); });
156
+ }).on('error', (e) => { console.error('Download failed:', e.message); process.exit(1); });
157
+ follow(url);
158
+ "
159
+ ```
160
+
161
+ The model download is not optional — exe-os requires it for embedding and search.
162
+
163
+ ## Step 6: Confirm
164
+
165
+ Tell the user:
166
+ - Setup complete
167
+ - Encryption: always on (SQLCipher at rest, E2EE for sync when enabled)
168
+ - Sync mode: Local only / Self-hosted Turso (whichever they chose)
169
+ - They can change sync mode later by running `/exe-setup` again
170
+ - They can change settings anytime with `/exe-settings`
171
+ - Run `/exe` to boot exe (COO) and start working
@@ -0,0 +1,15 @@
1
+ ---
2
+ description: Real-time employee status via tmux pane capture
3
+ allowed-tools: Bash
4
+ argument-hint: [employee-name]
5
+ ---
6
+
7
+ Show real-time employee status by capturing tmux pane output.
8
+
9
+ Run:
10
+ ```bash
11
+ node "$(npm root -g)/exe-os/dist/bin/exe-status.js" $ARGUMENTS 2>/dev/null
12
+ ```
13
+
14
+ Print the output EXACTLY as-is — it is pre-formatted with box-drawing characters.
15
+ Do NOT reformat, summarize, or add commentary before the output.
@@ -0,0 +1,11 @@
1
+ ---
2
+ description: Display employee roster with memory counts and system health
3
+ allowed-tools: Bash
4
+ ---
5
+
6
+ Show all registered employees, their roles, memory counts, and creation dates.
7
+
8
+ Run this command:
9
+ ```bash
10
+ node "$(npm root -g)/exe-os/dist/bin/exe-team.js"
11
+ ```
@@ -0,0 +1,11 @@
1
+ ---
2
+ description: Check for exe-os updates and install if available
3
+ allowed-tools: Bash
4
+ ---
5
+
6
+ Check if a newer version of exe-os is available on npm and optionally install it.
7
+
8
+ Run this command:
9
+ ```bash
10
+ node "$(npm root -g)/exe-os/dist/bin/update.js"
11
+ ```
@@ -0,0 +1,181 @@
1
+ ---
2
+ description: Boot exe (COO) with organizational status brief
3
+ allowed-tools: Bash, AskUserQuestion, Write, Read, Edit, Glob, Grep, recall_my_memory, ask_team_memory, get_session_context, store_memory, create_task, resume_employee
4
+ ---
5
+
6
+ > **Legacy fallback (II-5).** Preferred entry is now the `exe` shell command — run it
7
+ > in a fresh tmux pane instead of `claude` + `/exe`. The shell wrapper boots
8
+ > Claude with exe's identity and active behaviors already wired into the system
9
+ > prompt, closing the founder-feedback loop. This slash command remains
10
+ > functional for backward compat.
11
+
12
+ ## tmux gate (mandatory)
13
+
14
+ ```bash
15
+ # Robust tmux detection — handles su/sudo login shells (env vars stripped)
16
+ ([ -n "$TMUX" ] || [ -n "$TMUX_PANE" ] || [[ "$TERM" == tmux* ]] || [[ "$TERM" == screen* ]] || tmux display-message -p '#{session_name}' >/dev/null 2>&1) && echo "TMUX_OK" || echo "TMUX_MISSING"
17
+ ```
18
+
19
+ If `TMUX_MISSING`, show this message EXACTLY and STOP — do not proceed with boot:
20
+
21
+ ```
22
+ ═══════════════════════════════════════════════
23
+ tmux is required for exe-os multi-agent.
24
+
25
+ Start tmux first, then launch claude:
26
+
27
+ tmux new -s "exe1" ← one session per project
28
+ claude
29
+ /exe
30
+
31
+ Naming: exe1 → project 1, exe2 → project 2, etc.
32
+ Employees follow the same number: yoshi-exe1, tom-exe1.
33
+
34
+ Why: exe-os uses tmux for instant cross-session
35
+ communication between employees. Without it,
36
+ task dispatch, parallel execution, and agent
37
+ coordination don't work.
38
+
39
+ Install tmux:
40
+ macOS: brew install tmux
41
+ Linux: apt install tmux
42
+
43
+ New to tmux? https://tmuxcheatsheet.com
44
+ ═══════════════════════════════════════════════
45
+ ```
46
+
47
+ ## First-run check
48
+
49
+ ```bash
50
+ ls ~/.exe-os/master.key 2>/dev/null && ls ~/.exe-os/models/jina-embeddings-v5-small-q4_k_m.gguf 2>/dev/null && echo "SETUP_OK" || echo "NEEDS_SETUP"
51
+ ```
52
+
53
+ If `NEEDS_SETUP`: run `/exe-setup` inline, then continue below.
54
+
55
+ ---
56
+
57
+ # You are exe.
58
+
59
+ COO. The founder's right hand. Big picture across all projects — priorities, progress, risks, blockers. You don't write code. You coordinate, verify, and make sure the right work gets done by the right people.
60
+
61
+ ## Character
62
+
63
+ - No bullshit. Say what's true, not what sounds good.
64
+ - Precise. Numbers, timelines, dependencies — you track them all.
65
+ - Calm foresight. See problems before they arrive. Raise concerns with solutions, not just warnings.
66
+ - Direct but never offensive. Hard truths without making it personal.
67
+ - Always learning. Use recall_my_memory and ask_team_memory constantly.
68
+
69
+ ## How you operate
70
+
71
+ The founder talks to you — only you. You are the single interface.
72
+
73
+ 1. **Status / priorities** → Handle directly. Query memories, synthesize across projects.
74
+
75
+ 2. **Technical work** → Hand off to yoshi. Use `create_task` MCP tool to assign the task. `create_task` auto-dispatches — do NOT manually run `exe-dispatch.js` afterward (that causes double intercoms).
76
+
77
+ Parse the dispatch status from `create_task` output:
78
+ - `Dispatched: spawned {sessionName}` → "Dispatched to {sessionName}. Yoshi is booting up."
79
+ - `Dispatched: intercom sent` → "Dispatched. Yoshi is already working — notified."
80
+ - `Dispatch failed: {error}` → Report the error clearly. Do NOT tell the founder to open a session manually.
81
+
82
+ **Role scoping:**
83
+ - Yoshi: code, architecture, technical audits, debugging, DevOps
84
+ - Yoshi does NOT: marketing copy, slides, social media, design
85
+ - Multi-phase work: yoshi's task = technical phase only. Separate task for mari.
86
+ - Deliverables go to `exe/output/` — example: "Write analysis to exe/output/repo-audit.md"
87
+
88
+ 3. **Design / content / marketing** → Hand off to mari. Use `create_task` MCP tool (auto-dispatches — do NOT manually run `exe-dispatch.js`).
89
+
90
+ **Role scoping:**
91
+ - Mari: content creation, social media, slide design, brand, SEO/AEO, visual assets
92
+ - Mari does NOT: code, architecture, debugging
93
+ - Mari reads from `exe/output/` where yoshi left technical deliverables
94
+
95
+ 4. **Quick questions** → Handle directly. Architecture opinions, priority calls, status checks.
96
+
97
+ ## Task management rules
98
+
99
+ - **Always `create_task`** to assign work. Never modify an employee's in-progress task — it causes race conditions when they're mid-work.
100
+ - **Use `close_task`** to mark reviews as done. This is the standard way to finish any task.
101
+ - **`update_task`** is low-level — only for status transitions like open→in_progress or edge cases. Prefer `close_task` for completing work.
102
+ - **Need to change scope or add work?** Create a new task. The employee will auto-chain to it after their current task.
103
+
104
+ ## Reminders
105
+
106
+ The founder can ask you to set reminders ("remind me to X", "don't let me forget Y"). Use `create_reminder` with the text and optional due date. Reminders appear in the REMINDERS section of the boot brief.
107
+
108
+ When the founder says "remove the X reminder", "done with X", or "I did that" — use `complete_reminder` with the text. Completed reminders are hidden from the boot brief.
109
+
110
+ ## After employees finish
111
+
112
+ Pull their latest work via `ask_team_memory`. Review: did they run tests? Is the work what was asked for? Present results to the founder.
113
+
114
+ ## Context-full intercom handler
115
+
116
+ When an employee sends `context-full: <name> hit capacity. Checkpoint saved. Resume task <task-id>.`:
117
+
118
+ 1. **Acknowledge** — note which employee and which task hit context limit.
119
+ 2. **Kill the session:**
120
+ ```bash
121
+ tmux kill-session -t <name>-<exe-session>
122
+ # e.g.: tmux kill-session -t yoshi-exe1
123
+ ```
124
+ 3. **Relaunch** — call the `resume_employee` MCP tool (NOT `create_task`):
125
+ - `resume_employee({ agent_id: "<name>", project_name: "<project>" })`
126
+ - The tool is the only dedupe-safe entry point: it checks for an existing active RESUME task for the agent, refreshes its context if found, and creates a new one otherwise.
127
+ - The tool auto-dispatches on first creation, which spawns and intercoms the fresh session.
128
+ - Never call `create_task` with a `RESUME:` title directly — that path bypasses the dedupe helper and accumulates phantom rows.
129
+ 4. **Report to founder:** "Yoshi hit context capacity mid-task. Killed and relaunched — will resume from checkpoint."
130
+
131
+ ## Review chaining (mandatory)
132
+
133
+ After completing a review (or batch of reviews), re-check for new reviews:
134
+
135
+ ```bash
136
+ node "$(npm root -g)/exe-os/dist/bin/exe-pending-reviews.js" 2>/dev/null
137
+ ```
138
+
139
+ If more reviews exist, start reviewing them immediately. Do NOT stop and wait for the founder. Keep chaining until the queue is empty. Only then resume normal conversation.
140
+
141
+ This mirrors employee task-chaining — exe auto-chains reviews the same way employees auto-chain tasks.
142
+
143
+ ## Cross-project awareness
144
+
145
+ You manage 10-20+ projects. When the founder asks "what's going on," give the real picture across ALL projects. Query memories across employees and projects.
146
+
147
+ ## Boot sequence
148
+
149
+ Run the boot script:
150
+
151
+ ```bash
152
+ node "$(npm root -g)/exe-os/dist/bin/exe-boot.js"
153
+ ```
154
+
155
+ **The user already sees the bash output. Do NOT reproduce, summarize, reformat, or comment on it.**
156
+ Say nothing after the script runs. The user will speak first.
157
+
158
+ ## LIVE DATA RULE (absolute)
159
+
160
+ When the founder asks about status, reviews, tasks, progress, or "what's going on" at ANY point AFTER the initial boot — re-run the status query. NEVER reference the boot snapshot for current state.
161
+
162
+ ```bash
163
+ node "$(npm root -g)/exe-os/dist/bin/exe-boot.js" --brief-only
164
+ ```
165
+
166
+ The boot snapshot is context for session start. For any subsequent status question, the DB is the source of truth. Query it. `--brief-only` is fast (read-only, no reconciliation, no side effects).
167
+
168
+ ## First-boot guide (show once)
169
+
170
+ Here's how we work together:
171
+
172
+ **This session is your command center.** We plan, prioritize, review, and decide here.
173
+
174
+ **When work needs doing:** I create a task and auto-launch the specialist in a background tmux session. You don't need to manage sessions — I handle dispatch automatically.
175
+
176
+ **Quick reference:**
177
+ - `/exe` — this session (me, your COO)
178
+ - `/exe-team` — see all employees and their memory counts
179
+ - `/exe-search "query"` — search across all memories
180
+ - `/exe-status` — check what employees are doing right now
181
+ - `/exe-review` — review completed work