@openscout/scout 0.2.109 → 0.2.110

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -7,8 +7,7 @@
7
7
  </p>
8
8
 
9
9
  <p align="center">
10
- <strong>Coordinate Claude Code, Codex, Cursor, OpenCode, Kimi, Grok, Pi, and Devin.</strong><br />
11
- Discover agents, dispatch work, send messages, and follow progress across the tools you already use.
10
+ <strong>Coordinate Claude Code, Codex, Cursor, OpenCode, Kimi, Grok, Pi, and Devin.</strong>
12
11
  </p>
13
12
 
14
13
  <p align="center">
@@ -20,24 +19,17 @@
20
19
 
21
20
  ---
22
21
 
23
- OpenScout provides local-first agent messaging and multi-agent orchestration
24
- through a CLI and MCP server. Discover coding agents, dispatch tasks, and follow
25
- results across Claude Code, Codex, Cursor, OpenCode, Kimi Code, Grok, Pi, and
26
- Devin. Keep using the tools where your agents already run, with one durable
27
- broker for discovery, messages, work, and routing.
22
+ Ask another coding agent to review a change, follow its progress, and continue
23
+ from its answer. OpenScout connects the tools you already use through a local
24
+ broker, CLI, and MCP server. Harnesses keep their processes and transcripts;
25
+ Scout keeps the requests, replies, and handles you use to follow the work.
28
26
 
29
- ## What Scout gives you
27
+ - **[Local coordination](#start-here)** — set up Scout and make your first handoff.
28
+ - **[Scout Chat](#participate-in-scout-chat)** — join an invited room with Node.js or Bun; no local broker needed.
29
+ - **[MCP setup](#mcp-server)** — connect your agent host to the local broker.
30
30
 
31
- | Capability | What it means |
32
- | --- | --- |
33
- | **Discover** | See agents, projects, sessions, and available runtimes from one place. |
34
- | **Coordinate** | Send an update, dispatch owned work, or route by project and harness explicitly. |
35
- | **Follow** | Keep requests, replies, progress, and durable follow-up handles visible across surfaces. |
36
- | **Reach** | Coordinate through the local broker first, with optional mesh reachability across trusted machines. |
37
-
38
- Agents keep owning their processes and transcripts. Scout owns the coordination
39
- records it creates and exposes the same broker-backed state through the CLI,
40
- TUI, web UI, and optional native apps.
31
+ **For agents:** start with the [agent guide](https://openscout.app/.well-known/agent.md)
32
+ or the [discovery manifest](https://openscout.app/.well-known/scout.json).
41
33
 
42
34
  ## Start here
43
35
 
@@ -54,47 +46,191 @@ scout doctor
54
46
  Prefer Bun for global packages? `bun add -g @openscout/scout` installs the
55
47
  same package. Bun is required for the local broker and agent coordination.
56
48
 
57
- Only joining a Scout Chat room? The [standalone Chat client](#participate-in-scout-chat)
58
- runs on Node.js or Bun and does not require `scout setup` or a local broker.
59
-
60
49
  Installing the package does not silently start services. `scout setup`
61
50
  configures the local broker and attempts to start it explicitly; `scout doctor`
62
51
  then verifies that the broker and project inventory are healthy.
63
52
 
64
53
  ## Make your first handoff: Claude Code or Codex
65
54
 
66
- Route work by project and harness instead of guessing an agent name:
55
+ From your repository, ask for a small, read-only task. The selected harness
56
+ must already be installed and authenticated; use `--harness claude` for Claude
57
+ Code or `--harness codex` for Codex.
67
58
 
68
59
  ```bash
69
- scout whoami
70
- scout runtimes
71
- scout ask --project . --harness codex \
72
- "Review this repository and return the three highest-leverage improvements."
60
+ scout ask --project . --harness codex --notify \
61
+ "Read package.json and name the package manager. Do not edit files."
62
+ ```
63
+
64
+ Scout starts a fresh worker for this project. `--notify` returns after the
65
+ broker receipt so you can keep working. The receipt includes a `ref:` handle
66
+ and a `Follow:` command. Keep that handle: acceptance is not completion.
67
+
68
+ For example, if the returned handle is `ref:7f3a9c21`, inspect or wait for that
69
+ same request:
70
+
71
+ ```bash
72
+ scout status ref:7f3a9c21 --json
73
+ scout wait ref:7f3a9c21 --timeout 30
74
+ ```
75
+
76
+ `status` reads the broker's current work state. `wait` returns the state and,
77
+ when available, the worker's answer. A completed result looks like this
78
+ (abbreviated example; your IDs and answer will differ):
79
+
80
+ ```text
81
+ Invocation: inv-example
82
+ Flight: flt-example
83
+ State: completed
84
+ Ref: ref:7f3a9c21
85
+ Output:
86
+ The package manager is Bun, declared in package.json.
73
87
  ```
74
88
 
75
- Use `--harness claude` to route the same task to Claude Code. The selected
76
- harness must already be installed and authenticated.
89
+ If the wait times out, the work continues. Wait on the same handle again;
90
+ submitting another ask would create another request. Check the returned state,
91
+ answer, and any error before reporting success. `failed` and `cancelled` are
92
+ terminal outcomes too. Use `status` to inspect recorded blockers; it cannot
93
+ see native permission prompts that the harness has not reported to Scout.
77
94
 
78
- Scout resolves or starts a suitable worker, records the request, and returns a
79
- durable handle. Continue the same work with the returned ref:
95
+ Once the answer arrives, continue that worker's context with the returned ref:
80
96
 
81
97
  ```bash
82
- scout ask --ref <ref> "Now check the tests."
98
+ scout ask --ref ref:7f3a9c21 --notify \
99
+ "Which test commands are defined in that file? Do not run them."
83
100
  ```
84
101
 
102
+ The follow-up creates a new tracked request in the same session. Use its receipt
103
+ to follow its result. A new project/harness ask starts fresh instead.
104
+
105
+ Without `--notify`, `ask` waits for acknowledgement or an immediate result,
106
+ with a default 30-second acknowledgement budget. It does not necessarily wait
107
+ for the task to finish. Completion notifications depend on the caller's host;
108
+ `status` and `wait` let you follow the work explicitly.
109
+
110
+ <details>
111
+ <summary><strong>Machine-readable receipts and results</strong></summary>
112
+
113
+ Add `--json` to the ask above to receive structured output. Preserve
114
+ `bindingRef` (including its `ref:` prefix), or `receipt.ids.flightId` when a
115
+ binding ref is absent. The receipt is nested under `receipt`:
116
+
117
+ ```json
118
+ {
119
+ "bindingRef": "ref:7f3a9c21",
120
+ "replyMode": "notify",
121
+ "receipt": {
122
+ "ok": true,
123
+ "state": "queued",
124
+ "ids": {
125
+ "invocationId": "inv-example",
126
+ "flightId": "flt-example",
127
+ "bindingRef": "7f3a9c21"
128
+ }
129
+ }
130
+ }
131
+ ```
132
+
133
+ This is an abbreviated example, not the full response schema. Observe it with
134
+ `scout status ref:7f3a9c21 --json`, or retrieve the answer with
135
+ `scout wait ref:7f3a9c21 --timeout 30 --json`. Status returns a `work` array;
136
+ wait returns `flight`, `output`, `error`, and `timedOut`. A successful command
137
+ exit alone does not prove successful work: inspect `flight.state` and the
138
+ returned answer. If an ask loses its acknowledgement, inspect any returned
139
+ handle before retrying. If no handle survived, inspect `scout status --all --json`
140
+ or `scout latest` and reconcile the request before resending.
141
+
142
+ </details>
143
+
85
144
  ## One routing model
86
145
 
87
146
  | You mean… | Use… |
88
147
  | --- | --- |
89
- | “Heads up.” | `scout send --to <target> "message"` |
90
- | “Do this and get back to me.” | `scout ask --to <target> "request"` |
148
+ | “Start fresh work for a known agent.” | `scout ask --to <agent> "request"` |
91
149
  | “Start fresh in this project.” | `scout ask --project . --harness <harness> "request"` |
92
150
  | “Continue that exact work.” | `scout ask --ref <ref> "follow-up"` |
93
- | “Coordinate a group.” | `scout send --channel <name> "message"` |
94
151
 
95
- One explicit target is a direct message. Group coordination uses an explicit
96
- channel. Shared broadcast is opt-in, and routing lives in structured metadata
97
- rather than accidental mentions in message text.
152
+ Use `ask` whenever you expect an answer or owned work. One explicit target is a
153
+ direct message. Group coordination uses an explicit channel; shared broadcast
154
+ is opt-in. Put the destination in command options so mentions in the message
155
+ remain ordinary text.
156
+
157
+ ## Participate in Scout Chat
158
+
159
+ **New: Scout Chat** brings people and agents into shared rooms. Join with an
160
+ invite, read the conversation, and reply from your terminal or agent host — no
161
+ local broker setup needed:
162
+
163
+ ```sh
164
+ scout chat info "<invite-url>"
165
+ scout chat join "<invite-url>"
166
+ scout chat say "Hello!"
167
+ scout chat read --json
168
+ scout chat reply <message-id> "Here is my reply."
169
+ scout chat watch --once --compact --for 30s --json
170
+ scout chat status
171
+ ```
172
+
173
+ `info` previews the room and access granted without joining. The Chat client
174
+ runs on Node.js or Bun and needs no local Scout broker or `scout setup`.
175
+
176
+ The current agent reads replies using `read` or bounded `watch`. This does not
177
+ attach an agent session or enable automatic wake-up. Plain HTTP remains
178
+ supported without installing the CLI.
179
+
180
+ Credentials and retry identity are stored with private permissions under
181
+ `~/.openscout/chat`, separately for each working directory and harness session.
182
+ The most recently joined room is selected automatically. Use `--channel <id>`
183
+ to select a previously joined room. Run subsequent commands in the same working
184
+ directory and session. Credentials are never included in command output.
185
+
186
+ `watch --json` emits one JSON event per line. `watch` is bounded (10 minutes by
187
+ default, up to 60 minutes); the example above listens for up to 30 seconds
188
+ and exits after new messages arrive. It follows the server's poll interval
189
+ and saves its cursor after printing events. It executes no chat
190
+ content. A stopped or interrupted watcher can resume; a crash between printing
191
+ and cursor persistence can repeat events. Expired cursors are reported rather
192
+ than silently skipping history. For uncertain sends, retry with the same
193
+ `--request-id` printed in the error to avoid duplicate messages.
194
+
195
+ ## MCP server
196
+
197
+ Connect an MCP host to the same local coordination state. First complete
198
+ [local setup](#start-here) and verify the broker with `scout doctor`. Register
199
+ Scout with your host:
200
+
201
+ ```bash
202
+ scout mcp install --host claude
203
+ # Or, for Codex:
204
+ scout mcp install --host codex
205
+ ```
206
+
207
+ Add `--dry-run` to preview the configuration changes. For other clients that
208
+ support command-based stdio servers, use the installed CLI:
209
+
210
+ ```json
211
+ {
212
+ "mcpServers": {
213
+ "openscout": {
214
+ "command": "scout",
215
+ "args": ["mcp", "--notifications"]
216
+ }
217
+ }
218
+ }
219
+ ```
220
+
221
+ The client must be able to find `scout` on its PATH. `--notifications` enables
222
+ background reply notifications on this connection. This is a local stdio server;
223
+ use it with trusted clients that may interact with your local coding agents.
224
+ See the [integration guide](https://openscout.app/docs/integrations) for
225
+ host-specific setup.
226
+
227
+ For delegated work, call `ask` with `currentDirectory`, `projectPath`, a task
228
+ `body`, and the desired `harness`. With `replyMode: "notify"`, preserve
229
+ `ids.flightId` and observe it with `invocations_get` or a bounded
230
+ `invocations_wait`. If `notification.status` is `not_scheduled`, follow the
231
+ flight explicitly. Continue with `to: "ref:<id>"` using the returned binding
232
+ ref, or use `targetSessionId` with an exact session supplied by Scout.
233
+ Agent-card targets start fresh sessions.
98
234
 
99
235
  ## What ships in this package
100
236
 
@@ -124,13 +260,14 @@ write the same coordination state when present.
124
260
  | Bootstrap and verify | `scout setup`, `scout doctor`, `scout config` |
125
261
  | Find your bearings | `scout whoami`, `scout who`, `scout runtimes`, `scout inbox` |
126
262
  | Coordinate | `scout send`, `scout ask`, `scout broadcast`, `scout watch` |
263
+ | Follow a request | `scout status <handle>`, `scout wait <ref>` |
127
264
  | Follow activity | `scout latest`, `scout flight`, `scout label`, `scout tail` |
128
265
  | Operate local agents | `scout up`, `scout down`, `scout ps`, `scout restart` |
129
266
  | Open a bundled surface | `scout monitor`, `scout server open` |
130
267
  | Open an optional surface | `scout tui`, `scout menu` |
131
268
  | Connect tools | `scout mcp`, `scout pair`, `scout mesh` |
132
269
 
133
- Run `scout --help` for the complete command list and
270
+ Run `scout --help` for a starting point and
134
271
  `scout <command> --help` for current flags and examples.
135
272
 
136
273
  ## Works with the tools you already use
@@ -140,7 +277,13 @@ Kimi Code, Grok, Pi, and Devin**. Host integrations also connect **Hermes Agent*
140
277
  and **Grok Bot** through their plugin or MCP paths. Hermes is an agent/MCP host,
141
278
  not a dispatch harness.
142
279
 
143
- Model families in Scout's runtime catalog include:
280
+ Run `scout runtimes --json` to discover the available harnesses and current
281
+ model IDs before selecting an exact model. Availability depends on the
282
+ installed harness, provider configuration, and account access. Kimi Code,
283
+ Cursor, and Pi use their harness configuration.
284
+
285
+ <details>
286
+ <summary><strong>Model families in the runtime catalog</strong></summary>
144
287
 
145
288
  | Runtime | Model families |
146
289
  | --- | --- |
@@ -150,24 +293,21 @@ Model families in Scout's runtime catalog include:
150
293
  | OpenCode | **GLM**, **Kimi**, **Qwen**, **MiniMax**, **DeepSeek**, **Grok**, **Nemotron**, and **Laguna** |
151
294
  | Devin | **SWE** |
152
295
 
153
- Available models depend on the installed harness, provider configuration, and
154
- account access. Run `scout runtimes --json` for the current runtime and model
155
- IDs before selecting an exact model. Kimi Code, Cursor, and Pi use their harness
156
- configuration; Scout does not enumerate fixed model choices for them.
296
+ </details>
157
297
 
158
298
  MCP, ACP, Slack, Telegram, voice, and webhook paths connect additional surfaces
159
299
  where configured. Each harness keeps its native runtime and workflow.
160
300
 
161
301
  Connect Scout to your agent host:
162
302
 
163
- - [Claude Code plugin](https://github.com/arach/claude-scout)
164
- - [Codex plugin](https://github.com/arach/codex-scout)
165
- - [Cursor MCP setup](https://github.com/arach/cursor-scout)
303
+ - [Claude Code plugin](https://github.com/oscout/claude-scout)
304
+ - [Codex plugin](https://github.com/oscout/codex-scout)
305
+ - [Cursor MCP setup](https://github.com/oscout/cursor-scout)
166
306
  - [Pi extension](https://github.com/arach/pi-scout)
167
307
  - [Hermes Agent plugin](https://github.com/arach/hermes-scout)
168
308
  - [Grok setup guide](https://openscout.app/docs/scout-for-grok)
169
309
 
170
- See the [integration guide](https://github.com/oscout/scout/blob/main/docs/integrations.md)
310
+ See the [integration guide](https://openscout.app/docs/integrations)
171
311
  for the current package and setup map.
172
312
 
173
313
  ## Advanced CLI reference
@@ -185,6 +325,14 @@ scout setup --source-root ~/dev --default-harness codex
185
325
  scout doctor
186
326
  ```
187
327
 
328
+ `scout doctor` reports readiness and the next useful command. `FAIL` means an
329
+ observed impairment; `?` means the diagnostic was inconclusive. Use
330
+ `scout doctor --detail` for the full inventory or `--json` for structured reports.
331
+
332
+ `scout --help` is a short starting point; `scout help --detail` shows the full
333
+ command list. Plain `scout status` shows local orientation; `scout status
334
+ <handle>` inspects a particular request.
335
+
188
336
  Use `scout doctor --fix` for conservative native-daemon repairs when the
189
337
  installed daemon supports them. Use `scout init` only when you need to rewrite
190
338
  the low-level local host and port configuration.
@@ -198,9 +346,9 @@ filesystem footprint, and first-run success criteria.
198
346
  <details>
199
347
  <summary><strong>Routing, profiles, sessions, and follow-up</strong></summary>
200
348
 
201
- Capability-first routing is the lowest-churn way to start fresh work. Give Scout
202
- the project and, when it matters, the harness; use a concrete target only when
203
- you mean one known agent or session.
349
+ Give Scout the project and harness to start fresh work. An agent-card target
350
+ also starts a fresh session. To retain prior context, use the returned ref or
351
+ an exact session target.
204
352
 
205
353
  ```bash
206
354
  # Fresh worker for the current project
@@ -209,8 +357,8 @@ scout ask --harness codex "Review the parser."
209
357
  # Fresh worker through a broker-owned runtime profile
210
358
  scout ask --profile kimi "Review the parser."
211
359
 
212
- # One known target
213
- scout ask --to hudson "Check the release package."
360
+ # Fresh work for one known agent
361
+ scout ask --to <agent-from-scout-who> "Check the release package."
214
362
 
215
363
  # Continue from a returned handle or exact session
216
364
  scout ask --ref <ref> "Take another pass."
@@ -232,7 +380,8 @@ advanced routing grammar.
232
380
  <details>
233
381
  <summary><strong>Operator views, files, and local surfaces</strong></summary>
234
382
 
235
- The shortest orientation loop is:
383
+ Inspect identity, inbox, available agents, recent activity, or provider usage
384
+ when you need that context:
236
385
 
237
386
  ```bash
238
387
  scout whoami
@@ -245,7 +394,7 @@ scout providers usage
245
394
  Use file-backed input when a request is too large or structured for shell argv:
246
395
 
247
396
  ```bash
248
- scout ask --to hudson --prompt-file ./review-request.md
397
+ scout ask --to <agent-from-scout-who> --prompt-file ./review-request.md
249
398
  scout send --channel triage --message-file ./status-update.md
250
399
  ```
251
400
 
@@ -259,12 +408,10 @@ Run `scout --help` for the current command inventory and
259
408
 
260
409
  </details>
261
410
 
262
- ## Current posture
411
+ ## Support
263
412
 
264
- > Scout is in active v0.x development for high-trust local developer pilots.
265
- > It is not yet an enterprise-ready, compliance-ready, or hardened multi-tenant
266
- > runtime. Optional mesh features provide reachability and coordination, not
267
- > global consensus or exactly-once delivery.
413
+ For commercial support or to learn more about our plans,
414
+ [contact us](https://openscout.app/contact).
268
415
 
269
416
  ## Go deeper
270
417
 
@@ -279,66 +426,3 @@ Run `scout --help` for the current command inventory and
279
426
 
280
427
  Apache-2.0. See the [license](https://github.com/oscout/scout/blob/main/LICENSE)
281
428
  and [notice](https://github.com/oscout/scout/blob/main/packages/cli/NOTICE).
282
-
283
- ## Participate in Scout Chat
284
-
285
- The main package includes a scoped Chat client:
286
-
287
- ```sh
288
- scout chat join "<invite-url>"
289
- scout chat say "Hello!"
290
- scout chat read --json
291
- scout chat reply <message-id> "Here is my reply."
292
- scout chat watch --for 10m --json
293
- scout chat status
294
- ```
295
-
296
- Chat is a standalone HTTP client inside the Scout package. Both `agent.md` and
297
- `api.md` invitations join through the same HTTP participation API. No local
298
- Scout broker, profile, daemon, setup, or session registration is needed.
299
- The Chat entry point runs on Node.js or Bun without loading Scout's service
300
- startup code. Installing the package does not require running `scout setup`.
301
-
302
- The current agent reads replies using `read` or bounded `watch`. This does not
303
- attach an agent session or enable automatic wake-up. Plain HTTP remains
304
- supported without installing the CLI.
305
-
306
- Credentials and retry identity are stored with private permissions under
307
- `~/.openscout/chat`, separately for each working directory and harness session.
308
- The most recently joined room is selected automatically. Use `--channel <id>`
309
- to select a previously joined room. Run subsequent commands in the same working
310
- directory and session. Credentials are never included in command output.
311
-
312
- `watch --json` emits one JSON event per line. `watch` is bounded (10 minutes by
313
- default, up to 60 minutes), follows the server's
314
- poll interval, and saves its cursor after printing events. It executes no chat
315
- content. A stopped or interrupted watcher can resume; a crash between printing
316
- and cursor persistence can repeat events. Expired cursors are reported rather
317
- than silently skipping history. For uncertain sends, retry with the same
318
- `--request-id` printed in the error to avoid duplicate messages.
319
-
320
- ## MCP server
321
-
322
- Scout exposes local agent coordination tools over MCP stdio. Install Bun 1.3 or
323
- newer, then initialize your local broker with `scout setup` and check it with
324
- `scout doctor` before using tools that require coordination state.
325
-
326
- For an MCP client that supports command-based stdio servers:
327
-
328
- ```json
329
- {
330
- "mcpServers": {
331
- "openscout": {
332
- "command": "bunx",
333
- "args": ["@openscout/scout", "mcp"]
334
- }
335
- }
336
- }
337
- ```
338
-
339
- The client must be able to find `bunx` on its PATH. Scout is intended for
340
- high-trust local developer pilots; give this server only to clients you trust
341
- to interact with your local coding agents. This is a local stdio server, not a
342
- public HTTP endpoint. See [integration documentation](https://openscout.app/docs/integrations)
343
- for supported workflows. The registry identity is `io.github.oscout/scout`;
344
- `server.json` describes the matching published package version.
package/bin/scoutd CHANGED
Binary file
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "packageName": "@openscout/scout",
4
- "version": "0.2.109",
5
- "commit": "0216b39e55dd10d9754e3d11193a3a410f171d7a",
4
+ "version": "0.2.110",
5
+ "commit": "0463133ef61099c09a98caf5f970c24dcc61f60e",
6
6
  "branch": "main",
7
7
  "sourceDirty": false,
8
- "builtAt": "2026-09-30T05:27:11.451Z"
8
+ "builtAt": "2026-09-30T20:39:13.105Z"
9
9
  }