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

# Get started

> Running agents is a breeze

Here's how you create an agent, and run a task:

{/* @sniptest testers/agents/simple.py */}

```python simple.py theme={null}
from notte_sdk import NotteClient

client = NotteClient()
with client.Session() as session:
    agent = client.Agent(session=session)
    agent.run(task="go to google, and find cat pictures")
```

## Usage

See more information on the available operations:

<CardGroup cols={3}>
  <Card title="Run" icon="circle-play" href="../remoteagent/run">
    Execute a task
  </Card>

  <Card title="Replay" icon="image" href="../remoteagent/replay">
    Get the agent replay
  </Card>

  <Card title="Status" icon="circle-info" href="../remoteagent/status">
    Query the agent status
  </Card>
</CardGroup>

## Running with a session

Providing a [session](../manual/session) to your agent allows you to choose specific options, like changing your browser or using proxies.

{/* @sniptest testers/agents/session.py */}

```python firefox.py theme={null}
from notte_sdk import NotteClient

client = NotteClient()

with client.Session() as session:
    _ = client.Agent(session=session).run(
        task="What's the weather like in SF tonight?",
    )
```

## Providing credentials

Agents can be provided a [vault](../manual/vault) with credentials in order to securely log in to websites without sharing your information to the LLM.

{/* @sniptest testers/vaults/index.py */}

```python agent_with_vault.py theme={null}
from notte_sdk import NotteClient

client = NotteClient()
# Get your vault id from the Notte dashboard
vault = client.Vault(vault_id="my_vault_id")
# Add your credentials securely
vault.add_credentials(
    url="https://github.com/",
    email="my_cool_email@gmail.com",
    password="my_cool_password",
)
# Run an agent with secure credential access
with client.Session() as session:
    agent = client.Agent(vault=vault, session=session, max_steps=10)
    response = agent.run(task="Go to the nottelabs/notte repo and star it. If it's already starred don't unstar it.")
```

## Parameters

You can use the default parameters to create your session, or customize them:

<ParamField path="session" type="UnionType[RemoteSession, None]" default="None">
  The session to connect to. The session's `open_viewer` parameter controls         whether to display a live viewer (browsers are always headless).
</ParamField>

<ParamField path="vault" type="UnionType[NotteVault, None]" default="None">
  A notte vault instance, if the agent requires authentication
</ParamField>

<ParamField path="notifier" type="UnionType[BaseNotifier, None]" default="None">
  A notifier (for example, email), which will get called upon task completion.
</ParamField>

<ParamField path="persona" type="UnionType[NottePersona, None]" default="None" />

<ParamField path="agent_id" type="UnionType[str, None]" default="None" />

<ParamField path="reasoning_model" type="notte_core.common.config.LlmModel | str">
  The language model to use for agent reasoning.
</ParamField>

<ParamField path="use_vision" type="bool">
  Whether to enable vision capabilities for the agent.
</ParamField>

<ParamField path="max_steps" type="int">
  Maximum number of steps the agent can take.
</ParamField>

<ParamField path="vault_id" type="str | None">
  Optional ID of the vault to use.
</ParamField>

<ParamField path="persona_id" type="str | None" />

<ParamField path="notifier_config" type="dict[str, typing.Any] | None">
  Config used for the notifier.
</ParamField>
