lua browser tries the agent’s browser from your terminal. lua browser read opens one page and prints it, like Browser.read. lua browser run gives the browser a task and prints each step as it happens, like Browser.execute. Both run on the platform with the agent you pushed, so you can check a page or a task before you write code for it.
lua browsers, plural, is a different command: it lists and deletes the agent’s named browsers. See lua browsers below.
Synopsis
Description
Both commands run against the agent inlua.skill.yaml, or the one named with --agent-id. They use that agent’s browser settings as pushed: engine, fallback, allowedDomains, confirmActions, and logContent. Changes in your local code apply only after lua push agent. The agent needs browser: true, or the command fails with BROWSER_DISABLED.
Your API key needs write access to the agent. With --agent-id the command does not need a project directory.
Every read and run writes rows to the agent’s logs on the dev channel, tagged with the environment from -e. Each command ends with a hint to read them:
lua browser read
Opens the URL in a new session, waits for--wait-for if given, prints the title, the final URL, the browser it ran on, and the content, then closes the session. When the page is a sign-in wall, it also prints Blocked: yes and what to do about it. The read has 60 seconds.
lua browser run
Starts the task and prints a line for each step as it arrives (step 3: click on https://heylua.ai/pricing), then the status, the number of steps, the cost, the browser it ran on, the final URL, and the output. A run that stops for an action in confirmActions prints Waiting for confirmation: and the action.
- A run has 5 minutes. The CLI stops waiting after 6 minutes and exits
1; readlua logs --type browserto see how far it got. Ctrl-Ccancels the run on the server, prints whether the server confirmed it, and exits130.- The command exits
1when the run did not complete, for example when it hit--max-stepsor--max-cost.
Limits
An agent runs at most 2 reads and runs from the CLI at a time. A third fails with429 and BROWSER_CLI_CONCURRENCY; wait for one to finish, or press Ctrl-C on it. A slot also frees itself within 6 minutes, so a closed terminal never holds one for long. A 503 with BROWSER_CLI_LIMITER_UNAVAILABLE means CLI runs are paused for a moment; try again shortly.
Arguments
Options
Output
lua browser read --json prints { engine, data, error?, code? }. data has the fields of a Browser.read result. A read the browser could not finish still exits 0 with --json; check error and code.
lua browser run --json prints { id, status, result } when the run ends, where result has the fields of a Browser.execute result. After Ctrl-C it prints { id, status: "cancelled", cancelled }.
Examples
Read a pricing page once it has finished loading:Exit codes
The full table is in Errors and exit codes.
lua browsers
lua browsers lists the named browsers pushed to the agent, one per line with its engine and allowed domains. lua browsers delete deletes one from the agent and removes it from lua.skill.yaml; remove it from the agent’s browsers list too, then push again. Named browsers are pushed with lua push browser --name <name> or lua push all.
delete without a name exits 2 and lists the agent’s browsers; an unknown name exits 3.

