# Playground

Source: https://webagent-docs-staging.lookover.ai/guides/playground

> Try a goal on a real cloud browser from the dashboard, stop or steer it, read the report, and copy the run as a prompt or cURL.

The Playground is the page in the dashboard where you try a goal before you automate it. You write what you want done on a website, press Run, and watch a cloud browser do it. When it ends you read the report, run it again, or copy it as a prompt for Claude Code or Codex.

Open it at `https://webagent.lookover.ai/playground`, or choose **Playground** in the **Build** group of the sidebar. You need to be signed in. You do not need an API key.

## What it is for [#what-it-is-for]

- **Try a task.** Run one goal on a real browser and see what the agent does, step by step.
- **Steer it.** The run opens on the session page, where you can stop the task, answer a question or take over the browser.
- **Read what happened.** The session page has a Report tab with the verdict, steps, console errors and failed requests.
- **Take it with you.** The Use it from code card turns the form into an MCP prompt or cURL commands.

A Playground run is an ordinary [task](/concepts/tasks) in an ordinary [session](/concepts/sessions). It shows up under Sessions and in the task list, and it counts as compute like any other session. See [Billing](/concepts/billing).

> **Note:** A Playground task checks no assertions. **Passed** means the agent says it is done. For a repeatable pass or fail check from your terminal, use the [`smoke_test`](/mcp/tools#smoke_test) tool. See [QA testing](/qa-testing).

## Write the goal [#write-the-goal]

The **Goal** card has four parts.

| Field | What it does |
|---|---|
| Goal | What you want done, in plain language. 1 to 2,000 characters. A counter shows from 1,800 characters, and Run is blocked above 2,000. Press Cmd+Enter (Ctrl+Enter on Windows and Linux) to run |
| Start page | Optional. The page the browser opens first. Web addresses only |
| Starters | Four buttons that fill the goal and start page. See below |
| Run | Opens a browser and starts the goal. It stays disabled until the goal has text |

The goal is stored with the task. Do not type passwords or other secrets in it. To sign in, turn on **Fill saved logins** under Browser options, or see [Signed-in sites](/guides/signed-in-sites).

### Start page [#start-page]

Type a full address, or only the host: `example.com` becomes `https://example.com`. Any scheme other than `http://` or `https://` is refused before a request is made.

The start page must be a public address. The cloud browser cannot open `localhost`, `*.internal` or private network addresses. If you try, the field shows that the address is blocked, with the reason, and the form stays as it was. To test an app on your machine, use a public preview URL or a tunnel. See [Test a local app](/guides/local-apps).

### Starters [#starters]

| Starter | Start page | What it asks |
|---|---|---|
| Read a page | `https://example.com` | Open the page and say in one sentence what it is for |
| Look something up | `https://en.wikipedia.org` | Search for "Lighthouse of Alexandria" and say when it was destroyed |
| Sign in to a test app | A Lookover test app | Sign in with any email and the demo password on the page, then say what the dashboard shows. Turns on Record a replay |
| Smoke test a page | Empty: type your own | Check that the page loads, has a visible main heading and that its main links work. Turns on Record a replay |

A starter replaces the goal and the start page. A message offers **Undo**, so nothing you typed is lost. While the smoke-test goal is in the box, a note points to the `smoke_test` tool for repeatable checks.

## Choose how it runs [#choose-how-it-runs]

The **How it runs** card sets the engine, the mode and the limits.

| Field | What it does |
|---|---|
| Engine | The engine the agent uses. A line below shows its version, owner and limits. **Manage engines** opens the engine list |
| Mode | How much the agent asks you. Auto (the default), Ask first, Plan first or Full auto. See [Modes](/concepts/tasks#modes) |
| Max steps | 1 to 50. Empty uses the engine's limit, shown in the field |
| Max cost per task ($) | A cost cap for this task. Empty uses the engine's limit, shown in the field |

A task that reaches a limit stops and says which one. See [Limits of one task](/concepts/tasks#limits-of-one-task).

The **Browser** card on the right sets the browser, device, profile, region and proxy. Leave it as it is to use your project defaults. **Browser options** has three switches for this run only:

- **Record a replay** keeps a video of the run to watch after it ends.
- **Fill saved logins** signs in with logins from your vault. The agent never sees the password. See [Signed-in sites](/guides/signed-in-sites).
- **Keep the login** saves the browser's cookies as a profile when the session ends.

## Run it [#run-it]

Press **Run**. The form locks and the button says "Opening a browser…". When the browser is ready, the page moves to the session page. If it takes more than 15 seconds, a note says it is still opening.

If no browser is free, Run is refused and the form stays as you left it. The message says you may have browsers open from earlier runs and links to **See open sessions**, where you can end them. Each Run opens a new session, and the Playground never closes one for you. An idle session ends by itself after 5 minutes. See [When no browser is free](/concepts/sessions#when-no-browser-is-free).

## Watch and steer on the session page [#watch-and-steer-on-the-session-page]

The session page shows the live browser next to a chat. Your goal is sent once, as soon as the browser is live. If the session is queued for a browser, the page shows the queue notice and sends the goal when the browser starts. If you reload before it is sent, the chat is empty and you can type the goal again. Nothing runs twice.

While the task works:

- **Status lines** in the chat say what the agent is doing.
- **Stop** ends the task. Use the Stop button in the message box or on the task's message, or press Esc. The browser stays open and you can send another goal.
- **Questions** appear as a card in the chat when the agent needs an answer. Answer in the message box. Ask first and Plan first ask before they act. Full auto never asks.
- **Take over** pauses the agent so you can use the browser yourself. See [Live view](/concepts/live-view).
- **Follow-up goals** go in the same chat. The browser keeps its page and cookies between tasks.

The result appears in the chat when the task ends. The wording follows the stop reason. See [Why a task stops](/concepts/tasks#why-a-task-stops). If the agent finds a CAPTCHA, the chat hands the browser to you. webagent does not solve CAPTCHAs.

## Read the Report tab [#read-the-report-tab]

The **Report** tab sits next to Timeline on the session page. It shows the report for the session's newest task. With two or more tasks, a picker chooses which one. It fills in when the task ends. While the task runs, the tab says so.

The report has:

- **Verdict.** Passed, Failed, Could not run or Running, with a sentence. A line reminds you that Passed means the agent says it is done.
- **Facts.** The page, when it ended, the duration, the cost and the number of steps.
- **Steps.** Each step with its number, status, time and any error.
- **Console errors** and **Failed requests.** The count is in the title. "None found." means the list is empty.
- **Evidence.** A link to the replay, or "Not recorded. Turn on Record a replay next time." A link to the full logs. The line "Links expire at …" says when the links stop working. Press **Get fresh links** after that.

Console errors and failed requests come from the session log, which is saved when the session ends. A report read while the session is still open has empty lists and says so in a note. See [Reading results](/qa-testing/reading-results#console-and-network-errors-come-from-the-session-log).

The report is the same one that `get_report` returns over MCP and `GET /v1/tasks/:id/report.json` returns over REST. See [The task report](/concepts/tasks#the-task-report).

## Next steps [#next-steps]

Under every finished task is a row of buttons.

| Button | What it does |
|---|---|
| Run again | Opens the Playground with the goal, engine and mode filled in. It does not run. A task that stopped at a limit comes back with that limit raised: 50 steps, or double the cost it had spent. The tooltip says which |
| View report | Opens the Report tab on that task |
| Save as skill | Greyed out. It is not available yet |
| Report a problem | Opens the feedback page with the task id, and how the task ended if it did not finish |

If the session knows its start page, Run again fills it in. A session that does not know it leaves the field empty.

## Recent goals [#recent-goals]

When you have run tasks, a **Recent goals** card lists your last five distinct goals, newest first, with the engine, the outcome and when it ran. Press **Use** to fill the goal, engine and mode. It does not fill the start page. A message offers **Undo**.

The Playground keeps your form while you move around in the same browser tab. Go to the session page and press Back, and your goal and settings are there. The form is cleared when you close the tab or sign out.

## Use it from code [#use-it-from-code]

The **Use it from code** card turns the form into code, and it updates as you change the form. The key is always `$WEBAGENT_API_KEY`. It never holds a real key. Create one on the API keys page. See [Quickstart](/quickstart).

**Claude Code or Codex**

Add the server once, then paste a prompt. The card has a **First time? Connect the server** fold with the command. The same steps are in [Claude Code](/qa-testing/claude-code) and [Codex CLI](/qa-testing/codex).

```text title="A prompt for the lookover-webagent server"
Use the lookover-webagent run_task tool. goal: "Open the page and tell me in one sentence what it is for.". startUrl: "https://example.com". Then call get_report with the task id and tell me the verdict and any failed steps.
```

The prompt carries over the start page, engine, Max steps, **Record a replay** and **Fill saved logins**. It adds `mode: "full_auto"` for Full auto.

- **Ask first** and **Plan first** are dashboard-only. An MCP call cannot answer a question, so the prompt uses Auto and says so. See [Modes](/concepts/tasks#modes).
- `run_task` has no argument for Max cost, Keep the login, browser, device, profile, region or proxy. A line under the prompt names the ones you set.

See [`run_task`](/mcp/tools#run_task) for every argument.

**cURL**

Three calls. The card fills in your goal and settings. Install `jq` first, because the script reads the session id, token and address from the reply.

```bash title="Open a browser, run a goal, close the browser"
# 1. Open a browser. The reply has the session id, a short-lived session token and its address.
SESSION=$(curl -s -X POST "https://api.us.webagent.lookover.ai/v1/sessions" \
  -H "Authorization: Bearer $WEBAGENT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"startUrl":"https://example.com"}')
SESSION_ID=$(echo "$SESSION" | jq -r .id)
SESSION_TOKEN=$(echo "$SESSION" | jq -r .token)
SESSION_HTTP=$(echo "$SESSION" | jq -r .endpoints.http)

# 2. Run the goal on it. This call uses the session token, not your API key, and stays open until the task ends.
curl -s -X POST "$SESSION_HTTP/tasks" \
  -H "Authorization: Bearer $SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"goal":"Open the page and tell me in one sentence what it is for."}'

# 3. Close the browser.
curl -s -X DELETE "https://api.us.webagent.lookover.ai/v1/sessions/$SESSION_ID" \
  -H "Authorization: Bearer $WEBAGENT_API_KEY"
```

The session token lasts 15 minutes. See [Sessions](/concepts/sessions#talk-to-a-live-session). A create call here has no queue, so with every browser busy it fails with `capacity_exceeded`. The dashboard's Run asks to be queued.

A **TypeScript SDK** tab is greyed out until the SDK has a method to run a goal.

## Deep links [#deep-links]

A link to the Playground can fill the form. It never runs the goal, so nobody starts a task by opening a link.

```text title="Fill the goal and the start page"
https://webagent.lookover.ai/playground?goal=Open%20the%20page%20and%20tell%20me%20what%20it%20is%20for&url=https%3A%2F%2Fexample.com
```

| Parameter | Fills | Values |
|---|---|---|
| `goal` | The goal | Text. URL-encode it |
| `url` | The start page | An address. The form checks it like typed text |
| `engine` | The engine | An engine id from your project. An unknown id shows a notice and keeps the default |
| `mode` | The mode | `auto`, `ask`, `plan` or `full_auto` |
| `maxSteps` | Max steps | A whole number from 1 to 50 |
| `maxCostUsd` | Max cost per task | A number in dollars |

A value that is not valid is left out. The other fields keep their values. Run again, **Try in Playground** on an engine and the Overview's **Run your first task** step all use this page.

A link that fills the form wins over what you had typed in the same tab.

## Related [#related]

- [Tasks](/concepts/tasks): Modes, limits and why a task stops.

- [Reading results](/qa-testing/reading-results): Every field of the report.

- [MCP tools](/mcp/tools): `run_task`, `smoke_test` and `get_report`.

- [Test a local app](/guides/local-apps): Reach an app on your machine with a tunnel.
