@openscout/scout 0.2.94 → 0.2.95
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/NOTICE +14 -0
- package/README.md +164 -342
- package/bin/scoutd +0 -0
- package/dist/build-manifest.json +3 -3
- package/dist/main.mjs +8 -6
- package/package.json +25 -6
package/NOTICE
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
OpenScout
|
|
2
|
+
Copyright 2026 Arach Tchoupani
|
|
3
|
+
|
|
4
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
you may not use this file except in compliance with the License.
|
|
6
|
+
You may obtain a copy of the License at
|
|
7
|
+
|
|
8
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
|
|
10
|
+
Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
See the License for the specific language governing permissions and
|
|
14
|
+
limitations under the License.
|
package/README.md
CHANGED
|
@@ -1,423 +1,245 @@
|
|
|
1
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="https://openscout.app">
|
|
3
|
+
<img src="https://openscout.app/og.png" alt="Scout — one place for all your agents, local-first and neutral by design" width="100%" />
|
|
4
|
+
</a>
|
|
5
|
+
</p>
|
|
2
6
|
|
|
3
|
-
>
|
|
7
|
+
<p align="center">
|
|
8
|
+
<strong>The coordination layer for the coding agents you already run.</strong><br />
|
|
9
|
+
Discover agents, dispatch work, send messages, and follow progress across the tools you already use.
|
|
10
|
+
</p>
|
|
4
11
|
|
|
5
|
-
|
|
12
|
+
<p align="center">
|
|
13
|
+
<a href="https://www.npmjs.com/package/@openscout/scout"><img alt="npm version" src="https://img.shields.io/npm/v/@openscout/scout?style=flat-square&label=npm&color=94d59a&labelColor=171a16" /></a>
|
|
14
|
+
<a href="https://bun.sh"><img alt="Bun 1.3 or newer" src="https://img.shields.io/badge/runtime-Bun_%E2%89%A5_1.3-f7f4ea?style=flat-square&labelColor=171a16&logo=bun" /></a>
|
|
15
|
+
<a href="https://github.com/oscout/scout/blob/main/LICENSE"><img alt="Apache 2.0 license" src="https://img.shields.io/badge/license-Apache--2.0-f7f4ea?style=flat-square&labelColor=171a16" /></a>
|
|
16
|
+
<a href="https://openscout.app"><img alt="OpenScout project homepage" src="https://img.shields.io/badge/project-openscout.app-dde6d8?style=flat-square&labelColor=171a16" /></a>
|
|
17
|
+
</p>
|
|
6
18
|
|
|
7
|
-
|
|
8
|
-
bun add -g @openscout/scout
|
|
9
|
-
scout --help
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
`@openscout/scout` is the public package name. It installs the `scout` command and carries the bundled broker/runtime and web UI. Installing it does not start services; commands such as `scout setup`, `scout up`, and `scout server start` activate them explicitly.
|
|
13
|
-
|
|
14
|
-
## Canonical Flow
|
|
15
|
-
|
|
16
|
-
```bash
|
|
17
|
-
scout setup
|
|
18
|
-
scout doctor
|
|
19
|
-
scout whoami
|
|
20
|
-
scout who
|
|
21
|
-
scout latest
|
|
22
|
-
scout runtimes
|
|
23
|
-
scout providers usage
|
|
24
|
-
scout ask --project ../talkie --harness claude "can you review our docs?"
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
`scout setup` is the canonical onboarding entry point. It creates or updates:
|
|
28
|
-
|
|
29
|
-
- `~/Library/Application Support/OpenScout/settings.json`
|
|
30
|
-
- `~/Library/Application Support/OpenScout/relay-agents.json` for compatibility with the existing machine-local agent registry
|
|
31
|
-
- `.openscout/project.json` for the current repo when needed
|
|
32
|
-
|
|
33
|
-
It also discovers local and project-backed agents from your configured workspace roots, installs the base Scout service, attempts to start it, and ensures Caddy is available for the local `scout.local` edge. On macOS, setup installs missing Caddy with `brew install caddy`; otherwise install Caddy yourself or set `OPENSCOUT_CADDY_BIN`.
|
|
34
|
-
|
|
35
|
-
`scout doctor --fix` asks the native `scoutd` daemon to run conservative repairs
|
|
36
|
-
when that daemon version exposes them. Use `scout doctor --fix --yes` for
|
|
37
|
-
non-interactive install scripts; older or missing `scoutd` binaries simply leave
|
|
38
|
-
the normal doctor report intact.
|
|
39
|
-
|
|
40
|
-
For a CLI-only onboarding pass, save the same identity, workspace roots, and
|
|
41
|
-
runtime choice used by the app flows:
|
|
42
|
-
|
|
43
|
-
```bash
|
|
44
|
-
scout config set name "Ada"
|
|
45
|
-
scout setup --source-root ~/dev --default-harness codex
|
|
46
|
-
scout runtimes
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
`scout setup` creates `~/.openscout/config.json` when it is missing. Use
|
|
50
|
-
`scout init` when you only want to rewrite the local host/port config, for
|
|
51
|
-
example `scout init --force --broker-port 43110 --web-port 43120
|
|
52
|
-
--pairing-port 43130`.
|
|
19
|
+
---
|
|
53
20
|
|
|
54
|
-
|
|
21
|
+
Scout is a local-first control plane for AI agents. It sits underneath Claude
|
|
22
|
+
Code, Codex, Cursor, Pi, and other harnesses, giving them one durable broker for
|
|
23
|
+
discovery, messages, work, and routing without moving agents out of the tools
|
|
24
|
+
where they already run.
|
|
55
25
|
|
|
56
|
-
|
|
57
|
-
scout @dewey can you review our docs?
|
|
58
|
-
scout hey @hudson please inspect the failing test
|
|
59
|
-
scout --as vox --timeout 900 @talkie take another pass on the keyboard port
|
|
60
|
-
```
|
|
26
|
+
## What Scout gives you
|
|
61
27
|
|
|
62
|
-
|
|
63
|
-
|
|
28
|
+
| Capability | What it means |
|
|
29
|
+
| --- | --- |
|
|
30
|
+
| **Discover** | See agents, projects, sessions, and available runtimes from one place. |
|
|
31
|
+
| **Coordinate** | Send an update, dispatch owned work, or route by project and harness explicitly. |
|
|
32
|
+
| **Follow** | Keep requests, replies, progress, and durable follow-up handles visible across surfaces. |
|
|
33
|
+
| **Reach** | Coordinate through the local broker first, with optional mesh reachability across trusted machines. |
|
|
64
34
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
scout ask --profile kimi "review the parser"
|
|
69
|
-
```
|
|
35
|
+
Agents keep owning their processes and transcripts. Scout owns the coordination
|
|
36
|
+
records it creates and exposes the same broker-backed state through the CLI,
|
|
37
|
+
TUI, web UI, and optional native apps.
|
|
70
38
|
|
|
71
|
-
|
|
72
|
-
optional Fable/Opus override; Kimi and Grok reject it until their ACP transports
|
|
73
|
-
expose reasoning-effort control. Direct `scout ask --to fable ...` always means
|
|
74
|
-
an existing target named `fable`; it is never silently converted to a profile.
|
|
39
|
+
## Start here
|
|
75
40
|
|
|
76
|
-
|
|
77
|
-
|
|
41
|
+
Scout requires [Bun 1.3 or newer](https://bun.sh). The full broker and service
|
|
42
|
+
package currently targets Apple Silicon macOS.
|
|
78
43
|
|
|
79
44
|
```bash
|
|
80
|
-
|
|
45
|
+
bun add -g @openscout/scout
|
|
46
|
+
scout setup
|
|
47
|
+
scout doctor
|
|
81
48
|
```
|
|
82
49
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
or similarity.
|
|
86
|
-
|
|
87
|
-
## One Routing Model
|
|
50
|
+
Prefer npm for global packages? `npm install -g @openscout/scout` installs the
|
|
51
|
+
same package; Bun is still required at runtime.
|
|
88
52
|
|
|
89
|
-
|
|
53
|
+
Installing the package does not silently start services. `scout setup`
|
|
54
|
+
configures the local broker and attempts to start it explicitly; `scout doctor`
|
|
55
|
+
then verifies that the broker and project inventory are healthy.
|
|
90
56
|
|
|
91
|
-
|
|
92
|
-
- group coordination -> explicit channel
|
|
93
|
-
- everyone -> `scout broadcast`
|
|
94
|
-
- tell / update -> `scout send`
|
|
95
|
-
- owned work / requested reply -> `scout ask`
|
|
96
|
-
- follow-up stays in the same DM or explicit channel
|
|
57
|
+
## Make your first handoff
|
|
97
58
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
```bash
|
|
101
|
-
scout alias set review --to scope.main.arts-mac-mini-local
|
|
102
|
-
scout alias set patch --to session:019eff52-9347-7470-ba5c-6bfe99d8dd83
|
|
103
|
-
scout alias resolve patch
|
|
104
|
-
scout alias repoint patch --to session:<new-id> --if-revision 1
|
|
105
|
-
scout alias unset patch --if-revision 2
|
|
106
|
-
scout ask --to alias:review "take a fresh pass"
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
Aliases are scoped to the current project/local host unless `--project` or
|
|
110
|
-
`--host` is supplied. They point at existing targets and never create or rename
|
|
111
|
-
cards. Native bare agent names win; `alias:<name>` is the explicit form.
|
|
112
|
-
|
|
113
|
-
The lowest-churn fresh start is **capability first**: pass the project path and
|
|
114
|
-
optional harness, then let the broker choose or create the concrete worker.
|
|
115
|
-
Do not guess generic names like `claude.main` just because you want Claude. Use
|
|
116
|
-
the returned `ref`, flight, conversation, work, or session handle for follow-up.
|
|
117
|
-
If the worker proves useful, promote it to a named/pinned sibling after the fact
|
|
118
|
-
using the broker-suggested handle when one is returned.
|
|
119
|
-
|
|
120
|
-
When sender, target, or recent activity is unclear, the shortest orientation loop is:
|
|
59
|
+
Route work by project and harness instead of guessing an agent name:
|
|
121
60
|
|
|
122
61
|
```bash
|
|
123
62
|
scout whoami
|
|
124
|
-
scout
|
|
125
|
-
scout
|
|
126
|
-
|
|
127
|
-
scout latest
|
|
128
|
-
scout latest --channel triage --messages --limit 3
|
|
63
|
+
scout runtimes
|
|
64
|
+
scout ask --project . --harness codex \
|
|
65
|
+
"Review this repository and return the three highest-leverage improvements."
|
|
129
66
|
```
|
|
130
67
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
`latest --channel <name>` when you want the compact activity projection instead.
|
|
134
|
-
Use `inbox --latest <count> --json` for direct messages addressed to the
|
|
135
|
-
current inferred agent identity.
|
|
136
|
-
|
|
137
|
-
CLI agents should use these commands rather than curling broker HTTP endpoints
|
|
138
|
-
or reading relay files directly.
|
|
139
|
-
|
|
140
|
-
### Sender identity
|
|
141
|
-
|
|
142
|
-
`scout send`, `scout ask`, and `scout broadcast` all use the
|
|
143
|
-
same default sender identity. Most of the time you should let Scout infer it
|
|
144
|
-
from your current context. For agent-to-agent delegation, check `scout whoami`
|
|
145
|
-
first and use `--as` whenever the acting project agent must be preserved
|
|
146
|
-
explicitly across shells, hosts, or bridges.
|
|
147
|
-
|
|
148
|
-
`scout watch` follows a conversation or channel; it does not choose a sender.
|
|
149
|
-
|
|
150
|
-
Inspect the current default once:
|
|
68
|
+
Scout resolves or starts a suitable worker, records the request, and returns a
|
|
69
|
+
durable handle. Continue the same work with the returned ref:
|
|
151
70
|
|
|
152
71
|
```bash
|
|
153
|
-
scout
|
|
72
|
+
scout ask --ref <ref> "Now check the tests."
|
|
154
73
|
```
|
|
155
74
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
1. `--as <agent>` for that command
|
|
159
|
-
2. `OPENSCOUT_AGENT` when the current session already has a bound agent
|
|
160
|
-
3. the current project-scoped sender inferred from your working directory
|
|
161
|
-
4. your operator name when you're outside a project context
|
|
162
|
-
|
|
163
|
-
Coding-agent hosts use the project-scoped sender for `scout ask` automatically when
|
|
164
|
-
the CLI detects a host harness signal:
|
|
75
|
+
## One routing model
|
|
165
76
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
77
|
+
| You mean… | Use… |
|
|
78
|
+
| --- | --- |
|
|
79
|
+
| “Heads up.” | `scout send --to <target> "message"` |
|
|
80
|
+
| “Do this and get back to me.” | `scout ask --to <target> "request"` |
|
|
81
|
+
| “Start fresh in this project.” | `scout ask --project . --harness <harness> "request"` |
|
|
82
|
+
| “Continue that exact work.” | `scout ask --ref <ref> "follow-up"` |
|
|
83
|
+
| “Coordinate a group.” | `scout send --channel <name> "message"` |
|
|
170
84
|
|
|
171
|
-
|
|
172
|
-
|
|
85
|
+
One explicit target is a direct message. Group coordination uses an explicit
|
|
86
|
+
channel. Shared broadcast is opt-in, and routing lives in structured metadata
|
|
87
|
+
rather than accidental mentions in message text.
|
|
173
88
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
```bash
|
|
177
|
-
scout send --to vox "heads up: I’m on the runtime side"
|
|
178
|
-
scout ask --to vox "can you confirm the broker fix?"
|
|
179
|
-
scout ask --project ../talkie --harness claude "review the build spec"
|
|
180
|
-
scout ask --harness codex "review this in a fresh Codex worker"
|
|
181
|
-
```
|
|
89
|
+
## What ships in this package
|
|
182
90
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
### File-backed input
|
|
191
|
-
|
|
192
|
-
Use a file when the primary prompt or message is too large or too structured to
|
|
193
|
-
belong in shell argv.
|
|
194
|
-
|
|
195
|
-
Nomenclature:
|
|
196
|
-
|
|
197
|
-
- **Prompt file**: the primary work prompt for `scout ask`; pass it with `--prompt-file <path>`.
|
|
198
|
-
- **Message file**: the message body for `scout send`, `scout broadcast`, or `scout speak`; pass it with `--message-file <path>`.
|
|
199
|
-
- **Body file**: shared alias for either command family; `--body-file <path>` reads the same UTF-8 text into the broker `body` field.
|
|
200
|
-
|
|
201
|
-
Examples:
|
|
202
|
-
|
|
203
|
-
```bash
|
|
204
|
-
scout ask --to hudson --prompt-file ./handoff.md
|
|
205
|
-
scout @hudson --prompt-file ./review-request.md
|
|
206
|
-
scout send --channel triage --message-file ./status-update.md
|
|
207
|
-
scout broadcast --message-file ./maintenance-window.md
|
|
91
|
+
```text
|
|
92
|
+
Claude Code ─┐
|
|
93
|
+
Codex ─┼── local Scout broker ── CLI · Monitor · Web
|
|
94
|
+
Other agents ─┘ messages · work · routing
|
|
95
|
+
│
|
|
96
|
+
└── optional surfaces: Rust TUI · macOS · iOS
|
|
208
97
|
```
|
|
209
98
|
|
|
210
|
-
|
|
211
|
-
structured request containing the target, body, sender, routing fields, and
|
|
212
|
-
metadata, so the rest of the broker and mesh path can choose the right transport
|
|
213
|
-
without depending on shell argument size.
|
|
214
|
-
|
|
215
|
-
### One-to-one delegation
|
|
216
|
-
|
|
217
|
-
When one project agent is delegating concrete work to one other agent, treat it
|
|
218
|
-
as a private handoff:
|
|
219
|
-
|
|
220
|
-
- keep it in a DM, not `channel.shared`
|
|
221
|
-
- preserve the acting project agent as the sender
|
|
222
|
-
- keep progress and completion in that same DM
|
|
223
|
-
|
|
224
|
-
Today the best CLI surface for that handoff is `scout ask`, because it opens a
|
|
225
|
-
DM by default when no explicit channel is pinned:
|
|
99
|
+
`@openscout/scout` installs:
|
|
226
100
|
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
101
|
+
- the `scout` command;
|
|
102
|
+
- the bundled local broker and runtime;
|
|
103
|
+
- the local web control surface opened by `scout server open`;
|
|
104
|
+
- the bundled terminal console launched by `scout monitor`.
|
|
231
105
|
|
|
232
|
-
|
|
233
|
-
|
|
106
|
+
The Rust TUI launched by `scout tui` and the macOS and iOS apps are optional
|
|
107
|
+
OpenScout surfaces; they are not installed by the npm package. They read and
|
|
108
|
+
write the same coordination state when present.
|
|
234
109
|
|
|
235
|
-
|
|
236
|
-
scout ask --as premotion.master.mini --to hudson "Build the editable CodeViewer and report back with the integration-ready surface."
|
|
237
|
-
```
|
|
238
|
-
|
|
239
|
-
Use `channel.shared` only when the work is genuinely for a group, not for a
|
|
240
|
-
single owner.
|
|
110
|
+
## CLI at a glance
|
|
241
111
|
|
|
242
|
-
|
|
112
|
+
| Goal | Commands |
|
|
113
|
+
| --- | --- |
|
|
114
|
+
| Bootstrap and verify | `scout setup`, `scout doctor`, `scout config` |
|
|
115
|
+
| Find your bearings | `scout whoami`, `scout who`, `scout runtimes`, `scout inbox` |
|
|
116
|
+
| Coordinate | `scout send`, `scout ask`, `scout broadcast`, `scout watch` |
|
|
117
|
+
| Follow activity | `scout latest`, `scout flight`, `scout label`, `scout tail` |
|
|
118
|
+
| Operate local agents | `scout up`, `scout down`, `scout ps`, `scout restart` |
|
|
119
|
+
| Open a bundled surface | `scout monitor`, `scout server open` |
|
|
120
|
+
| Open an optional surface | `scout tui`, `scout menu` |
|
|
121
|
+
| Connect tools | `scout mcp`, `scout pair`, `scout mesh` |
|
|
243
122
|
|
|
244
|
-
|
|
123
|
+
Run `scout --help` for the complete command list and
|
|
124
|
+
`scout <command> --help` for current flags and examples.
|
|
245
125
|
|
|
246
|
-
|
|
247
|
-
scout ask --to hudson --label release:0.2.66 "Review the package bump."
|
|
248
|
-
scout ask --to lattices --label release:0.2.66 "Check the install path."
|
|
249
|
-
scout label feed release:0.2.66 --since 10m
|
|
250
|
-
scout label watch release:0.2.66 --interval 2
|
|
251
|
-
scout label brief release:0.2.66
|
|
252
|
-
```
|
|
126
|
+
## Works with the tools you already use
|
|
253
127
|
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
128
|
+
Scout has host integrations for Claude Code, Codex, Cursor, Pi, and Hermes, plus
|
|
129
|
+
MCP, ACP, Slack, Telegram, voice, and webhook paths where those transports are
|
|
130
|
+
configured. The broker provides the shared coordination model; each harness
|
|
131
|
+
keeps its native runtime and workflow.
|
|
258
132
|
|
|
259
|
-
|
|
133
|
+
See the [integration guide](https://github.com/oscout/scout/blob/main/docs/integrations.md)
|
|
134
|
+
for the current package and setup map.
|
|
260
135
|
|
|
261
|
-
|
|
136
|
+
## Advanced CLI reference
|
|
262
137
|
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
```
|
|
138
|
+
<details>
|
|
139
|
+
<summary><strong>Setup and local configuration</strong></summary>
|
|
266
140
|
|
|
267
|
-
|
|
141
|
+
`scout setup` is the canonical onboarding command. It saves the local identity
|
|
142
|
+
and workspace roots, discovers project-backed agents, installs the base service,
|
|
143
|
+
and attempts to start the broker. A CLI-only setup can make its inputs explicit:
|
|
268
144
|
|
|
269
145
|
```bash
|
|
270
|
-
scout
|
|
271
|
-
scout
|
|
272
|
-
scout
|
|
273
|
-
scout ask --to vox.harness:codex.node:mini "run locally on mini"
|
|
274
|
-
scout ask --to lattices#codex?5.5 "take task A"
|
|
275
|
-
scout ask --to lattices#claude?sonnet "take task B"
|
|
146
|
+
scout config set name "Ada"
|
|
147
|
+
scout setup --source-root ~/dev --default-harness codex
|
|
148
|
+
scout doctor
|
|
276
149
|
```
|
|
277
150
|
|
|
278
|
-
|
|
151
|
+
Use `scout doctor --fix` for conservative native-daemon repairs when the
|
|
152
|
+
installed daemon supports them. Use `scout init` only when you need to rewrite
|
|
153
|
+
the low-level local host and port configuration.
|
|
279
154
|
|
|
280
|
-
|
|
155
|
+
See the [install guide](https://github.com/oscout/scout/blob/main/install.md)
|
|
156
|
+
and [quickstart](https://openscout.app/docs/quickstart) for prerequisites,
|
|
157
|
+
filesystem footprint, and first-run success criteria.
|
|
281
158
|
|
|
282
|
-
|
|
283
|
-
`--to` and `--project`; Scout infers the current project and creates or chooses
|
|
284
|
-
a compatible worker:
|
|
159
|
+
</details>
|
|
285
160
|
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
```
|
|
161
|
+
<details>
|
|
162
|
+
<summary><strong>Routing, profiles, sessions, and follow-up</strong></summary>
|
|
289
163
|
|
|
290
|
-
|
|
291
|
-
|
|
164
|
+
Capability-first routing is the lowest-churn way to start fresh work. Give Scout
|
|
165
|
+
the project and, when it matters, the harness; use a concrete target only when
|
|
166
|
+
you mean one known agent or session.
|
|
292
167
|
|
|
293
168
|
```bash
|
|
294
|
-
|
|
295
|
-
|
|
169
|
+
# Fresh worker for the current project
|
|
170
|
+
scout ask --harness codex "Review the parser."
|
|
296
171
|
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
mnemonic; promote/pin it only after the routed worker proves useful.
|
|
172
|
+
# Fresh worker through a broker-owned runtime profile
|
|
173
|
+
scout ask --profile kimi "Review the parser."
|
|
300
174
|
|
|
301
|
-
|
|
175
|
+
# One known target
|
|
176
|
+
scout ask --to hudson "Check the release package."
|
|
302
177
|
|
|
303
|
-
|
|
304
|
-
scout
|
|
178
|
+
# Continue from a returned handle or exact session
|
|
179
|
+
scout ask --ref <ref> "Take another pass."
|
|
180
|
+
scout ask --to session:<id> "Continue this exact runtime context."
|
|
305
181
|
```
|
|
306
182
|
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
183
|
+
One target means a direct message. Groups use explicit channels. `scout send`
|
|
184
|
+
is for durable updates where no response is expected; `scout ask` creates owned
|
|
185
|
+
work with a reply path. Runtime profiles such as Fable, Opus, Kimi, and Grok are
|
|
186
|
+
broker-owned fresh-session routes, not guessed agent names.
|
|
311
187
|
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
188
|
+
See [runtime sessions](https://github.com/oscout/scout/blob/main/docs/runtime-sessions.md)
|
|
189
|
+
and [Scout comms](https://github.com/oscout/scout/blob/main/docs/scout-comms.md)
|
|
190
|
+
for identity dimensions, session continuation, aliases, delivery state, and
|
|
191
|
+
advanced routing grammar.
|
|
316
192
|
|
|
317
|
-
|
|
318
|
-
scout ask --ref 7f3a9c21 "continue from that handoff"
|
|
319
|
-
scout send --ref 7f3a9c21 "status for that same session"
|
|
320
|
-
```
|
|
321
|
-
|
|
322
|
-
Diagnostic views may show both layers, for example:
|
|
193
|
+
</details>
|
|
323
194
|
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
```
|
|
195
|
+
<details>
|
|
196
|
+
<summary><strong>Operator views, files, and local surfaces</strong></summary>
|
|
327
197
|
|
|
328
|
-
|
|
198
|
+
The shortest orientation loop is:
|
|
329
199
|
|
|
330
200
|
```bash
|
|
331
|
-
scout --help
|
|
332
|
-
scout version
|
|
333
|
-
scout doctor
|
|
334
|
-
scout setup
|
|
335
|
-
scout runtimes
|
|
336
|
-
scout providers usage
|
|
337
201
|
scout whoami
|
|
338
|
-
scout
|
|
339
|
-
scout speak
|
|
340
|
-
scout ask
|
|
341
|
-
scout watch
|
|
202
|
+
scout inbox --latest 10 --json
|
|
342
203
|
scout who
|
|
343
204
|
scout latest
|
|
344
|
-
scout broadcast
|
|
345
|
-
scout up
|
|
346
|
-
scout down
|
|
347
|
-
scout ps
|
|
348
|
-
scout restart
|
|
349
|
-
scout menu
|
|
350
|
-
scout pair
|
|
351
|
-
scout server start
|
|
352
|
-
scout server open
|
|
353
|
-
scout tui
|
|
354
|
-
scout tui --take mesh
|
|
355
|
-
```
|
|
356
|
-
|
|
357
|
-
### Provider Usage and Orchestration Map
|
|
358
|
-
|
|
359
|
-
Read every quota window from the live `/providers` feed without opening the
|
|
360
|
-
web UI, or combine those windows with Scout's role/model/provider policy:
|
|
361
|
-
|
|
362
|
-
```bash
|
|
363
205
|
scout providers usage
|
|
364
|
-
scout providers usage --json
|
|
365
|
-
scout providers usage --cached
|
|
366
|
-
scout providers map
|
|
367
|
-
scout providers map --role implementation
|
|
368
|
-
scout providers map --json
|
|
369
206
|
```
|
|
370
207
|
|
|
371
|
-
|
|
372
|
-
quota window with percent used and remaining, the local reset time, source, and
|
|
373
|
-
observation freshness. `map` derives each window's burn pace, telemetry
|
|
374
|
-
confidence, and binding remaining quota, then recommends a model/provider for
|
|
375
|
-
product judgment, synthesis, critique, inventory, implementation, and review.
|
|
376
|
-
These dispatch roles are recommendations; they do not create durable
|
|
377
|
-
`scout role` assignments. `--cached` skips live provider probes when a recent
|
|
378
|
-
server snapshot is available; a cold or expired cache still reads providers.
|
|
379
|
-
|
|
380
|
-
### Menu Bar App (`scout menu`)
|
|
381
|
-
|
|
382
|
-
On macOS, `scout menu` is the quick launcher for the native menu bar app.
|
|
208
|
+
Use file-backed input when a request is too large or structured for shell argv:
|
|
383
209
|
|
|
384
210
|
```bash
|
|
385
|
-
scout
|
|
386
|
-
scout
|
|
387
|
-
scout menu restart
|
|
388
|
-
scout menu quit
|
|
211
|
+
scout ask --to hudson --prompt-file ./review-request.md
|
|
212
|
+
scout send --channel triage --message-file ./status-update.md
|
|
389
213
|
```
|
|
390
214
|
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
215
|
+
`scout monitor` opens the bundled terminal console. `scout server open` reuses
|
|
216
|
+
or starts the bundled local web UI. `scout tui` launches the separately built
|
|
217
|
+
Rust TUI when `scout-tui` is installed or available from a source checkout, and
|
|
218
|
+
`scout menu` opens an installed macOS app when available.
|
|
394
219
|
|
|
395
|
-
|
|
220
|
+
Run `scout --help` for the current command inventory and
|
|
221
|
+
`scout <command> --help` for all flags.
|
|
396
222
|
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
```bash
|
|
400
|
-
scout whoami
|
|
401
|
-
scout who
|
|
402
|
-
scout latest
|
|
403
|
-
scout server open
|
|
404
|
-
scout server start
|
|
405
|
-
scout server start --port 43120
|
|
406
|
-
scout server open --path /agents/arc-codex-2.master.mini
|
|
407
|
-
scout server start --public-origin http://scout.local
|
|
408
|
-
scout server edge --local-name m1
|
|
409
|
-
scout server start --vite-url http://127.0.0.1:43173 # SPA dev server
|
|
410
|
-
scout server start --static --static-root /custom/client
|
|
411
|
-
```
|
|
223
|
+
</details>
|
|
412
224
|
|
|
413
|
-
|
|
225
|
+
## Current posture
|
|
414
226
|
|
|
415
|
-
|
|
227
|
+
> Scout is in active v0.x development for high-trust local developer pilots.
|
|
228
|
+
> It is not yet an enterprise-ready, compliance-ready, or hardened multi-tenant
|
|
229
|
+
> runtime. Optional mesh features provide reachability and coordination, not
|
|
230
|
+
> global consensus or exactly-once delivery.
|
|
416
231
|
|
|
417
|
-
|
|
232
|
+
## Go deeper
|
|
418
233
|
|
|
419
|
-
|
|
234
|
+
- [OpenScout project homepage](https://openscout.app)
|
|
235
|
+
- [Quickstart](https://openscout.app/docs/quickstart)
|
|
236
|
+
- [Documentation](https://openscout.app/docs)
|
|
237
|
+
- [Architecture](https://openscout.app/docs/architecture)
|
|
238
|
+
- [Current status and scope](https://openscout.app/docs/current-posture)
|
|
239
|
+
- [Public source](https://github.com/oscout/scout)
|
|
240
|
+
- [Issues](https://github.com/oscout/scout/issues)
|
|
420
241
|
|
|
421
|
-
|
|
242
|
+
## License
|
|
422
243
|
|
|
423
|
-
|
|
244
|
+
Apache-2.0. See the [license](https://github.com/oscout/scout/blob/main/LICENSE)
|
|
245
|
+
and [notice](https://github.com/oscout/scout/blob/main/packages/cli/NOTICE).
|
package/bin/scoutd
CHANGED
|
Binary file
|
package/dist/build-manifest.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"packageName": "@openscout/scout",
|
|
4
|
-
"version": "0.2.
|
|
5
|
-
"commit": "
|
|
4
|
+
"version": "0.2.95",
|
|
5
|
+
"commit": "edcbc2933b914dee199c741ffa986d8c4127a318",
|
|
6
6
|
"branch": "HEAD",
|
|
7
7
|
"sourceDirty": false,
|
|
8
|
-
"builtAt": "2026-08-
|
|
8
|
+
"builtAt": "2026-08-31T02:14:41.975Z"
|
|
9
9
|
}
|
package/dist/main.mjs
CHANGED
|
@@ -100958,7 +100958,7 @@ var init_stdio2 = __esm(() => {
|
|
|
100958
100958
|
// ../../apps/desktop/src/shared/product.ts
|
|
100959
100959
|
var SCOUT_APP_VERSION;
|
|
100960
100960
|
var init_product = __esm(() => {
|
|
100961
|
-
SCOUT_APP_VERSION = process.env.SCOUT_APP_VERSION?.trim() || "0.2.
|
|
100961
|
+
SCOUT_APP_VERSION = process.env.SCOUT_APP_VERSION?.trim() || "0.2.95";
|
|
100962
100962
|
});
|
|
100963
100963
|
|
|
100964
100964
|
// ../../apps/desktop/src/core/mcp/stdio-server-lifecycle.ts
|
|
@@ -105022,7 +105022,9 @@ __export(exports_install, {
|
|
|
105022
105022
|
runInstallCommand: () => runInstallCommand,
|
|
105023
105023
|
renderInstallCommandHelp: () => renderInstallCommandHelp,
|
|
105024
105024
|
parseInstallArgs: () => parseInstallArgs,
|
|
105025
|
-
findAppDmgAsset: () => findAppDmgAsset
|
|
105025
|
+
findAppDmgAsset: () => findAppDmgAsset,
|
|
105026
|
+
OPENSCOUT_RELEASE_REPOSITORY: () => OPENSCOUT_RELEASE_REPOSITORY,
|
|
105027
|
+
OPENSCOUT_RELEASE_OWNER: () => OPENSCOUT_RELEASE_OWNER
|
|
105026
105028
|
});
|
|
105027
105029
|
import { spawnSync as spawnSync8 } from "child_process";
|
|
105028
105030
|
import { existsSync as existsSync39, mkdtempSync, rmSync as rmSync5, writeFileSync as writeFileSync9 } from "fs";
|
|
@@ -105115,7 +105117,7 @@ function getInstalledVersion() {
|
|
|
105115
105117
|
return version3 || null;
|
|
105116
105118
|
}
|
|
105117
105119
|
async function fetchRelease(version3) {
|
|
105118
|
-
const base = `https://api.github.com/repos/${
|
|
105120
|
+
const base = `https://api.github.com/repos/${OPENSCOUT_RELEASE_OWNER}/${OPENSCOUT_RELEASE_REPOSITORY}/releases`;
|
|
105119
105121
|
const apiUrl = version3 ? `${base}/tags/${version3}` : `${base}/latest`;
|
|
105120
105122
|
try {
|
|
105121
105123
|
const response = await fetch(apiUrl, {
|
|
@@ -105125,12 +105127,12 @@ async function fetchRelease(version3) {
|
|
|
105125
105127
|
return await response.json();
|
|
105126
105128
|
}
|
|
105127
105129
|
} catch {}
|
|
105128
|
-
const apiPath = version3 ? `repos/${
|
|
105130
|
+
const apiPath = version3 ? `repos/${OPENSCOUT_RELEASE_OWNER}/${OPENSCOUT_RELEASE_REPOSITORY}/releases/tags/${version3}` : `repos/${OPENSCOUT_RELEASE_OWNER}/${OPENSCOUT_RELEASE_REPOSITORY}/releases/latest`;
|
|
105129
105131
|
const gh = spawnSync8("gh", ["api", apiPath], { encoding: "utf8" });
|
|
105130
105132
|
if ((gh.status ?? 1) === 0 && gh.stdout.trim()) {
|
|
105131
105133
|
return JSON.parse(gh.stdout);
|
|
105132
105134
|
}
|
|
105133
|
-
throw new ScoutCliError(version3 ? `release "${version3}" not found on GitHub (${
|
|
105135
|
+
throw new ScoutCliError(version3 ? `release "${version3}" not found on GitHub (${OPENSCOUT_RELEASE_OWNER}/${OPENSCOUT_RELEASE_REPOSITORY})` : `could not fetch the latest OpenScout release from GitHub (${OPENSCOUT_RELEASE_OWNER}/${OPENSCOUT_RELEASE_REPOSITORY})`);
|
|
105134
105136
|
}
|
|
105135
105137
|
function findAppDmgAsset(release) {
|
|
105136
105138
|
const assets = release.assets ?? [];
|
|
@@ -105304,7 +105306,7 @@ async function runInstallCommand(context, args) {
|
|
|
105304
105306
|
message: `${verb} OpenScout ${installedAfter} \u2192 ${APP_PATH}${relaunchNote}`
|
|
105305
105307
|
}, renderInstallResult);
|
|
105306
105308
|
}
|
|
105307
|
-
var
|
|
105309
|
+
var OPENSCOUT_RELEASE_OWNER = "oscout", OPENSCOUT_RELEASE_REPOSITORY = "scout", APP_NAME = "OpenScout.app", APP_PATH, INFO_PLIST_PATH, APP_BUNDLE_ID = "app.openscout.scout", APP_PROCESS_NAME = "Scout", USER_AGENT = "scout-cli", HELP_FLAGS9;
|
|
105308
105310
|
var init_install = __esm(() => {
|
|
105309
105311
|
init_errors();
|
|
105310
105312
|
APP_PATH = `/Applications/${APP_NAME}`;
|
package/package.json
CHANGED
|
@@ -1,7 +1,25 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openscout/scout",
|
|
3
|
-
"version": "0.2.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.2.95",
|
|
4
|
+
"description": "Local-first control plane for discovering, messaging, and coordinating AI agents across Claude Code, Codex, and more",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"openscout",
|
|
7
|
+
"ai-agents",
|
|
8
|
+
"coding-agents",
|
|
9
|
+
"agent-coordination",
|
|
10
|
+
"multi-agent",
|
|
11
|
+
"local-first",
|
|
12
|
+
"control-plane",
|
|
13
|
+
"agent-broker",
|
|
14
|
+
"developer-tools",
|
|
15
|
+
"cli",
|
|
16
|
+
"mcp",
|
|
17
|
+
"acp",
|
|
18
|
+
"claude-code",
|
|
19
|
+
"codex",
|
|
20
|
+
"cursor",
|
|
21
|
+
"bun"
|
|
22
|
+
],
|
|
5
23
|
"license": "Apache-2.0",
|
|
6
24
|
"type": "module",
|
|
7
25
|
"repository": {
|
|
@@ -12,18 +30,19 @@
|
|
|
12
30
|
"bugs": {
|
|
13
31
|
"url": "https://github.com/oscout/scout/issues"
|
|
14
32
|
},
|
|
15
|
-
"homepage": "https://
|
|
33
|
+
"homepage": "https://openscout.app",
|
|
16
34
|
"bin": {
|
|
17
35
|
"scout": "./bin/scout",
|
|
18
36
|
"openscout-runtime": "./bin/openscout-runtime.mjs"
|
|
19
37
|
},
|
|
20
38
|
"engines": {
|
|
21
|
-
"bun": ">=1.
|
|
39
|
+
"bun": ">=1.3"
|
|
22
40
|
},
|
|
23
41
|
"files": [
|
|
24
42
|
"bin",
|
|
25
43
|
"dist",
|
|
26
|
-
"README.md"
|
|
44
|
+
"README.md",
|
|
45
|
+
"NOTICE"
|
|
27
46
|
],
|
|
28
47
|
"dependencies": {
|
|
29
48
|
"@lydell/node-pty": "1.2.0-beta.12",
|
|
@@ -46,5 +65,5 @@
|
|
|
46
65
|
"publishConfig": {
|
|
47
66
|
"access": "public"
|
|
48
67
|
},
|
|
49
|
-
"gitHead": "
|
|
68
|
+
"gitHead": "edcbc2933b914dee199c741ffa986d8c4127a318"
|
|
50
69
|
}
|