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. Scout can launch and attach to sessions, but it does not require agents to be defined by Scout in order to coordinate with them. Once that substrate exists, humans can talk to their agents through the same system instead of managing separate chat threads, and the desktop and iOS surfaces are the natural human entry points into that shared broker/runtime.
This repository is the active Scout product codebase. The main path through it is:
apps/desktopfor the desktop human surface, CLI, UI, and app-layer servicesapps/iosfor the mobile human surface over the same broker/runtimepackages/runtimefor the broker/runtime foundationpackages/protocolfor shared contracts and identity grammarpackages/clifor the public@openscout/scoutpackage that installsscout
Host-specific integrations can live beside this repo when they are independently
installable packages. See docs/integrations.md for
the current pi, Claude Code, and Codex integration map.
If you are new to the docs, start with docs/README.md for the reading order. The shortest newcomer path is docs/quickstart.md, then docs/current-posture.md, then docs/architecture.md, then docs/agent-identity.md.
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 maturity, trust, install footprint, and license-status expectations, read docs/current-posture.md. The current posture is high-trust local developer pilots, not enterprise-ready deployment.
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 plugins and extensions 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