> ## Documentation Index
> Fetch the complete documentation index at: https://docs.asymptotelabs.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# beacon endpoint inventory

> Show installed, configured, and observed Beacon endpoint inventory

## Command Overview

`beacon endpoint inventory` shows Beacon endpoint inventory across configured harnesses, detected local runtimes, hook integrations, and observed runtime events.

```bash title="Command syntax" theme={null}
beacon endpoint inventory
```

Use inventory when you need a fleet-friendly view of what Beacon is configured to monitor and what the endpoint has actually observed. By default, inventory focuses on configured, detected, or observed targets. Add `--all` to include every supported target, including runtimes and configuration files that are not detected on the host.

`beacon inventory` is a top-level alias for `beacon endpoint inventory`.

## Inventory Data

Inventory can include:

* Endpoint config path, runtime log path, and configured OTLP harnesses
* Detected supported runtimes and telemetry status, including MDM-managed launch-environment state for GitHub Copilot CLI and Factory Droid
* Hook integration status for Antigravity CLI, Claude Code, Cursor, Devin CLI, Devin Desktop, Factory Droid, Grok Build, Hermes Agent, and OpenCode
* Supported agent configuration files and MCP server configuration context where Beacon can inspect them locally, including Claude Code `~/.claude.json` and Cursor `mcp.json`
* Local agent skill manifests discovered under supported skill roots, including symlinked Claude Code skill directories, reported as metadata and hashes by default (add `--contents` for redacted full bodies)
* Recently observed Beacon runtime events when the runtime log exists
* Admin-configured integration observations such as Claude Cowork and OpenClaw Gateway events

Human-readable and JSON inventory use the same default filtering: configuration records, MCP server context, and skill manifests are shown when they are relevant to the local endpoint state. Use `--all` with `--json` when you need the complete supported inventory surface for fleet comparison or troubleshooting.

Use the section filters when you only need one inventory surface:

* `--mcp` shows MCP server inventory and the source config files that define MCP servers.
* `--skills` shows local agent skill manifests.
* `--hooks` shows hook integration status and hook config files.

The section filters can be combined. For example, `--mcp --skills --json` prints only MCP and skill inventory buckets in the JSON output.

## Capturing Full Definitions

By default inventory is metadata- and hash-only: it reports paths, hashes, MCP transport, command basenames, argument counts, and safe environment key names, but never the raw file bodies.

Add `--contents` when you need to see the **full definitions** of config, hook, and skill files:

* Each config and hook file gains a `content` block with the raw file body.
* Each skill manifest gains a `content` block with the `SKILL.md` body.
* Each MCP server gains a full `definition` block (complete command, arguments, URL, and environment) instead of only the summarized metadata.

Captured contents are always passed through local redaction and a size limit:

* Values held under secret-looking keys (matching `TOKEN`, `SECRET`, `PASSWORD`, `KEY`, `AUTH`, or `CREDENTIAL`) are replaced with `***REDACTED***`. The `content.redacted_count` field reports how many values were redacted.
* Bodies are truncated to a per-file byte cap (64 KiB by default) and flagged with `content.truncated`. The `content.bytes` field always reports the original file size.

```bash title="Show full, redacted MCP definitions" theme={null}
beacon endpoint inventory --mcp --contents
```

Content capture is opt-in and offline; `--contents` only reads files inventory already inspects locally.

## Inventory Heartbeats

Endpoint hooks can periodically append inventory telemetry to a separate `inventory_state.jsonl` file beside `runtime.jsonl`. The hook that fires is recorded as trigger provenance, but the default heartbeat scans all supported local inventory candidates:

* `inventory.heartbeat` records that Beacon checked local agent configuration inventory, including counts and a snapshot digest.
* `inventory.snapshot` records the current metadata-only inventory when the snapshot changed or when inventory is first initialized.

By default, inventory snapshots include config file metadata, MCP server metadata, skill metadata, and hook config metadata across supported local runtimes. They do not include skill instruction bodies, MCP secret values, full environment values, full command arguments, or unrelated config content.

Set `include_contents` to opt the snapshot/heartbeat telemetry into capturing full definitions, matching the `--contents` CLI behavior. When enabled, `inventory.snapshot` events carry redacted, size-limited config/hook/skill `content` blocks and full MCP server `definition` blocks. Secret-looking values are redacted and bodies are truncated to `max_content_bytes` (64 KiB by default). This setting is off by default so the snapshot contract stays metadata-only unless an operator explicitly enables it.

The heartbeat TTL and content capture are configured in the existing endpoint config file. Omit `runtimes` to scan all supported inventory runtimes, or set it when you intentionally want a narrower snapshot:

```json title="~/.beacon/endpoint/config.json" theme={null}
{
  "inventory_heartbeat": {
    "enabled": true,
    "ttl_seconds": 86400,
    "include_contents": false,
    "max_content_bytes": 65536
  }
}
```

For a manual smoke test, temporarily lower `ttl_seconds`, start a Cursor or Claude Code session with Beacon hooks installed, add a harmless test MCP server to `~/.cursor/mcp.json`, `.cursor/mcp.json`, `~/.claude.json`, or `.claude/settings.json`, then trigger another hook action. `inventory_state.jsonl` should contain an `inventory.heartbeat` event and, when the digest changes, an `inventory.snapshot` event with the new MCP server metadata under `raw.inventory.mcp_servers`. `runtime.jsonl` should remain limited to agent runtime activity.

## Flags

| Flag                | Description                                                                                    |
| ------------------- | ---------------------------------------------------------------------------------------------- |
| `--user`            | Use per-user endpoint paths. Enabled by default                                                |
| `--system`          | Use system endpoint paths and launch daemon                                                    |
| `--log-path <path>` | Runtime JSONL log path                                                                         |
| `--json`            | Print inventory as JSON                                                                        |
| `--all`             | Include all supported targets, not only configured, detected, or observed targets              |
| `--mcp`             | Show only MCP server inventory and source configs                                              |
| `--skills`          | Show only local agent skill inventory                                                          |
| `--hooks`           | Show only hook integration and hook config inventory                                           |
| `--contents`        | Include redacted, size-limited config/hook/skill file contents and full MCP server definitions |

## Examples

Show endpoint inventory:

```bash title="Show endpoint inventory" theme={null}
beacon endpoint inventory
```

Include all supported targets:

```bash title="Include all supported targets" theme={null}
beacon endpoint inventory --all
```

Print machine-readable inventory:

```bash title="Print machine-readable inventory" theme={null}
beacon endpoint inventory --json
```

Show only MCP server inventory:

```bash title="Show MCP inventory" theme={null}
beacon endpoint inventory --mcp
```

Show only skill manifests and hook configuration:

```bash title="Show skills and hooks" theme={null}
beacon endpoint inventory --skills --hooks --json
```

Inventory a system-mode endpoint:

```bash title="Inventory a system-mode endpoint" theme={null}
sudo beacon endpoint inventory --system --all
```

Use the top-level alias:

```bash title="Use the top-level alias" theme={null}
beacon inventory --json
```

## Related

<Columns cols={2}>
  <Card title="Inventory Local Agent Runtimes" icon="clipboard-list" href="/guides/inventory">
    Understand dashboard Inventory and common runtime coverage workflows.
  </Card>

  <Card title="Endpoint discover" icon="magnifying-glass" href="/cli/endpoint-discover">
    Discover supported local agent harnesses and telemetry state.
  </Card>

  <Card title="Runtime hooks" icon="plug" href="/cli/hooks">
    Install and inspect hook-based endpoint telemetry.
  </Card>
</Columns>
