
Security News
npm ‘is’ Package Hijacked in Expanding Supply Chain Attack
The ongoing npm phishing campaign escalates as attackers hijack the popular 'is' package, embedding malware in multiple versions.
We outperform all other web agents in speed, costs, and reliability
→ 🔥 Read more on open-operator-evals • X • LinkedIn • Landing • Console
Notte provides the full-stack web AI agents framework that allows you to develop, deploy, and scale your own agents, all with a single API. Transform the internet into an agent-friendly environment and websites into structured, navigable maps described in natural language. Read more on our documentation here 🔥
Key features:
We provide an easy to use API with our hosted version.
To run the above you'll need to sign up on the notte console and create a free notte API key 🔑
uv venv --python 3.11
source .venv/bin/activate
uv pip install notte-sdk
And spin up your crazy cool and dead simple agent on our remote machine:
import os
from notte_sdk import NotteClient
client = NotteClient(api_key=os.getenv("NOTTE_API_KEY"))
with client.Session(headless=False) as session:
agent = client.Agent(reasoning_model="gemini/gemini-2.0-flash", max_steps=5, session=session)
response = agent.run(task="doom scroll cat memes on google images")
Notte is composed of 3 main components that can be combined to build your own agentic system: notte.Session
, notte.Vault
and notte.Agent
.
You can use the notte.Session
to create a browser session with different stealth configurations (i.e browser types, proxies, captcha, etc), the notte.Vault
to store your credentials and the notte.Agent
to run your agent.
Here is an example of how to use these components together along with structured output:
from notte_sdk import NotteClient
from pydantic import BaseModel
class TwitterPost(BaseModel):
url: str
notte = NotteClient()
with notte.Vault() as vault, notte.Session(headless=False, proxies=False, browser_type="chrome") as session:
vault.add_credentials(
url="https://x.com",
username="your-email",
password="your-password",
)
agent = notte.Agent(session=session, vault=vault, max_steps=10)
response = agent.run(
task="go to twitter and post: new era this is @nottecore taking over my acc. Return the post url.",
response_format=TwitterPost,
)
print(response.answer)
We introduce a perception layer that transforms websites into structured, natural-language maps. This reduces parsing complexity, making it easier for LLMs to understand and act on web content.
The result: lower cognitive load, better accuracy, and support for smaller, faster models—cutting both inference time and production costs.
Rank | Provider | Agent Self-Report | LLM Evaluation | Time per Task | Task Reliability |
---|---|---|---|---|---|
🏆 | Notte | 86.2% | 79.0% | 47s | 96.6% |
2️⃣ | Browser-Use | 77.3% | 60.2% | 113s | 83.3% |
3️⃣ | Convergence | 38.4% | 31.4% | 83s | 50% |
Read the full story here: https://github.com/nottelabs/open-operator-evals
Notte's full stack agentic internet framework combines core browser infrastructure (sessions, live replay, cdp) with intelligent browsing agents, bridged and enhanced with our perception layer. Our entire codebase is made to be highly customizable, ready to integrate other devtools from the ecosystem and packaged to be push to prod. We also provide web scripting capabilities and sota scraping endpoints out of the box, because why not.
⏭️ We have either already partially shipped or are working on the following features: captcha resolution, residential proxies, web security, vpn-style browsing, authentication and payments with secure safe, improved speed and memory, human-in-the-loop integration, channeled notifications, and cookies management.
You will need to install the dependencies and bring your own keys:
uv venv --python 3.11
source .venv/bin/activate
uv pip install notte
uv run patchright install --with-deps chromium
Then add your LLM provider API keys in a .env
import notte
with notte.Session(headless=False) as session:
agent = notte.Agent(reasoning_model="gemini/gemini-2.0-flash", max_steps=5, session=session)
response = agent.run(task="doom scroll cat memes on google images")
Setup your local working environment;
uv sync --all-extras --dev
uv run patchright install --with-deps chromium
uv run pre-commit install
Find an issue, fork, open a PR, and merge :)
This project is licensed under the Server Side Public License v1. See the LICENSE file for details.
If you use notte in your research or project, please cite:
@software{notte2025,
author = {Pinto, Andrea and Giordano, Lucas and {nottelabs-team}},
title = {Notte: Software suite for internet-native agentic systems},
url = {https://github.com/nottelabs/notte},
year = {2025},
publisher = {GitHub},
license = {SSPL-1.0}
version = {1.4.4},
}
Copyright © 2025 Notte Labs, Inc.
FAQs
Notte, the full-stack web AI agent framework
We found that notte demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
The ongoing npm phishing campaign escalates as attackers hijack the popular 'is' package, embedding malware in multiple versions.
Security News
A critical flaw in the popular npm form-data package could allow HTTP parameter pollution, affecting millions of projects until patched versions are adopted.
Security News
Bun 1.2.19 introduces isolated installs for smoother monorepo workflows, along with performance boosts, new tooling, and key compatibility fixes.