Skip to main content

NARADA AI Logo.

Computer Use for Agentic Process Automation!

Sign Up Documentation Twitter Follow LinkedIn Follow

The official Narada Python SDK that helps you launch browsers and run tasks with Narada UI agents.

Installation

pip install narada

Quick Start

Important: The first time Narada opens the automated browser, you will need to manually install the Narada Enterprise extension and log in to your Narada account.

After installation and login, create a Narada API Key (see this link for instructions) and set the following environment variable:

export NARADA_API_KEY=<YOUR KEY>

That's it. Now you can run the following code to create a browser environment and ask an agent to download a file for you from arxiv:

import asyncio

from narada import Agent, AgentKind, BrowserEnvironment


async def main() -> None:
    # Create the browser environment. It initializes lazily on the first action.
    env = BrowserEnvironment()
    agent = Agent(environment=env)
    mini_agent = Agent(environment=env, kind=AgentKind.OPERATOR_MINI)

    try:
        # Run a task in this browser environment.
        response = await agent.run(
            prompt='Search for "LLM Compiler" on Google and open the first arXiv paper on the results page, then open the PDF. Then download the PDF of the paper.',
            # Optionally generate a GIF of the agent's actions.
            generate_gif=True,
        )

        print("Response:", response.model_dump_json(indent=2))

        # Use the product's lower-cost tier when appropriate.
        mini_response = await mini_agent.run(prompt="Summarize the completed task.")
        print("Mini response:", mini_response.model_dump_json(indent=2))
    finally:
        await env.close()


if __name__ == "__main__":
    asyncio.run(main())

AgentKind.OPERATOR_MINI and AgentKind.CORE_AGENT_MINI select the lower-cost Mini variants of their respective product agents. Named Agent Studio workflows continue to use their persisted Agent steps.

This would then result in the following trajectory:

File Download Example

You can use the SDK to launch browsers and run automated tasks using natural language instructions. For more examples and code samples, please explore the examples/ folder in this repository.

Migration note

This version introduces a non-backward-compatible, agent-centered API:

  • Create an execution target with an environment, such as BrowserEnvironment, CloudBrowserEnvironment, RemoteBrowserEnvironment, or LambdaEnvironment.
  • Create an Agent(environment=env, kind=...) and call await agent.run(prompt=...).
  • Browser actions such as go_to_url, agentic_selector, and sheet operations are now methods on Agent.
  • Environments keep lifecycle/bookkeeping APIs such as start(), close(), browser_window_id, and cloud_browser_session_id.

Features

  • Natural Language Control: Send instructions in plain English to control browser actions
  • Parallel Execution: Run multiple browser tasks simultaneously across different windows
  • Error Handling: Built-in timeout handling and retry mechanisms
  • Action Recording: Generate GIFs of agent actions for debugging and documentation
  • Async Support: Full async/await support for efficient operations

Key Capabilities

  • Web Search & Navigation: Automatically search, click links, and navigate websites
  • Data Extraction: Extract information from web pages using AI understanding
  • Form Interaction: Fill out forms and interact with web elements
  • File Operations: Download files and handle web-based documents
  • Vector Stores: Discover managed Agent Studio stores or attach an Amazon Bedrock Knowledge Base
  • Multi-window Management: Coordinate tasks across multiple browser instances

Vector Stores

Attach a managed Agent Studio vector store to an agent run without copying its provider-side ID:

Managed vector-store paths are canonical and owner-qualified, using the format /owner@email.com/path/to/store.

env = BrowserEnvironment()
store = await env.vector_stores.get(
    path="/owner@example.com/Knowledge/Product documentation"
)
response = await Agent(environment=env, kind=AgentKind.PRODUCTIVITY).run(
    "Answer from the attached knowledge base and cite source filenames.",
    vector_stores=[store],
)

See the managed and external examples in examples/04_extending_the_agent/.

Logging

The SDK logs through standard logging loggers named after its modules, such as narada.environment, all under the narada logger. It installs no handlers and leaves levels and propagation alone, so Narada records go wherever your application's logging configuration sends them. Without any configuration, Python prints warnings and errors to stderr.

To print Narada logs as [narada.<module>.<function>:<line>] <message>, call enable_logging:

import logging

import narada

narada.enable_logging(logging.DEBUG)

If your application configures logging itself, Narada records propagate to its handlers. Pass narada.LOG_FORMAT to your formatter to use the same format there:

logging.basicConfig(level=logging.INFO, format=narada.LOG_FORMAT)
logging.getLogger("narada").setLevel(logging.DEBUG)

Use one approach or the other: enable_logging adds its own handler, so combining it with root handlers prints each Narada record twice.

Time profiling

At DEBUG level, the SDK logs how long each high-level step took, such as launching Chrome, connecting over CDP, waiting for the Narada extension, submitting an agent request, and waiting for its result:

[narada.environment._launch_browser_once:1515] Time profile: action=start phase=launch_chrome outcome=ok elapsed_ms=412
[narada.environment._initialize_launched_browser:1585] Time profile: action=start phase=connect_cdp attempt=1 outcome=ok elapsed_ms=96
[narada.environment._ensure_initialized:697] Time profile: action=start phase=total environment=BrowserEnvironment outcome=ok elapsed_ms=6184
[narada.environment._dispatch_request:1035] Time profile: action=agent_run phase=wait_for_completion request_id=... outcome=ok elapsed_ms=41230

action is the SDK operation (start, agent_run, extension_action, or close), phase is the step within it, and outcome is ok or the name of the exception that ended the step. Each record also carries these values as a narada_time_profile dictionary attribute for structured log handlers.

License

This project is licensed under the Apache 2.0 License.

Support

For questions, issues, or support, please contact: support@narada.ai

Citation

We appreciate it if you could cite Narada if you found it useful for your project.

@software{narada_ai2025,
  author = {Narada AI},
  title = {Narada AI: Agentic Process Automation for Enterprise},
  year = {2025},
  publisher = {GitHub},
  url = {https://github.com/NaradaAI/narada-python-sdk}
}
Made with ❤️ in Berkeley, CA.

Metadata

Release files for narada 0.2.19

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for narada 0.2.19
File Size Uploaded Provenance Actions
narada-0.2.19.tar.gz 63.2 kB Without provenance Details for narada-0.2.19.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for narada 0.2.19
File Interpreter ABI Platform Actions
narada-0.2.19-py3-none-any.whl Python 3 none any Details for narada-0.2.19-py3-none-any.whl

Total release size: 103.1 kB

Release files / narada-0.2.19.tar.gz

Download URL narada-0.2.19.tar.gz
Size 63.2 kB
Tags Source
SHA-256 checksum
How to use checksums
e9c5a1afcdab4de616b7e3daab19c6ed54aac9126a62ab93deb17fad88efae4e
BLAKE2b-256 checksum
How to use checksums
44aabee23aff65c74b5f90188c66e844e7a6d3eee1b0f2f301816799036e5921
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / narada-0.2.19-py3-none-any.whl

Download URL narada-0.2.19-py3-none-any.whl
Size 40.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
be7c02a3be809b82fd2d59c73fc970ab69714cacda32aea9d287c81fdd473f64
BLAKE2b-256 checksum
How to use checksums
617b4324e7bf5ceea7106cfd97dada6755a483cae35498fcddf9b486c1f627c7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for narada 0.2.19

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.2.19 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page