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

# Know what your agents can do. Know what they actually did.

> Aspex is a local security debugger for AI agents. It reads the MCP configs and client logs already on your machine and reasons about them together: offline, deterministic, one binary.

```sh theme={"dark"}
brew install aspex-security/tap/aspex && aspex     # or: npx aspex
```

<CardGroup cols={3}>
  <Card title="What can my agents do?" icon="radar" href="/tools/scan">
    Every server, tool, hook and skill. Cross-server attack paths with evidence. Yes/no answers computed from the graph.
    `aspex scan` · `aspex explain`
  </Card>

  <Card title="What did they actually do?" icon="list-timeline" href="/tools/trace">
    Tool calls from your clients' own logs. Kill chains and provenance labeled OBSERVED, INFERRED, POSSIBLE.
    `aspex trace` · `aspex explore`
  </Card>

  <Card title="What changed?" icon="code-compare" href="/tools/change-detection">
    New tools, poisoned descriptions, wider scope, new attack paths. Exit 1 in CI on drift you did not accept.
    `aspex lock` · `verify` · `diff`
  </Card>
</CardGroup>

## Run this first

`aspex` with no arguments joins your MCP configs with your clients' logs and shows one screen. Real output from the maintainer's machine, nothing sent anywhere:

```
$ aspex

  ▸ In the last 30 days your agents made 333 tool calls to 12 MCP servers.
  ▸ 329 of those calls went to 11 servers no security scan had ever checked.
  ▸ 1 call tripped a detection rule. Most common: cross-server data chain (1).
  ▸ 7 configured servers, overall security score 39/100. […]

    desktop-commander     80  HIGH      not used
    filesystem            80  HIGH      not used
    github                80  HIGH      not used
    brave-search          80  HIGH      not used
    playwright            90  MEDIUM    not used
    slack                 95  clean     4 calls
```

Then a menu opens underneath. [The front door →](/tools/launcher)

## How it reasons

Three ideas are kept apart on purpose. Everything Aspex prints is one of them, and says which.

|                       |                                                                                                                                                                         |
| --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Capability**        | What a server *can* do, with evidence: the tool, or the allowed root in your config. [Capabilities & attack paths →](/concepts/capabilities-and-attack-paths)           |
| **Attack path**       | A conclusion about a *composition* of capabilities. Severity from what it reaches; confidence from how the capabilities were observed. A single server is never a path. |
| **Observed behavior** | What the logs show. A path says nothing about whether it was ever walked. [Observed vs inferred →](/concepts/observed-vs-inferred)                                      |

## What Aspex is not

* **Not a proxy.** Never in your agent's request path.
* **Not a blocker.** It shows you. You decide.
* **Not a SaaS.** No account, no telemetry. The only network call is the download.
* **Not omniscient.** Cloud connectors it cannot scan are shown as "in use, never scanned".

<CardGroup cols={2}>
  <Card title="Quickstart" icon="arrow-right" href="/quickstart">Install, see what your agents can do, harden it. About a minute.</Card>
  <Card title="Common workflows" icon="list-check" href="/guides/common-workflows">Task first, command second. Where to start for what you want to do.</Card>
  <Card title="How Aspex reasons" icon="book-open" href="/concepts/how-aspex-reasons">Why a finding exists, and how to reproduce it.</Card>
  <Card title="Using a coding agent?" icon="robot" href="https://aspex.mintlify.site/llms.txt">These docs are available as `llms.txt` for your agent to read.</Card>
</CardGroup>
