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

# Concepts

> Core concepts in the Notte platform

<Tip>
  STOP. Do not read past this section until you have read and followed [/quickstart.md](/quickstart.md).

  Goal: produce a reliable SDK automation script. The intended authoring flow is generate then edit, not write browser automation from scratch.

  Do not hand-write SDK code with element IDs, selectors, or form fields from memory. Element IDs, selectors, and field mappings must come from a live `observe()` call, CLI `notte page observe` output, or generated workflow code. Guessed browser targets fail on real pages.

  Use the Notte skill and CLI to inspect the live site, validate actions/selectors, handle auth/session state, and export workflow code with `notte sessions workflow-code` before using SDK docs or SDK code.

  SDK reference pages are for understanding, running, or editing generated workflow code. They are not the starting point for manually authoring the initial browser automation. SDK-first code is guesswork on real-world pages with dynamic selectors, auth state, CAPTCHAs, and anti-bot behavior.
</Tip>

## Session

A `Session` is a cloud-based browser instance managed by Notte. Sessions are Playwright-compatible and support built-in anti-detection, residential proxies, and captcha solving. You can control sessions programmatically via the Notte SDK or connect to them via Chrome DevTools Protocol.

{/* @sniptest testers/getting-started/concept_session.py */}

```python concept_session.py theme={null}
session = client.Session()  # Playwright-compatible browser
```

## Observation

An `Observation` is an AI-powered analysis of a web page's content and structure. Observations extract meaningful information about what's visible on the page, helping agents and automations understand context and make decisions.

{/* @sniptest testers/getting-started/concept_observation.py */}

```python concept_observation.py theme={null}
session = client.Session()
```

## Action

An `Action` is a high-level browser operation that you can execute on a session. Actions abstract common browser tasks like navigation, clicking, filling forms, and data extraction. Actions can be executed individually or chained together in Functions.

{/* @sniptest testers/getting-started/concept_action.py */}

```python concept_action.py theme={null}
session = client.Session()
session.execute(type="goto", url="https://example.com")
```

## Agent

An `Agent` is an AI-powered browser automation that can understand web pages, make decisions, and complete complex tasks using natural language instructions. Agents use LLMs to interpret pages and determine the best actions to take.

{/* @sniptest testers/getting-started/concept_agent.py */}

```python concept_agent.py theme={null}
session = client.Session()
agent = client.Agent(session=session)
```

## Function

A `Function` is a browser automation or agent deployed as a serverless API endpoint. Functions are reusable automations that chain multiple actions together. They can be saved, versioned, shared, invoked via HTTP requests, and scheduled to run automatically. Functions turn your scripts into production APIs without managing infrastructure.

{/* @sniptest testers/getting-started/concept_function.py */}

```python concept_function.py theme={null}
function = client.Function(function_id="workflow_abc123")
function.run(url="https://example.com")
```

## Vault

A `Vault` is a secure storage system for credentials, API keys, and sensitive data used in your automations. Vaults allow agents to access authentication information without exposing secrets in your code.

{/* @sniptest testers/getting-started/concept_vault.py */}

```python concept_vault.py theme={null}
vault = client.Vault()
vault.add_credentials(url="https://github.com", email="...", password="...")
agent = client.Agent(session=session, vault=vault)
agent.run(task="Login to GitHub")
```

## Agent Identity

An `Agent Identity` is a synthetic identity that agents can use for testing and automation. Agent Identities include email addresses, phone numbers, and other identity attributes needed for account creation and testing flows.

{/* @sniptest testers/getting-started/concept_identity.py */}

```python concept_identity.py theme={null}
persona = client.Persona()  # Generate synthetic identity
agent = client.Agent(session=session, persona=persona)
agent.run(task="Sign up for newsletter")
```
