# stations

A station is a bundle of sidecar tools Brigade knows how to wire, and a profile decides which stations are selected or optional. `brigade stations` lists the built-in station catalog, discovers external `station.json` catalogs on disk, and verifies a station contract before you install it. All three subcommands are read-only: they report and never install a sidecar or edit config.

## Commands

`brigade stations list` lists every station in the catalog, its selection under a profile, the tools it wires, and a one-line summary. It defaults to the `repo` profile. Pass `--profile <name>` to compare against another built-in profile by name or alias. Add `--json` for machine-readable output.

```bash
brigade stations list
brigade stations list --profile repo
brigade stations list --profile workspace
brigade stations list --json
```

`brigade stations discover` scans local roots for external `station.json` catalogs (schema `brigade.station.v1`) so you can see what a third-party station declares before wiring it. It defaults to the current directory plus `~/repos`, `~/src`, and `~/code` when they exist. Pass `--root <dir>` (repeatable) to override, and `--max-depth` to control how deep it looks (default `2`: each root and one level of children).

```bash
brigade stations discover
brigade stations discover --root ~/work --root ~/oss
brigade stations discover --max-depth 3 --json
```

`brigade stations verify <path>` checks one explicitly selected `station.json` contract without installing it. Pass the directory that contains `station.json` or the file itself. It exits non-zero when the contract is missing or malformed. Add `--check-managed` to also fail when a matching active executable contract has drifted from Brigade's managed catalog.

```bash
brigade stations verify ./some-tool
brigade stations verify ./some-tool/station.json --json
brigade stations verify ./some-tool --check-managed
```

## Reading the catalog

Each row shows the station name, its selection for the chosen profile (`selected`, `optional`, or `not selected`), the tools that station wires, and the summary. `built-in` and `embedded` rows ship inside `brigade-cli`.

```
brigade stations: profile=repo
  core           [selected]  built-in  - workspace bootstrap and harness adapters
  skills         [selected]  brigade-work, ultra-work-scout  - portable skillet-style agent skills, Scout workflows, and runbooks
  memory         [selected]  memory-doctor, bootstrap-doctor  - handoff inbox, ingest, and memory-care
  guard          [selected]  embedded content guard  - publish safety and content scrub
  tokens         [selected]  token-glace  - Token Glace output compaction
  search         [selected]  code-search-api, code-search-mcp  - local semantic code search
  security       [selected]  built-in  - agent workspace security scanning
  pantry         [optional]  agentpantry  - agent session auth sync
  notifications  [optional]  agent-notify  - operator notification wiring
  evidence       [selected]  miseledger  - local-first evidence ledger with built-in session and source crawlers
  mcp            [optional]  built-in  - canonical MCP server config sync
```

The `evidence` and `search` rows are backed by the engines `brigade setup` installs; Code Intelligence and Evidence are built into Brigade, not external tools you add. The `miseledger` name in the table is the engine binary behind the `brigade evidence` commands.

The same catalog is listed for every profile. Only the selection column changes with `--profile`. An unknown profile name exits non-zero and prints `unknown profile: <name>`.

Station listing is inspection only. Use `brigade profiles show` to see a profile's selected and optional stations. Use `brigade guard` or `brigade scrub` for the embedded guard, and `brigade add` for stations that still need external tools.