# attention.run docs

> How to use attention.run: from a local hub to a flow that passes, the flow JSON reference, the attn CLI, the TypeScript SDK, MCP, SSH targets and webhooks.

attention.run automates any user interface you can see. You connect a screen (a Chrome or a desktop over VNC), record what you do on it, cut the parts you care about into a library of elements, and automate with flows that find those elements by their pixels. These docs cover what the product does today; where something is planned, they say so.

## Start here

- [Getting started](https://attention.run/docs/getting-started): a local hub with the fixture app, a recording, four elements, a flow and a passing run, in about fifteen minutes.
- [Concepts](https://attention.run/docs/concepts): targets, sessions and recordings, elements and libraries, flows, runs and triggers.

## Reference

- [Flow JSON](https://attention.run/docs/flow-json): every field and step of a flow, generated from the schema the hub validates with. The JSON Schema itself is at [/schema/flow-v1.json](https://attention.run/schema/flow-v1.json).
- [The attn CLI](https://attention.run/docs/cli): push flows, start runs and wait for them in CI, share a screen, run the MCP proxy.
- [The TypeScript SDK](https://attention.run/docs/sdk): the hub's API, runs, live sessions driven call by call, and sharing a screen from a script.
- [MCP](https://attention.run/docs/mcp): the tools an AI agent gets, over Streamable HTTP or through `attn mcp`.
- [SSH targets](https://attention.run/docs/ssh-targets): a screen on your own machine as a target, with one `ssh -R` command or `attn share`.
- [Webhooks](https://attention.run/docs/webhooks): start runs from a webhook, and get a signed request when a run ends.

## Where things run

- **The hub** keeps targets, recordings, libraries, flows and runs, and serves the web app and the API (`/api/v1`).
- **A runner** connects the screens: it opens Chrome or a VNC connection, records frames, finds elements and sends input. A local hub (`npm run dev`, `npm run demo`) runs one in the same process.
- **Clients** talk to the hub only: the web app, the `attn` CLI, the TypeScript SDK and MCP clients.

## Status

attention.run is an invite-only preview. The hosted app at app.attention.run sits behind Cloudflare Access, which lets invited people in through the browser; the CLI and the SDK can't reach its API from outside yet. MCP clients that connect by address sign in by themselves ([MCP](https://attention.run/docs/mcp#by-address-oauth)), once the hosted app lets them through. Everything in these docs works against a local hub, which is how the examples are tested.

The `attn` CLI and `@attn/sdk` aren't published to npm yet: they run from a checkout of the attention.run repository. Planned and not built yet: a published CLI and SDK, `attn login`, TypeScript flows that run on the hub, triggers on what appears on a screen (agents can already [watch](https://attention.run/docs/mcp) a screen), and docs that show your own hub, targets and flows when you're signed in.

## About the examples

In code blocks, the values you replace have a dotted underline: hover one to see what it stands for. The copy button on a block copies it as shown.

- **Addresses** are the hosted app's: `https://app.attention.run` for the hub and `ssh.attention.run` (port 22) for SSH targets. With a local hub (`npm run dev`, `npm run demo`), use `http://127.0.0.1:7300` and `127.0.0.1` port 7322 instead.
- **What runs on your machine** keeps its local address: [Getting started](https://attention.run/docs/getting-started) runs a local demo hub, and the example flows sign in to the fixture app it starts (`http://127.0.0.1:7310`).

Every example that isn't marked as untested in the source runs in CI against a local hub with the fixture app, with that hub's values in place of the examples, so the commands and scripts work as written there.

---

Canonical: https://attention.run/docs · Updated 2026-10-15
