Requires Bun. Scout uses Bun as its JavaScript runtime and package manager. Install it first:
brew install bunorcurl -fsSL https://bun.sh/install | bash
OpenScout is a local-first control plane for AI agents. It gives Claude Code, Codex, and future harnesses one shared broker, runtime, and protocol so agents can be discovered, addressed, observed, and composed without each surface inventing its own state model.
This repository is the active OpenScout product codebase. It contains the local broker/runtime, shared protocol, public CLI, desktop and mobile surfaces, docs, and release tooling.
Current posture: high-trust local developer pilots. OpenScout is not yet an
enterprise-ready, compliance-ready, hardened multi-tenant runtime. Start with
docs/current-posture.md before making maturity,
trust, mesh, or license claims.
| Area | Path | Start here |
|---|---|---|
| App surfaces | apps |
apps/README.md |
| Desktop app, CLI, and app services | apps/desktop |
apps/desktop/README.md |
| iOS app | apps/ios |
apps/ios/README.md |
| Shared packages | packages |
packages/README.md |
| Broker/runtime | packages/runtime |
packages/runtime/README.md |
| Shared protocol | packages/protocol |
packages/protocol/README.md |
| Public CLI package | packages/cli |
packages/cli/README.md |
| Web UI package | packages/web |
packages/web/README.md |
| Product docs | docs |
docs/README.md |
| Landing/docs site | landing |
landing/README.md |
Host-specific integrations live in standalone repositories when they are
independently installable packages. See docs/integrations.md
for the current pi, Claude Code, Codex, and Hermes integration map.
If you are new to the docs, start with docs/README.md for
the reading order. The shortest newcomer path is:
install.mdfor install and bootstrap expectationsdocs/quickstart.mdfor the first healthy local rundocs/current-posture.mdfor maturity and trust boundariesdocs/architecture.mdfor the broker/runtime/protocol modeldocs/agent-identity.mdfor address grammar and routing
Scout is aware of adjacent standards such as A2A, but it does not collapse its internal model into them. For the definitive terminology and Scout's current A2A position, see docs/glossary.md and docs/a2a-alignment.md.
For agent-ready entry points, read llms.txt, llms-full.txt, and install.md.
OpenScout is not just "chat between terminals." The product bet is that agent collaboration needs a durable control plane, not a pile of harness-specific sessions. The current direction is:
- explicit: conversation, work, delivery, and bindings are different records
- durable: the broker is the only writer and local state is stored canonically
- addressable: agents, conversations, messages, invocations, and flights all have stable IDs
- replayable: surfaces rebuild from stored records instead of terminal scrollback
- observable: you can inspect ownership, status, failures, and outputs
- recoverable: broker restarts do not have to erase the story of what happened
- harness-agnostic: Claude, Codex, tmux, and future harnesses are edge concerns, not protocol forks
At the repo level, Scout is organized around one product path:
apps/desktopandapps/iosown the human-facing surfacespackages/runtimeandpackages/protocolare the shared broker/runtime foundationpackages/cliis the public npm package; the other packages stay as private internal boundaries- host-specific integrations are documented in
docs/integrations.md; separate repos are linked rather than vendored unless the integration needs to build with OpenScout internals
Choose the install path that matches what you are doing:
- If you already have the published CLI, start with the machine bootstrap.
- If you are working from a fresh checkout, link the repo CLI first.
Published CLI path:
scout setup
scout doctorFresh checkout path:
bun install
npm --prefix packages/cli run build
(cd packages/cli && bun link)
scout --help
scout setup
scout doctorscout setup creates or updates machine-local settings, discovers workspace projects, writes .openscout/project.json for the current repo when needed, registers known agents, installs the base Scout launch agent, attempts to start the base service, 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. The base launch agent owns the broker, local edge, web startup, and menu bar launch; boot it out with the command shown by scout doctor.
scout doctor is the quick operational check that the broker is installed, reachable, and writing logs in the expected support paths.
What success looks like after setup:
scout doctorexits cleanly and reports the broker as reachable- the support directory exists under
~/Library/Application Support/OpenScout scout --helpworks andbun run devstarts the desktop shell without repeating setup prompts
The main desktop loop now runs directly from the repo root:
bun install
bun run devThat starts the desktop web shell and local control-plane services from apps/desktop.
To install the CLI globally from this repo:
npm --prefix packages/cli run build
(cd packages/cli && bun link)
scout --help
scout setup
scout doctor~/Library/Application Support/OpenScout
The support directory is now organized as:
~/Library/Application Support/OpenScout
├── settings.json
├── relay-agents.json
├── logs/
│ ├── app/
│ └── broker/
└── runtime/
└── agents/
relay-agents.json remains the compatibility filename for machine-local agent
registry entries.
docs/README.mdfor the docs map and reading orderinstall.mdfor install/bootstrap expectations and support footprintdocs/quickstart.mdfor the first successful local flowdocs/current-posture.mdfor maturity, trust, and license-status boundariesdocs/architecture.mdfor the broker/runtime/protocol splitdocs/agent-identity.mdfor address grammar and name resolutiondocs/agent-integration-contract.mdfor the minimum contract expected from agents and adaptersdocs/glossary.mdfor the definitive Scout vocabularydocs/a2a-alignment.mdfor how Scout aligns with A2A today