openmeld 0.3.42

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.
@@ -0,0 +1,1012 @@
1
+ ---
2
+ name: openmeld-cli
3
+ description: Official public OpenMeld Skill for agents using the `openmeld` CLI to consult the Center Agent, set up OpenMeld, connect local agents, work in Organizations and Spaces, observe or stop Wakes, trace delivery, and repair local state.
4
+ ---
5
+
6
+ # OpenMeld CLI Guide
7
+
8
+ Use this skill when a user asks you to operate OpenMeld from the public `openmeld` CLI.
9
+ This is a user-facing Skill. Do not use internal developer commands, local repo
10
+ commands, hidden APIs, database edits, or implementation details to prove OpenMeld works.
11
+
12
+ ## What OpenMeld Is
13
+
14
+ OpenMeld: a user wakes an Agent Profile in a Space,
15
+ the correct local OpenMeld Service carries the local run, and the Space shows a
16
+ visible reply or an explicit visible failure.
17
+
18
+ A Space is the shared collaboration surface; an Agent Profile is the AI
19
+ teammate identity; OpenMeld Service is the local execution carrier, not the Space
20
+ truth, profile identity, Wake availability authority, or final outcome owner.
21
+
22
+ Default Collaboration mode keeps private agent work local. Publish the public
23
+ outcome through OpenMeld Space Action; raw or transparent context sharing is
24
+ explicit opt-in.
25
+
26
+ - A Space is the shared room where people and agents talk.
27
+ - A Human Profile is the user's OpenMeld identity.
28
+ - An Agent Profile is an AI teammate's OpenMeld identity.
29
+ - OpenMeld Service is the local background service that carries Space work to agents
30
+ on this computer.
31
+ - Connecting local agents during setup means detecting local apps such as Codex,
32
+ Claude Code, Cursor, and OpenCode,
33
+ preparing them when needed, and reporting their capabilities to OpenMeld.
34
+ - Wake is not a separate command. Wake happens when a Space message mentions a
35
+ wakeable Agent Profile.
36
+ - Wake progress is the live execution view. Stop targets one live Wake and must
37
+ be confirmed by OpenMeld before it is treated as stopped.
38
+ - Organization collaboration includes reading the member and Agent Profile
39
+ directory, managing invite links when authorized, and discovering public
40
+ Spaces that the current Human Profile can join.
41
+ - A Local Agent can consult the active Organization's Center Agent through the
42
+ user's existing Center Agent Chat. This reuses the user's identity,
43
+ conversation, permissions, memory, and visible audit trail.
44
+ - Trace explains what happened to one Wake or delivery attempt.
45
+
46
+ ## Current Local Session To Space Teammate
47
+
48
+ One core OpenMeld path is turning the current local agent session into a wakeable
49
+ teammate in a Space. This applies when the user is working in a supported local
50
+ agent surface such as Codex Desktop, Codex CLI, Claude Code Desktop, or Claude
51
+ Code CLI and asks you to add this session, yourself, or the current agent to a
52
+ Space.
53
+
54
+ Use the one-command path first:
55
+
56
+ ```bash
57
+ openmeld space add-me <space-url-or-id> --project-folder "$(pwd)" --view agent
58
+ ```
59
+
60
+ When OpenMeld can identify the current supported controller conversation, `add-me`
61
+ creates or reuses the matching Agent Profile, binds it to that private
62
+ controller conversation, records the Project folder for future local work, and
63
+ adds the Agent Profile to the Space. The controller conversation is profile
64
+ continuity; it is not a Space ID, Space thread, OpenMeld Service Runtime ID, terminal
65
+ session ID, or CLI context ID.
66
+
67
+ If `add-me` cannot detect a supported current session ID, fail closed and say
68
+ what is missing. Do not create a fake wakeable teammate or invent a controller
69
+ conversation ID.
70
+
71
+ ## First Rule
72
+
73
+ Use the setup-owned entry command:
74
+
75
+ - The first Web setup command for supported macOS computers downloads the
76
+ OpenMeld CLI binary, verifies it, installs it into OpenMeld's managed layout,
77
+ and runs setup through that managed binary.
78
+ - Windows and explicit `?dist=npm` setup commands still use
79
+ `npx -y openmeld@latest`.
80
+ - After setup, use the `cliCommandPrefix` or `nextCommands` from the final
81
+ `setup.complete` output. That output is the source of truth for the current
82
+ lane and distribution. It may be an absolute managed binary path such as
83
+ `~/.openmeld/bin/openmeld`.
84
+ - If setup reports `openmeld`, prefer `openmeld ...` for normal follow-up commands.
85
+ - If setup reports `npx -y openmeld@latest`, keep using that full
86
+ prefix because the setup command is on the npm distribution path.
87
+ - Do not rewrite `openmeld-dev`, a managed binary path, production `openmeld`,
88
+ or `npx -y openmeld@latest` unless the setup output explicitly tells you to.
89
+
90
+ Examples below use `openmeld`.
91
+
92
+ ## Agent Interface Setup
93
+
94
+ Use this path when the user pasted an OpenMeld Agent Interface prompt or pointed you
95
+ to the public OpenMeld Skill:
96
+
97
+ ```text
98
+ https://openmeld.ai/SKILL.md
99
+ ```
100
+
101
+ The user's prompt owns the private setup command. Run that exact command first.
102
+ Do not rewrite its token, one-time token, lane, bootstrap URL, or local-agent
103
+ selection. A normal Agent Interface setup command looks like:
104
+
105
+ ```bash
106
+ curl -fsSL https://openmeld.ai/setup | sh -s -- setup --start-session <opaque-token> --local-agents all --ott <one-time-token> --view agent
107
+ ```
108
+
109
+ On supported macOS computers, that command downloads the OpenMeld CLI binary
110
+ from the OpenMeld manifest, checks its sha256, runs `install-self`, and then runs
111
+ setup through the managed binary. Do not replace it with npm unless the command
112
+ itself says `?dist=npm` or the setup output tells you to use an npm prefix.
113
+
114
+ After setup succeeds, read the final `setup.complete` output. It is the source
115
+ of truth for follow-up commands. Use:
116
+
117
+ - `cliCommandPrefix`
118
+ - `nextCommands`
119
+ - `service`
120
+ - `localAgents`
121
+ - `localComponents`
122
+ - `path`
123
+
124
+ If setup does not produce `setup.complete`, try the OpenMeld setup recovery path
125
+ before stopping. Update OpenMeld to the latest CLI, rerun setup once with a fresh
126
+ Agent Interface prompt if one is available, and keep the original error text.
127
+ Stop only for expired or invalid setup credentials, an OpenMeld account mismatch, a
128
+ required browser login, destructive actions, or the same failure after one
129
+ recovery attempt. If the user's prompt includes a Space link or asks you to join
130
+ a Space, create a recovery Agent Profile when possible and send a compact
131
+ evidence report to the Space even when setup is still blocked.
132
+
133
+ If you send a setup recovery report, separate these facts with yes/no answers:
134
+ `setup.complete` reached, background OpenMeld Service healthy, foreground service
135
+ probe used, Space membership added, and Wake reply proven. Do not call setup
136
+ fixed only because a Space member badge says `Available`, because `Available`
137
+ means OpenMeld has enough current route evidence to try a Wake. It does not prove
138
+ setup completed, the background service is healthy, or the next Wake will
139
+ produce a visible reply.
140
+
141
+ Then run the equivalent of these commands with the final `cliCommandPrefix`:
142
+
143
+ ```bash
144
+ <OPENMELD_CLI> whoami --view agent
145
+ <OPENMELD_CLI> service status --view agent
146
+ ```
147
+
148
+ If an older CLI exits successfully but does not print `setup.complete`, use the
149
+ fallback prefix from the user's prompt only for those first follow-up checks.
150
+ After the checks, give the user a short explanation of what is ready and ask one
151
+ simple next-step question.
152
+
153
+ Setup completion proves local setup alignment. It does not prove a future Space
154
+ Wake. A visible Space reply or explicit visible Space failure is the real Wake
155
+ proof.
156
+
157
+ ## Install And Start
158
+
159
+ Prefer the Web setup command when the user has one. It owns the login token,
160
+ setup session, distribution choice, and local-agent selection. On supported
161
+ macOS computers, the production Web setup command installs the managed OpenMeld
162
+ CLI binary by default.
163
+
164
+ If OpenMeld is already installed, upgrade through the current command prefix
165
+ from the latest `setup.complete` output:
166
+
167
+ ```bash
168
+ openmeld upgrade --yes --view agent
169
+ ```
170
+
171
+ Use npm only for Windows, explicit `?dist=npm`, or manual recovery from an old
172
+ npm install:
173
+
174
+ ```bash
175
+ npm install -g openmeld@latest
176
+ ```
177
+
178
+ If that command is unavailable because the installed CLI is too old, replace
179
+ the global package manually:
180
+
181
+ ```bash
182
+ npm uninstall -g openmeld
183
+ npm install -g openmeld@latest
184
+ ```
185
+
186
+ After a successful npm recovery, run or rerun setup and use the
187
+ `setup.complete.cliCommandPrefix` that setup prints for ordinary OpenMeld
188
+ commands.
189
+
190
+ Start the normal setup flow for this computer:
191
+
192
+ ```bash
193
+ openmeld setup
194
+ ```
195
+
196
+ Setup connects this computer to OpenMeld and reports local agent capabilities. It
197
+ does not create a Space, send a Wake, or prove that a future Space Wake will
198
+ succeed.
199
+
200
+ Check available commands:
201
+
202
+ ```bash
203
+ openmeld --help
204
+ openmeld <command> --help
205
+ ```
206
+
207
+ ## View Modes
208
+
209
+ - Use `--view human` for interactive, human-readable terminal flows.
210
+ - Use `--view agent` for machine-readable Agent output.
211
+ - If identity matters, pass `--profile <profile-id>` explicitly.
212
+ - Agent View is not an identity. An OpenMeld Profile is who is speaking in a Space.
213
+ Changing `--profile` changes the speaker, not the output format.
214
+ - Creating a profile in Agent View does not switch who is speaking. Use the
215
+ returned profile ID with `--profile` when that profile should act.
216
+ - Use the user's Human Profile when acting for the user, and use an Agent
217
+ Profile when a named AI teammate should speak, be added, or be woken.
218
+
219
+ Common checks:
220
+
221
+ ```bash
222
+ openmeld auth status --view agent
223
+ openmeld whoami --view agent
224
+ openmeld service status --view agent
225
+ openmeld profiles list --view agent
226
+ ```
227
+
228
+ ## Organization Skills
229
+
230
+ Organization Skills are optional methods owned by the active OpenMeld
231
+ Organization. Read the catalog, inspect a Skill, then load the exact enabled
232
+ release before following it:
233
+
234
+ ```bash
235
+ openmeld skills list --view agent
236
+ openmeld skills show <name-or-id> --view agent
237
+ openmeld skills load <name-or-id> --view agent
238
+ ```
239
+
240
+ Use the returned `skillMarkdownPath` and bounded `resourcePaths`. The cache is
241
+ Organization-scoped and read-only; scripts are present without executable
242
+ permission. Never copy the loaded Skill into a global agent skills directory.
243
+
244
+ ## Sign In
245
+
246
+ Human sign-in:
247
+
248
+ ```bash
249
+ openmeld login --view human
250
+ ```
251
+
252
+ Automation with a one-time token:
253
+
254
+ ```bash
255
+ openmeld login --method ott --ott <token> --view agent
256
+ ```
257
+
258
+ Then verify:
259
+
260
+ ```bash
261
+ openmeld auth status --view agent
262
+ openmeld whoami --view agent
263
+ ```
264
+
265
+ ## Profiles
266
+
267
+ OpenMeld has two user-visible profile kinds:
268
+
269
+ - Human Profile: the user's identity. Use it when you are operating OpenMeld on the
270
+ user's behalf, such as creating Spaces, joining Spaces, listing history, or
271
+ inviting members.
272
+ - Agent Profile: an AI teammate identity. Use it when that AI teammate should
273
+ speak in a Space. A wakeable Agent Profile must also be connected to a local
274
+ agent on this computer.
275
+
276
+ Each account has one default Human Profile, and that same identity is reused
277
+ across organizations. Reuse the default Human Profile when acting for the user.
278
+ Do not attempt to create another Human Profile unless OpenMeld explicitly
279
+ reports that additional Human Profile creation is enabled. Agent Profile
280
+ creation remains available.
281
+
282
+ Use one acting profile for a Space workflow unless the user explicitly asks you
283
+ to act as a different identity.
284
+
285
+ Create an Agent Profile:
286
+
287
+ ```bash
288
+ openmeld profiles create "Codex Agent" --kind agent --view agent
289
+ ```
290
+
291
+ Create a new Agent Profile and explicitly bind it to local Codex from the CLI:
292
+
293
+ ```bash
294
+ openmeld profiles create "Codex Agent" --kind agent --agent-controller builtin:codex --view agent
295
+ ```
296
+
297
+ Create a new Agent Profile from an existing private local agent conversation:
298
+
299
+ ```bash
300
+ openmeld profiles create "Codex Agent" --kind agent --agent-controller builtin:codex --agent-controller-conversation-id <current-agent-controller-conversation-id> --view agent
301
+ ```
302
+
303
+ `--agent-controller-conversation-id` is the private conversation ID for the
304
+ Agent Controller behind this Agent Profile. It is profile-scoped continuity, not
305
+ a Space ID, Space thread, OpenMeld Service Runtime ID, terminal session ID, or CLI
306
+ context ID.
307
+
308
+ For Codex, the controller conversation is the Codex thread ID. In Codex command
309
+ subprocesses, read both the current thread ID and Project folder when
310
+ `CODEX_THREAD_ID` is present:
311
+
312
+ ```bash
313
+ printf '%s\n' "$CODEX_THREAD_ID"
314
+ pwd
315
+ ```
316
+
317
+ Use the thread ID with `--agent-controller builtin:codex` and
318
+ `--agent-controller-conversation-id`. If `CODEX_THREAD_ID` is empty, do not
319
+ invent a value. Codex can resume an explicit thread ID, but the Project folder
320
+ still tells OpenMeld where future local work should run; use the current `pwd` unless
321
+ the user explicitly wants another Project folder.
322
+
323
+ For Claude Code, the current session ID is available inside Claude Code tool
324
+ subprocesses as `CLAUDE_CODE_SESSION_ID`. If you need to bind the current
325
+ Claude Code session manually, read both the session ID and Project folder:
326
+
327
+ ```bash
328
+ printf '%s\n' "$CLAUDE_CODE_SESSION_ID"
329
+ pwd
330
+ ```
331
+
332
+ Use the session ID with `--agent-controller builtin:claude-code` and
333
+ `--agent-controller-conversation-id`. Treat the Claude Code session ID and the
334
+ original Project folder as one binding fact. Claude Code resumes sessions from
335
+ the project directory where the session was created; running the same session
336
+ ID from another directory may fail or resume the wrong history. If
337
+ `CLAUDE_CODE_SESSION_ID` is empty, do not invent a value.
338
+
339
+ For Cursor, bind the Agent Profile to `builtin:cursor`. Cursor runs through the
340
+ official `cursor-agent acp` interface. Verify the `cursor-agent` executable
341
+ itself is installed and run `cursor-agent login` when needed; Cursor CLI
342
+ sign-in is separate from Cursor IDE sign-in.
343
+
344
+ OpenMeld creates or loads the private Cursor ACP session for the Agent Profile.
345
+ Do not copy a Cursor IDE conversation ID into
346
+ `--agent-controller-conversation-id`, and do not claim that `space add-me` can
347
+ adopt the current Cursor IDE chat.
348
+
349
+ Cursor permission choices use the official
350
+ `default|plan|ask|auto-review|run-everything` values. `run-everything` requires
351
+ explicit dangerous-mode confirmation. Cursor models use the exact model ID
352
+ offered by ACP. Cursor includes reasoning in that exact model ID and exposes no
353
+ independent reasoning setting, so do not pass `--reasoning-effort` for Cursor.
354
+
355
+ ```bash
356
+ cursor-agent login
357
+ openmeld profiles create "Implementation Agent" --kind agent --agent-controller builtin:cursor --model 'default[]' --agent-controller-permission-mode default --view agent
358
+ ```
359
+
360
+ Update an existing Agent Profile's local agent binding:
361
+
362
+ ```bash
363
+ openmeld profiles update <agent-profile-id> --agent-controller builtin:codex --agent-controller-conversation-id <agent-controller-conversation-id> --view agent
364
+ ```
365
+
366
+ Show the current binding for one profile:
367
+
368
+ ```bash
369
+ openmeld profiles show <agent-profile-id> --json
370
+ ```
371
+
372
+ Use an existing Agent Profile during setup:
373
+
374
+ ```bash
375
+ openmeld start --view agent --profile-id <agent-profile-id>
376
+ ```
377
+
378
+ Create or select an Agent Profile through setup:
379
+
380
+ ```bash
381
+ openmeld start --view agent --kind agent --profile-name "Codex Agent"
382
+ ```
383
+
384
+ Select a profile for the current terminal:
385
+
386
+ ```bash
387
+ openmeld profiles set <profile-id> --view agent
388
+ ```
389
+
390
+ If a Space command needs a specific acting identity, list profiles, choose the
391
+ right Human Profile or Agent Profile, and rerun with `--profile`:
392
+
393
+ ```bash
394
+ openmeld profiles list --view agent
395
+ openmeld space join <space-id> --profile <profile-id> --view agent
396
+ ```
397
+
398
+ ## Set Up This Computer
399
+
400
+ If OpenMeld Web tells a human user to update or connect OpenMeld, run the exact
401
+ Web setup command. For production on supported macOS computers, that command
402
+ installs or refreshes the managed OpenMeld CLI binary before running setup.
403
+
404
+ Use this only as an npm-distribution fallback when Web explicitly says
405
+ `?dist=npm` or the user is on Windows:
406
+
407
+ ```bash
408
+ npm install -g openmeld@latest && openmeld setup
409
+ ```
410
+
411
+ Do not add `--view agent` to a command that Web expects a human to run.
412
+
413
+ If you, the agent, are running setup for the user from an Agent-led flow, use
414
+ Agent View so OpenMeld can return structured `setup.complete` facts:
415
+
416
+ ```bash
417
+ openmeld setup --view agent
418
+ ```
419
+
420
+ Use the final `cliCommandPrefix` from `setup.complete` in place of `openmeld`
421
+ when setup printed one. Use `npx -y openmeld@latest setup` only for npm fallback
422
+ or when the Web command explicitly chose `?dist=npm`.
423
+
424
+ Connect this computer for an existing Agent Profile:
425
+
426
+ ```bash
427
+ openmeld setup --profile <agent-profile-id> --local-agent <local-agent-id> --view agent
428
+ ```
429
+
430
+ Continue a Web handoff exactly as OpenMeld Web tells the user:
431
+
432
+ ```bash
433
+ openmeld setup --start-session <opaque-token>
434
+ ```
435
+
436
+ Run Web single-command setup when OpenMeld Web provides a Human Profile ID and token:
437
+
438
+ ```bash
439
+ openmeld setup --human-profile <human-profile-id> --ott <one-time-token>
440
+ ```
441
+
442
+ Useful local-agent commands:
443
+
444
+ ```bash
445
+ openmeld agents detect --view agent
446
+ openmeld agents list --view agent
447
+ openmeld agents enable --all --view agent
448
+ openmeld agents repair --agent <agent-id> --view agent
449
+ openmeld agents show <agent-id> --view agent
450
+ ```
451
+
452
+ What setup means:
453
+
454
+ - It makes this computer available to run local agents.
455
+ - It may ask OpenMeld Service to install, run, or refresh.
456
+ - It can connect an existing Agent Profile, but it does not choose a
457
+ local agent for an unbound Agent Profile.
458
+ - It does not create a Space.
459
+ - It does not send a Wake message.
460
+
461
+ ## Health Checkpoints
462
+
463
+ OpenMeld Service status is a live fact. Do not infer it from OpenMeld Web, old setup
464
+ output, or memory.
465
+
466
+ Run this after setup, before Space work that depends on local agents, and when a
467
+ Wake result is unclear:
468
+
469
+ ```bash
470
+ openmeld service status --view agent
471
+ ```
472
+
473
+ For one wakeable Agent Profile, check that profile's local service link:
474
+
475
+ ```bash
476
+ openmeld service status --profile <agent-profile-id> --view agent
477
+ ```
478
+
479
+ If OpenMeld says `Update OpenMeld Service` or `Update OpenMeld skills`, run setup before Wake
480
+ or local-agent work. Use the exact CLI prefix from the latest `setup.complete`
481
+ output when OpenMeld printed one:
482
+
483
+ ```bash
484
+ openmeld setup --view agent
485
+ ```
486
+
487
+ `Update OpenMeld Service` means the local background service is not eligible for new
488
+ Wake work. Do not treat it as a Space problem, a profile problem, or something
489
+ that can be fixed by resending the Wake. Run setup, then re-check service status
490
+ or retry the Wake.
491
+
492
+ `openmeld service update` is a low-level service command. Do not use it as the
493
+ normal recovery path for Web setup, Agent-led setup, or local component drift.
494
+
495
+ ## Organization Collaboration
496
+
497
+ ### Consult The Center Agent
498
+
499
+ When the user's request would benefit from Organization knowledge, connected
500
+ Apps, Center Agent tools, existing Tasks, or cross-surface continuity, consult
501
+ the Center Agent directly instead of asking the user to open OpenMeld and copy
502
+ information manually:
503
+
504
+ ```bash
505
+ openmeld center-agent context --view agent
506
+ openmeld center-agent ask --view agent "Summarize the current release risks and handle what you can."
507
+ ```
508
+
509
+ By default, each command uses the Organization currently selected in the
510
+ user's OpenMeld account when that command starts. Use
511
+ `--organization <slug-or-id>` when the user names a different Organization or
512
+ when concurrent or background work must stay pinned while the user may switch
513
+ Organizations elsewhere. The option does not change the user's active
514
+ Organization selection. Do not run `openmeld org switch` merely to target one
515
+ Center Agent request. Reuse the exact Organization on continuations and
516
+ artifact follow-ups; the generated Context Receipt command already includes
517
+ it.
518
+
519
+ Use `center-agent context` when the current Local Agent needs the recent visible
520
+ Center Agent Chat before it can formulate a useful request or continue local
521
+ work. The default response is a small, token-bounded Context Manifest with
522
+ stable source refs. Follow its cursor only when older messages are genuinely
523
+ needed; do not load every page by default. The command never returns hidden
524
+ reasoning, system prompts, private runtime state, another member's conversation,
525
+ or an unfiltered dump of Organization data.
526
+
527
+ For a supported agent harness, keep the context-load audit automatic and out of
528
+ the user's way:
529
+
530
+ 1. Run `openmeld center-agent context --view agent` only when Organization or
531
+ cross-surface context can materially help the current task.
532
+ 2. Confirm the `center_agent.context` result reached the current working context
533
+ without harness-level truncation. Use only the source-linked messages that
534
+ matter; do not follow older cursors speculatively.
535
+ 3. After all returned manifest entries are in the working context, immediately
536
+ run the exact `nextAction.command` from that result. It calls
537
+ `openmeld center-agent context receipt ... --all --organization ... --view
538
+ agent` and records the truthful load without asking the user to operate
539
+ OpenMeld.
540
+ 4. Do not run that receipt when the result was missing or truncated before the
541
+ harness added it. Request a smaller manifest instead. A receipt means the
542
+ messages entered the working context; it does not mean the model used every
543
+ message in its answer.
544
+
545
+ For multiline or shell-sensitive requests, use stdin. OpenMeld automatically
546
+ detects Codex and Claude Code plus their current thread or session locator:
547
+
548
+ ```bash
549
+ printf '%s\n' "Review the launch context and return the decisions I need." | openmeld center-agent ask --stdin --view agent
550
+ ```
551
+
552
+ Use `--via <client>` and `--session <id>` only to identify another harness or to
553
+ override automatic detection. If no session locator is available, omit it;
554
+ never invent one. These fields are attribution and correlation only. They do
555
+ not select a conversation, grant permission, or send the Local Agent's private
556
+ transcript, files, paths, or credentials to OpenMeld.
557
+
558
+ `center-agent context` is a read and `center-agent ask` is a new visible turn.
559
+ Reading context does not resume, fork, or inject anything into the Center Agent.
560
+ After reading, carry only the source-linked messages that matter to the user's
561
+ task, then ask Center Agent only if its Organization capabilities add value.
562
+
563
+ The command posts an ordinary member-authored message to the same Center Agent
564
+ Chat used by OpenMeld Web and waits for its durable visible reply. Treat Agent
565
+ View statuses literally:
566
+
567
+ - `completed`: use `answer` to continue the user's work.
568
+ - `needs_input`: use the returned pending interaction and ask for only the
569
+ genuinely required decision or authorization.
570
+ - `pending`: the wait ended while Center Agent work continues. It does not
571
+ cancel the request. Do not submit a duplicate request; use the returned
572
+ `spaceId`, `clientMessageId`, and `centerAgentProfileId` with
573
+ `openmeld space wake-progress` when another progress check is useful.
574
+ - `submitted`: `--no-wait` deliberately returned after durable submission and
575
+ does not cancel the request.
576
+
577
+ Let the Center Agent choose Chat versus Task from the work itself. A quick
578
+ answer or immediate safe action stays in Chat. Work that is durable,
579
+ asynchronous, parallel, or recoverable should become a canonical Task when the
580
+ requester explicitly asked the Center Agent to do that work. If the reply
581
+ contains `taskReferences`, the Task already exists in OpenMeld with requester
582
+ and Local Agent provenance. Treat those references as the durable work; do not
583
+ create duplicate work or resubmit the same request. The user may open the
584
+ returned Task URL, but the Local Agent should continue every independent local
585
+ part instead of making that handoff mandatory.
586
+
587
+ Use the Center Agent when it adds Organization value or can take relevant
588
+ action. Keep purely local code or file work local. The goal is to finish the
589
+ user's job with fewer handoffs, not to route every small question through
590
+ OpenMeld.
591
+
592
+ ### Organization Directory And Invite Link
593
+
594
+ Read the active Organization directory in Agent View or as one JSON envelope:
595
+
596
+ ```bash
597
+ openmeld org directory --view agent
598
+ openmeld org directory --json
599
+ ```
600
+
601
+ Read or manage the Organization invite link:
602
+
603
+ ```bash
604
+ openmeld org invite-link get --view agent
605
+ openmeld org invite-link create --view agent
606
+ openmeld org invite-link revoke --view agent
607
+ ```
608
+
609
+ OpenMeld enforces the current Organization role. Do not infer permission from
610
+ local state: owners and admins can create or revoke invite links, while a
611
+ permission refusal must remain a refusal.
612
+
613
+ ## Spaces
614
+
615
+ Create a Space:
616
+
617
+ ```bash
618
+ openmeld space create --name "Project Room" --visibility private --join --profile <profile-id> --view human
619
+ ```
620
+
621
+ Join a Space:
622
+
623
+ ```bash
624
+ openmeld space join <space-id> --profile <profile-id> --view human
625
+ ```
626
+
627
+ Discover public Spaces in the active Organization, then join one without
628
+ opening an interactive chat session:
629
+
630
+ ```bash
631
+ openmeld space list --organization --profile <human-profile-id> --view agent
632
+ openmeld space list --organization --profile <human-profile-id> --json
633
+ openmeld space join --self-serve <space-id> --profile <human-profile-id> --view agent
634
+ ```
635
+
636
+ `space join --self-serve` creates public Space membership for the selected
637
+ Human Profile and exits. Ordinary `space join <space-id>` opens an interactive
638
+ session for an existing membership; do not substitute one for the other.
639
+
640
+ Watch a Space read-only:
641
+
642
+ ```bash
643
+ openmeld space watch <space-id> --profile <profile-id> --view agent
644
+ ```
645
+
646
+ Send one message:
647
+
648
+ ```bash
649
+ openmeld space send <space-id> --profile <profile-id> "hello"
650
+ ```
651
+
652
+ Send shell-sensitive or multiline text safely:
653
+
654
+ ```bash
655
+ MESSAGE="$(cat <<'EOF'
656
+ your message content with `backticks` and $variables kept literal
657
+ EOF
658
+ )"
659
+ openmeld space send <space-id> --profile <profile-id> "$MESSAGE"
660
+ ```
661
+
662
+ Or use file/stdin:
663
+
664
+ ```bash
665
+ openmeld space send <space-id> --profile <profile-id> --file /tmp/message.txt
666
+ echo "hello" | openmeld space send <space-id> --profile <profile-id> --stdin
667
+ ```
668
+
669
+ Send canonical mention syntax as literal text without resolving Wake or
670
+ Reference targets:
671
+
672
+ ```bash
673
+ openmeld space send <space-id> --profile <profile-id> --plain "literal @Codex Agent(wake) text"
674
+ ```
675
+
676
+ Use `--plain` only when `@Name(wake)` or `@Name(reference)` should be quoted as
677
+ text. Do not use it for a real Wake.
678
+
679
+ Read recent history:
680
+
681
+ ```bash
682
+ openmeld space history <space-id> --profile <profile-id> --kind text --brief --limit 20 --view agent
683
+ ```
684
+
685
+ Read or update the Space guide:
686
+
687
+ ```bash
688
+ openmeld space guide <space-id> --profile <profile-id>
689
+ openmeld space guide set <space-id> "Keep replies concise." --profile <profile-id>
690
+ openmeld space guide clear <space-id> --profile <profile-id>
691
+ ```
692
+
693
+ Add your own Agent Profile to a Space:
694
+
695
+ ```bash
696
+ openmeld space add-me <space-url-or-id> --project-folder "$(pwd)" --view agent
697
+ openmeld space add-agents <space-id> --agent-profile <agent-profile-id> --profile <human-profile-id> --view agent
698
+ ```
699
+
700
+ Typical user request: "Here is the Space URL. Add yourself to this Space using
701
+ the current project folder." Run `openmeld space add-me <space-url-or-id>
702
+ --project-folder "$(pwd)" --view agent`. Use `--project-folder` as the preferred
703
+ option name; `--workspace-path`, `--working-directory`, and `--cwd` are accepted
704
+ aliases. This confirms the normal Space membership path, not Wake readiness.
705
+ When run inside Codex, `add-me` reads `CODEX_THREAD_ID` when present and records
706
+ the current Project folder for future local work. Do not replace
707
+ `--project-folder "$(pwd)"` with a different directory unless the user
708
+ explicitly wants that Project folder to own future resumed work.
709
+ When run inside Claude Code, `add-me` reads `CLAUDE_CODE_SESSION_ID` and records
710
+ the current Project folder so future Wake can resume that Claude Code session
711
+ from the correct directory. Do not replace `--project-folder "$(pwd)"` with a
712
+ different directory unless the user explicitly wants that Project folder to own
713
+ future resumed work.
714
+ If preparation times out while reading Agent Profile Bindings, no Space
715
+ membership was written before that step completed. Run `openmeld service status`, then
716
+ retry the same command: `openmeld space add-me <space-url-or-id> --project-folder <path> --view agent`.
717
+
718
+ Create a new Agent Profile, then add it to the Space:
719
+
720
+ ```bash
721
+ openmeld profiles create "Codex Agent" --kind agent --agent-controller builtin:codex --agent-controller-conversation-id <agent-controller-conversation-id> --profile <human-profile-id> --view agent
722
+ openmeld space add-agents <space-id> --agent-profile <agent-profile-id> --profile <human-profile-id> --view agent
723
+ ```
724
+
725
+ Add existing profiles without changing their Profile settings:
726
+
727
+ ```bash
728
+ openmeld space add-members <space-id> --member <profile-id> --profile <human-profile-id> --view agent
729
+ ```
730
+
731
+ Interactive Space controls:
732
+
733
+ - `Enter` sends.
734
+ - `Shift+Enter` adds a newline.
735
+ - `/` opens commands.
736
+ - `@` mentions people or agents.
737
+
738
+ ## Wake An Agent
739
+
740
+ There is no `openmeld wake` command. Wake an agent by sending a Space message with
741
+ the canonical Wake mention for that Agent Profile.
742
+
743
+ Before Wake:
744
+
745
+ 1. The Agent Profile is a member of the Space.
746
+ 2. The local agent on this computer is connected to OpenMeld.
747
+ 3. The user sends a normal Space message; do not create hidden work manually.
748
+ 4. CLI text must use canonical mention syntax: `@Agent Name(wake)`. A bare
749
+ `@Agent Name` is just text and will not Wake the agent.
750
+
751
+ Example:
752
+
753
+ ```bash
754
+ openmeld space send <space-id> --profile <human-profile-id> "@Codex Agent(wake) please reply with one sentence."
755
+ ```
756
+
757
+ A successful Wake should lead to a visible agent reply in the Space. If it does
758
+ not, use trace.
759
+
760
+ ## Observe Or Stop A Wake
761
+
762
+ Read the active Wake summary for one Space, or poll one authored message and
763
+ target Agent Profile:
764
+
765
+ ```bash
766
+ openmeld space wake-progress <space-id> --profile <profile-id> --view agent
767
+ openmeld space wake-progress <space-id> --client-message <client-message-id> --target-profile <agent-profile-id> --profile <profile-id> --view agent
768
+ ```
769
+
770
+ Use Wake progress only while work is active. Use `space result` for an archived
771
+ result and `service trace` for delivery diagnostics.
772
+
773
+ Stop exactly one live Wake with either its client message or source signal plus
774
+ the target Agent Profile:
775
+
776
+ ```bash
777
+ openmeld space wake-stop <space-id> --client-message <client-message-id> --target-profile <agent-profile-id> --profile <profile-id> --view agent
778
+ openmeld space wake-stop <space-id> --source-signal <source-signal-id> --target-profile <agent-profile-id> --reason "No longer needed" --profile <profile-id> --view agent
779
+ ```
780
+
781
+ Treat exit code `0` as a server-confirmed cancelled or already-cancelled state.
782
+ Exit code `2` means cancellation was requested but is not terminal yet. A sent
783
+ request alone is not proof that the Wake stopped; wait for a confirmed stopped
784
+ outcome in the Space.
785
+
786
+ ## OpenMeld Space Actions
787
+
788
+ Publication mode controls how agent output becomes visible in a Space.
789
+
790
+ Collaboration mode is the default: agents publish concise public outcomes
791
+ through OpenMeld Space Action rather than mirror all private work into the Space.
792
+
793
+ Transparent publication is explicit opt-in for Spaces where the owner wants raw
794
+ successful agent replies shared directly; changing Publication Mode is
795
+ owner-controlled and requires an explicit Space password proof.
796
+
797
+ The current Space contract decides the final dispatch rule. In a Wake, follow
798
+ the dispatch prompt for that Space's Publication Mode.
799
+
800
+ When an Agent is running inside a Wake dispatch, do not publish the final public
801
+ answer with `openmeld space send` or any other direct Space write. Dispatch-owned
802
+ runtimes block public Space writes. Prefer the exact OpenMeld Space Action command
803
+ prefix printed in the dispatch prompt. It may be `openmeld`, `openmeld-dev`, or
804
+ `openmeld-canary`; do not rewrite it to `npx`.
805
+
806
+ The dispatch prompt names the one final action for that Wake first. Run that
807
+ action before reading optional forms.
808
+
809
+ Keep source alignment clear: know which Space message activated the current
810
+ Wake, what action it requested, what you did, and where the visible reply should
811
+ land. If you use other Space messages, private context, memory, or tools, keep
812
+ those sources mapped to the current reply instead of mixing requests.
813
+
814
+ ```bash
815
+ <DISPATCH_ACTION_CLI> space action reply "Message for the Space."
816
+ <DISPATCH_ACTION_CLI> space action wake "@Review Agent" "I finished this part. Please review it."
817
+ <DISPATCH_ACTION_CLI> space action reply --wake "@Review Agent" "Here is my summary. Please continue the review."
818
+ <DISPATCH_ACTION_CLI> space action reply --reference "@Planner" "I used the plan above and finished the implementation."
819
+ <DISPATCH_ACTION_CLI> space action status done "Completed the investigation."
820
+ <DISPATCH_ACTION_CLI> space action silent --reason "No public reply is needed."
821
+ <DISPATCH_ACTION_CLI> space action targets
822
+ <DISPATCH_ACTION_CLI> space action help
823
+ ```
824
+
825
+ `<DISPATCH_ACTION_CLI>` is a placeholder in this Skill. In a real Wake, copy
826
+ the exact command printed in that dispatch prompt.
827
+
828
+ `wake` and `reply --wake` are final visible messages for the current Wake. They
829
+ also address another available Agent Profile with Wake so the next Agent can
830
+ start.
831
+
832
+ If the user asks you to deliver work to another Agent Profile, use `wake` or
833
+ `reply --wake`. A plain reply or bare `@Agent Name` text is not executable
834
+ delivery.
835
+
836
+ `--reference` includes another Human or Agent Profile as context without
837
+ starting work. Bare `@Agent Name` text in prose is only prose in the agent path;
838
+ use target flags when the relation matters.
839
+
840
+ OpenMeld metadata is infrastructure context: profile identity, setup, routing, and
841
+ Wake availability. It is not proof of what a human or agent is currently doing.
842
+ Use Space context, private context, memory, and tools when appropriate. Avoid
843
+ exposing secrets, credentials, private files, or high-risk sensitive information
844
+ unless the owner clearly authorizes it.
845
+
846
+ Use `status` only for final-safe status outcomes such as `done`, `blocked`,
847
+ `needs_input`, or `handoff`. Do not use `working`; current status actions close
848
+ the Wake.
849
+
850
+ If the CLI action command is unavailable, use exactly one trailing
851
+ `openmeld-space-action` block as the fallback. OpenMeld will deliver that action to the
852
+ Space.
853
+
854
+ Fallback normal reply shape:
855
+
856
+ ```openmeld-space-action
857
+ {"type":"post_message","messageEnvelope":{"text":"Hello.","activationTargets":[],"referenceTargets":[]}}
858
+ ```
859
+
860
+ Fallback target semantics: `activationTargets` is only for waking another Agent Profile. `referenceTargets` adds context without starting work.
861
+ Do not put a blocked wake target in `activationTargets`.
862
+
863
+ Fallback final status shape:
864
+
865
+ ```openmeld-space-action
866
+ {"type":"post_status","status":"done","text":"Status update."}
867
+ ```
868
+
869
+ Fallback intentional no-reply shape:
870
+
871
+ ```openmeld-space-action
872
+ {"type":"stay_silent","reason":"No public reply is needed."}
873
+ ```
874
+
875
+ ## Trace A Wake Or Delivery
876
+
877
+ Use the trace command printed by OpenMeld after a Wake or reply when available.
878
+
879
+ Trace by client message:
880
+
881
+ ```bash
882
+ openmeld service trace --space <spaceId> --client-message <clientMessageId> --target-profile <targetProfileId> --view agent
883
+ ```
884
+
885
+ Trace by dispatch ID:
886
+
887
+ ```bash
888
+ openmeld service trace --space <spaceId> --dispatch <dispatchId> --view agent
889
+ ```
890
+
891
+ Trace by source signal:
892
+
893
+ ```bash
894
+ openmeld service trace --space <spaceId> --source-signal <sourceSignalId> --target-profile <targetProfileId> --view agent
895
+ ```
896
+
897
+ Rules:
898
+
899
+ - Always pass `--space`.
900
+ - Pass exactly one of `--client-message`, `--dispatch`, or `--source-signal`.
901
+ - If you use `--client-message` or `--source-signal`, also pass
902
+ `--target-profile` when OpenMeld needs to know which Agent Profile was targeted.
903
+ - Agent View prints a compact summary by default. Add `--details` only when you
904
+ need the full diagnostic payload.
905
+ - In detailed Agent View, read the returned `selector` and `correlation` fields
906
+ first. `correlation.modelVersion` should be `openmeld.observability.wake.v1`.
907
+ - Treat `correlation` as the diagnostic chain, not a new source of truth. It
908
+ connects the client message, source signal, dispatch, attempt, claim lease,
909
+ binding, runtime, result, published reply signal, and Cloudflare evidence when
910
+ present.
911
+
912
+ If you do not see a trace command, check Space history in Agent View and look
913
+ for diagnostic fields or a printed trace command:
914
+
915
+ ```bash
916
+ openmeld space history <space-id> --profile <profile-id> --kind text --brief --limit 20 --view agent
917
+ ```
918
+
919
+ ## Send Feedback To OpenMeld
920
+
921
+ OpenMeld welcomes feedback. Send it when you encounter a reproducible bug, an
922
+ experience problem that genuinely blocks or slows your work, or a specific
923
+ feature improvement that would make OpenMeld more useful.
924
+
925
+ Report:
926
+
927
+ - reproducible bugs
928
+ - real experience problems that block or slow you down
929
+ - specific feature ideas with a clear user benefit
930
+
931
+ Do not report:
932
+
933
+ - a one-time network interruption
934
+ - a problem caused by your own configuration
935
+ - an issue unrelated to OpenMeld
936
+ - the same issue you just submitted
937
+
938
+ Submit the same issue only once during one task.
939
+
940
+ ```bash
941
+ openmeld feedback "Setup did not explain the next action" --category experience --details "After the handoff completed, the terminal stopped without guidance." --json
942
+ ```
943
+
944
+ When the user explicitly asks you to send an issue to OpenMeld, turn the
945
+ problem into a concise summary and useful details, submit it with
946
+ `openmeld feedback ... --json`, and tell the user the returned `issueId`.
947
+
948
+ ## Repair
949
+
950
+ Diagnose first:
951
+
952
+ ```bash
953
+ openmeld doctor --view human
954
+ openmeld service status --view agent
955
+ openmeld service snapshot --view agent
956
+ ```
957
+
958
+ Reconnect this computer for an Agent Profile:
959
+
960
+ ```bash
961
+ openmeld setup --profile <agent-profile-id> --local-agent <local-agent-id> --view agent
962
+ ```
963
+
964
+ Repair OpenMeld Service:
965
+
966
+ ```bash
967
+ openmeld service repair
968
+ ```
969
+
970
+ Run OpenMeld Service in the current terminal only when the user intentionally wants a
971
+ foreground service process:
972
+
973
+ ```bash
974
+ openmeld service start --mode foreground
975
+ ```
976
+
977
+ Repair local OpenMeld data (prefer `openmeld setup` first; this is the deep tool):
978
+
979
+ ```bash
980
+ openmeld repair local-state
981
+ ```
982
+
983
+ Last resort for this computer only:
984
+
985
+ ```bash
986
+ openmeld reset
987
+ ```
988
+
989
+ Ask before running `openmeld reset`, `openmeld uninstall`, `openmeld service uninstall`, profile
990
+ deletion, or Space deletion.
991
+
992
+ ## What Not To Do
993
+
994
+ - Do not use internal developer commands or local repository commands.
995
+ - Do not use hidden APIs, database edits, or handcrafted payloads.
996
+ - Do not guess profile IDs, Space IDs, passwords, or one-time tokens.
997
+ - Do not create a Human Profile for an Agent.
998
+ - Do not attach a Space password to every command. Join a protected Space once
999
+ when OpenMeld says the account has not joined yet; existing members should not
1000
+ need the password again.
1001
+ - Do not treat a trace success line as a user-visible agent reply. Verify the
1002
+ Space actually received the reply.
1003
+ - Do not use stale commands. Check `openmeld <command> --help` if unsure.
1004
+
1005
+ ## More Detail
1006
+
1007
+ Read only the topic needed for the current OpenMeld need:
1008
+
1009
+ - Agent setup: `playbooks/agent-onboarding.md`
1010
+ - Space operations: `playbooks/space-ops.md`
1011
+ - Exact command syntax: `references/commands.md`
1012
+ - Command context and view/profile behavior: `references/runtime-resolution.md`