Nova Act is a Python SDK for agents that complete repetitive user-interface work in a browser and hand off to a human supervisor when a step needs judgment. You write the task as natural-language act() calls and orchestrate them with ordinary Python code; the SDK drives Chrome or Chromium through Playwright and needs Python 3.10 or above. Workflows can be explored in a hosted playground, developed in an IDE, deployed to AWS, and monitored from the console.
Prompting guidance is explicit: keep each act direct, spell out every choice and form value, and split long tasks into stages joined in code, because runs are most reliable under about 30 steps. actget() returns a response validated against a Pydantic JSON schema, with STRING_SCHEMA and BOOL_SCHEMA provided for simple answers.
A Workflow context manager, or the equivalent @workflow decorator, ties every session, act, and step to a named workflow definition in the AWS service, calling the run APIs at start and finish. Boto retry counts and read timeouts are configurable, credentials come from an API key or IAM, and a CLI packages Python workflows for AgentCore Runtime, handling containerization, Amazon Elastic Container Registry (ECR), IAM roles, and multi-region deployment. Multiple sessions run in parallel from separate NovaAct instances.
Human-in-the-loop support is implemented in the SDK by extending HumanInputCallbacksBase: approve sends a screenshot to a reviewer for an approve, reject, or multiple-choice decision, and ui_takeover streams the live browser to an operator who takes mouse and keyboard control, for logins or CAPTCHAs. Tools beyond the browser are Python functions marked with @tool, or MCP tools supplied through a Strands Agents MCP client; a tool that needs direct browser access sets requires_unlocked_actuator_context.
Browser state persists through one of four providers, which differ in what they keep and where:
| Option | Cookies | Local storage | Other browser data | Shareable across machines | Encrypted |
|---|---|---|---|---|---|
| Local file | Saved and restored | Saved, opt-in restore | Not captured | No | No (0o600 permissions) |
| S3 | Saved and restored | Saved, opt-in restore | Not captured | Yes | Yes (SSE-KMS) |
| AgentCore profiles | Saved and restored | Saved and restored | Not captured | Yes | Yes (managed) |
| Chromium profile | Persisted | Persisted | IndexedDB, cache, extensions | No | No |
Security defaults are restrictive and opened deliberately: SecurityOptions allowlists the file paths the agent may open or upload, and a state-guardrail callback inspects the browser URL after each observation and raises ActStateGuardrailError when it blocks. Passwords are typed through Playwright rather than passed to the model. Errors are grouped into agent, execution, client, and server classes so a caller knows which are worth retrying.
Features
- Natural-language acts: browser steps described in prose and sequenced with Python control flow
- Schema-typed extraction: act_get() returns page data validated against a Pydantic JSON schema
- Managed workflows: a context manager or decorator binds runs to a workflow definition in the AWS service
- Deployment CLI: packages Python workflows for AgentCore Runtime, including ECR, IAM, and multi-region setup
- Human in the loop: approval callbacks and live UI takeover of a remote browser session
- Tool use beyond the browser: @tool-decorated Python functions and MCP tools via a Strands Agents client
- Parallel sessions: several NovaAct instances drive separate browsers concurrently
- Session persistence: local file, S3, AgentCore browser profiles, or a Chromium profile directory
- Security options: allowlisted file open and upload paths, URL state guardrails, and sensitive input typed via Playwright
- Observability: console logs, traces, session video recording, and session data stored in an S3 bucket
