<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: nottelabs</title>
    <description>The latest articles on DEV Community by nottelabs (@nottelabs).</description>
    <link>https://dev.to/nottelabs</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3050805%2F602adbd6-5254-4002-84f4-5f9b1855030d.jpg</url>
      <title>DEV Community: nottelabs</title>
      <link>https://dev.to/nottelabs</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nottelabs"/>
    <language>en</language>
    <item>
      <title>Observability: Beautiful Visibility Into Every Automation Session</title>
      <dc:creator>nottelabs</dc:creator>
      <pubDate>Fri, 27 Feb 2026 17:13:47 +0000</pubDate>
      <link>https://dev.to/nottelabs/observability-beautiful-visibility-into-every-automation-session-56p3</link>
      <guid>https://dev.to/nottelabs/observability-beautiful-visibility-into-every-automation-session-56p3</guid>
      <description>&lt;p&gt;Observability transforms your browser automations into clear, interactive visualisations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Observability?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every CDP event, including WebSocket-based Playwright sessions, is captured and replayable in the Console. Step through execution, inspect logs, and follow the full timeline exactly as it happened.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-world examples&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Failed login automation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your Playwright script fails to authenticate. Instead of guessing, step through the exact CDP events to see where the selector broke or the form submission timed out.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Headless scraping errors&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A headless scraper randomly fails on certain pages. The full timeline shows the navigation flow, what elements were clicked, and where the automation stalled. No local reproduction needed.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multi-step workflow debugging&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A 20-step workflow fails intermittently. Step through the complete execution and pinpoint exactly where and why it broke.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Agent behaviour auditing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Verify what your agents extracted and which actions they performed. The full timeline gives you a complete audit trail of every session.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it matters&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most browser automations run headless. Without visibility into these sessions, debugging is guesswork. Observability gives you the same clarity for programmatic sessions that you have for Console-driven ones.&lt;/p&gt;

&lt;p&gt;Debug faster and ship with confidence.&lt;/p&gt;

&lt;p&gt;Build now at &lt;a href="https://console.notte.cc" rel="noopener noreferrer"&gt;https://console.notte.cc&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>devops</category>
      <category>automation</category>
    </item>
    <item>
      <title>Anything API: Turn Any Browser Workflow into a Production-Ready API</title>
      <dc:creator>nottelabs</dc:creator>
      <pubDate>Thu, 26 Feb 2026 19:54:57 +0000</pubDate>
      <link>https://dev.to/nottelabs/anything-api-turn-any-browser-workflow-into-a-production-ready-api-hnb</link>
      <guid>https://dev.to/nottelabs/anything-api-turn-any-browser-workflow-into-a-production-ready-api-hnb</guid>
      <description>&lt;p&gt;Give us the task. We engineer the skill.&lt;/p&gt;

&lt;p&gt;Browser automation works for any site. But if you're running the same workflow repeatedly, you shouldn't have to keep running the browser.&lt;/p&gt;

&lt;p&gt;Anything API turns any browser workflow into a production-ready API automatically. Describe what you need done, and our agent builds the custom Notte Function for you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Anything API?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most websites don't have public APIs. If you want to extract data or automate workflows, you control a browser by navigating pages, clicking elements, scraping content.&lt;/p&gt;

&lt;p&gt;Anything API handles that entire process for you. Describe the task. Our agent figures out how to execute it, builds the workflow, and ships a Notte Function that calls the site directly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it works&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Describe what you need done. Anything API runs a browser session to work out the workflow, then generates a callable API you can deploy immediately. Authentication, headers, request formatting are all handled. You just call the function.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One description. A deployed function.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The initial session does the work of figuring out how to automate the task. Every subsequent run calls directly, meaning no browser overhead, faster execution, and lighter infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deploy as a Notte Function&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The output is a Notte Function. Deploy it serverless, schedule it on cron, or call it via API. The same infrastructure that runs your browser automations now runs the workflows we build for you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it matters&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the fastest way to create APIs for sites that don't have one. Describe the task. We engineer the skill.&lt;/p&gt;

&lt;p&gt;Try it now: &lt;a href="https://anything.notte.cc/" rel="noopener noreferrer"&gt;https://anything.notte.cc/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=WA7Fq5bU3pY" rel="noopener noreferrer"&gt;Watch a demo&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>devops</category>
      <category>automation</category>
    </item>
    <item>
      <title>Session Files: Agents That Handle Files Automatically</title>
      <dc:creator>nottelabs</dc:creator>
      <pubDate>Thu, 26 Feb 2026 17:39:50 +0000</pubDate>
      <link>https://dev.to/nottelabs/session-files-agents-that-handle-files-automatically-2ag6</link>
      <guid>https://dev.to/nottelabs/session-files-agents-that-handle-files-automatically-2ag6</guid>
      <description>&lt;p&gt;Agents tend to break when they need to download reports or upload documents. File operations require manual intervention or complex workarounds.&lt;/p&gt;

&lt;p&gt;Session Files fixes this.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What are Session Files?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Notte agents can now handle file operations automatically. Download files, upload documents, and process files within your automation workflows. Every file operation has full visibility and debugging in the Console. See what files were downloaded, track upload progress, and inspect file contents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use cases&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Form automation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Upload resumes to job applications, submit tax documents, attach files to support tickets. Agents handle the full workflow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Document processing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Download invoices from vendor portals, extract data, and upload to accounting systems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Report generation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Download reports from analytics dashboards, process the data, and forward to stakeholders. Automated end-to-end.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data extraction&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Download PDFs from internal tools, scrape structured data, and push to your database. Files in, data out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it matters&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most workflows don't end at the browser. They involve files. Session Profiles handle authentication, Session Files handles I/O. Your agents can now automate document processing, form submissions, and report generation end-to-end.&lt;/p&gt;

&lt;p&gt;File I/O is now a first-class primitive in browser automation.&lt;/p&gt;

&lt;p&gt;Test it out: &lt;a href="https://console.notte.cc/" rel="noopener noreferrer"&gt;console.notte.cc&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>devops</category>
      <category>automation</category>
    </item>
    <item>
      <title>Cryptographically Verified AI Agents: Notte Integrates with Fingerprint Web Bot Auth</title>
      <dc:creator>nottelabs</dc:creator>
      <pubDate>Wed, 25 Feb 2026 14:54:22 +0000</pubDate>
      <link>https://dev.to/nottelabs/notte-x-fingerprint-1a37</link>
      <guid>https://dev.to/nottelabs/notte-x-fingerprint-1a37</guid>
      <description>&lt;p&gt;Notte is partnering with Fingerprint to make sure good actors are never mistaken for bad bots: here's why that matters.&lt;/p&gt;

&lt;p&gt;Good actors are being mistaken for bad bots. AI agents get blocked constantly, not because they're doing anything wrong, but because websites have no way to tell them apart from malicious scrapers.&lt;/p&gt;

&lt;p&gt;Platforms like Fingerprint, used by thousands of websites, analyse signals like browser attributes, cursor movements, and network behaviour to classify every visitor into one of three buckets: human, good bot, or bad bot. Good bots are verified crawlers and legitimate AI agents. Bad bots are scrapers stealing data, credential stuffers hijacking accounts, spam tools. The problem is that without any proof of identity, a legitimate AI agent looks identical to a bad bot. So the default is to block anything automated.&lt;/p&gt;

&lt;p&gt;Web Bot Auth was built to fix this, and Fingerprint adopted it into their platform. Legitimate agents register in Fingerprint’s Bot Directory, and from that point on every request they make carries a signed identity that websites can verify in real time. It works on top of cryptographic HTTP message signatures (essentially a verified passport for bots).&lt;/p&gt;

&lt;p&gt;Notte has completed that registration. Our commitment to responsible automation: every Notte request is now cryptographically signed and automatically recognised as verified across any site running Fingerprint's detection.&lt;/p&gt;

&lt;p&gt;Learn more: &lt;a href="https://www.notte.cc/" rel="noopener noreferrer"&gt;notte.cc&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Build: &lt;a href="https://console.notte.cc/" rel="noopener noreferrer"&gt;console.notte.cc&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>security</category>
      <category>devops</category>
    </item>
    <item>
      <title>Session Profiles: Persistent Authentication for Browser Agents</title>
      <dc:creator>nottelabs</dc:creator>
      <pubDate>Wed, 25 Feb 2026 14:52:21 +0000</pubDate>
      <link>https://dev.to/nottelabs/session-profiles-persistent-authentication-for-browser-agents-3e6b</link>
      <guid>https://dev.to/nottelabs/session-profiles-persistent-authentication-for-browser-agents-3e6b</guid>
      <description>&lt;p&gt;Browser agents re-authenticate on every run because session state doesn't persist. This breaks workflows that rely on logged-in sessions.&lt;/p&gt;

&lt;p&gt;Session Profiles solve this.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What are Session Profiles?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Session Profiles save browser state (cookies, cache, and local storage) so your agents stay authenticated across sessions. Log in once manually, and every subsequent session with that profile starts already authenticated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it works&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Bootstrap a session profile using demonstration mode. Log in to LinkedIn, Gmail, or any authenticated service in a headful browser. Stop the session. All the state persists in storage.&lt;/p&gt;

&lt;p&gt;Start a new session with the same profile, and your agent is already logged in. No re-authentication. No manual intervention.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it matters&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most valuable web data sits behind login walls. Session Profiles let your agents automate authenticated workflows at scale. Scrape private dashboards, manage SaaS accounts, monitor internal tools.&lt;/p&gt;

&lt;p&gt;Authenticate once. Automate everything after.&lt;/p&gt;

&lt;p&gt;Automate seamlessly: &lt;a href="https://console.notte.cc/" rel="noopener noreferrer"&gt;console.notte.cc&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Watch Nottelabs CTO Lucas Giordano walk through how to bootstrap and manage persistent authentication for browser agents &lt;a href="https://www.youtube.com/watch?v=hNmpOHUVRPk" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>devops</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Browser Automation from Your Terminal</title>
      <dc:creator>nottelabs</dc:creator>
      <pubDate>Mon, 23 Feb 2026 18:28:23 +0000</pubDate>
      <link>https://dev.to/nottelabs/notte-cli-browser-automation-from-your-terminal-1faf</link>
      <guid>https://dev.to/nottelabs/notte-cli-browser-automation-from-your-terminal-1faf</guid>
      <description>&lt;p&gt;We built the Notte Console so you could prototype, debug, and deploy browser automations in one environment.&lt;/p&gt;

&lt;p&gt;Now you can control everything from your terminal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Notte CLI?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Notte CLI brings full browser automation control to the command line. Start sessions, navigate pages, click elements, run AI agents, and scrape data; all without leaving your terminal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Features&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI agents - run and monitor AI-powered browser functions&lt;/li&gt;
&lt;li&gt;Browser sessions - headless or headed Chrome/Firefox with full control&lt;/li&gt;
&lt;li&gt;Files - upload and download files to notte.cc&lt;/li&gt;
&lt;li&gt;Output formats - human-readable text or JSON for scripting&lt;/li&gt;
&lt;li&gt;Personas - create and manage digital identities with email, phone, and SMS&lt;/li&gt;
&lt;li&gt;Secure credentials - system keyring for API keys, vaults for website passwords&lt;/li&gt;
&lt;li&gt;Web scraping - structured data extraction with custom schemas&lt;/li&gt;
&lt;li&gt;Functions - schedule and execute repeatable automation tasks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How it works&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Start a browser session
notte sessions start

# Navigate and interact
notte page goto "https://..."
notte page observe
→ B1, B2, I1...

notte page click B3
notte page scrape --instructions "..."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Need to see what's happening? &lt;code&gt;notte sessions viewer&lt;/code&gt; opens the Console instantly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it matters&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Browser automations now fit into your existing workflows. Terminal + Console means you can build however you work best.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Get started&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Notte CLI: &lt;a href="https://github.com/nottelabs/notte-cli" rel="noopener noreferrer"&gt;https://github.com/nottelabs/notte-cli&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Full documentation: &lt;a href="https://docs.notte.cc/" rel="noopener noreferrer"&gt;https://docs.notte.cc/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=Ug0kNqjZ0uc" rel="noopener noreferrer"&gt;Watch Lucas, Nottelab's Founder &amp;amp; CTO, walk you through how to use it.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>automation</category>
      <category>opensource</category>
    </item>
    <item>
      <title>The Hidden Cost of Bot Detection</title>
      <dc:creator>nottelabs</dc:creator>
      <pubDate>Fri, 16 Jan 2026 12:32:53 +0000</pubDate>
      <link>https://dev.to/nottelabs/the-hidden-cost-of-bot-detection-4h96</link>
      <guid>https://dev.to/nottelabs/the-hidden-cost-of-bot-detection-4h96</guid>
      <description>&lt;p&gt;&lt;strong&gt;What happens when the very systems designed to protect websites end up blocking the good guys?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Our browser automation experience tells us the reality is far more complex than most people realise. When detection systems flag legitimate users by mistake, false positives can cause friction that slows down real customers and can drive away loyal customers if not handled carefully.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bot Detection Paradox
&lt;/h2&gt;

&lt;p&gt;We live in an age where automated bot traffic has surpassed human-generated traffic for the first time in a decade, constituting &lt;strong&gt;51% of all web traffic in 2024&lt;/strong&gt;. Even more concerning, bad bots account for &lt;strong&gt;37%&lt;/strong&gt; of internet traffic.&lt;/p&gt;

&lt;p&gt;So naturally, companies are scrambling to implement bot detection systems. This, however, causes issues. The same systems that catch malicious bots are increasingly catching legitimate automation tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Research crawlers collecting public data for academic studies&lt;/li&gt;
&lt;li&gt;Price monitoring tools helping consumers find better deals&lt;/li&gt;
&lt;li&gt;SEO audit tools analysing website performance&lt;/li&gt;
&lt;li&gt;Accessibility tools helping disabled users navigate the web&lt;/li&gt;
&lt;li&gt;Business intelligence gathering for competitive analysis&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;SEO teams coordinating with third-party crawlers (like SEO audit tools that use Googlebot user agents) communicate with security teams to prevent false positives and ensure legitimate business activities aren't blocked.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The False Positive Nightmare
&lt;/h2&gt;

&lt;p&gt;Let's paint a picture of what false positives look like in the real world.&lt;/p&gt;

&lt;p&gt;For example, a user being blocked from accessing their bank account or a social media business account because they are unjustly being considered a bot when they are travelling because of the frequency of requests or the location the request comes from.&lt;/p&gt;

&lt;p&gt;But it's not just individual users. Legitimate businesses using automation for perfectly valid reasons are getting hammered:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Market researchers&lt;/strong&gt; trying to gather pricing data for competitive analysis&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Travel aggregators&lt;/strong&gt; checking flight availability across multiple airlines&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;News monitoring services&lt;/strong&gt; tracking mentions for PR teams&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Academic researchers&lt;/strong&gt; studying online discourse and social patterns&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Good Actors Get Flagged
&lt;/h2&gt;

&lt;p&gt;The technical reality is that bot detection systems look for patterns. And sometimes, legitimate automation exhibits patterns that look suspicious:&lt;/p&gt;

&lt;h3&gt;
  
  
  Speed and Efficiency
&lt;/h3&gt;

&lt;p&gt;Power users who click, type, or switch pages rapidly mimic bot speed. If you're a marketer checking 20 product pages in a minute, you might trip the same alarms as a malicious scraper.&lt;/p&gt;

&lt;h3&gt;
  
  
  Network Infrastructure
&lt;/h3&gt;

&lt;p&gt;VPNs route traffic through shared servers, often used by bots too. If your IP is tied to heavy traffic or a bot-heavy region, you're flagged.&lt;/p&gt;

&lt;h3&gt;
  
  
  Browser Fingerprinting
&lt;/h3&gt;

&lt;p&gt;Modern bot detection analyses &lt;strong&gt;70+ signals&lt;/strong&gt; including canvas rendering, WebGL properties, audio API responses, and hardware specifications. A significant fraction of fingerprinting attributes are specially crafted challenges that aim to detect the presence of automation frameworks and headless browsers linked to bots. The problem? Many legitimate tools use these same frameworks.&lt;/p&gt;

&lt;h3&gt;
  
  
  Geographic Anomalies
&lt;/h3&gt;

&lt;p&gt;Travelling abroad or using a VPN to access a site from a new region clashes with your usual profile, raising suspicion.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Business Impact
&lt;/h2&gt;

&lt;p&gt;This isn't just a technical problem. It's a business problem with real costs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Lost Revenue:&lt;/strong&gt; When legitimate customers can't access services, conversion drops are measurable and immediate. DataDome's implementation of Device Check reduced false positives by 80% for one luxury brand, demonstrating that even industry leaders struggle with this balance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compliance Issues:&lt;/strong&gt; For marketing and sales teams dealing with lead fraud, TrustedForm Bot Detection delivers clear, measurable value by removing leads that may not meet TCPA consent requirements due to non-human submission. For lead generation companies, TCPA violations cost &lt;strong&gt;£400-£1,200 per incident&lt;/strong&gt;. False negatives (missing bots) can result in compliance penalties, whilst false positives (blocking legitimate leads) directly reduce revenue.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Operational Overhead:&lt;/strong&gt; The massive resources required to manage false positives drain technical teams.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Innovation Stifling:&lt;/strong&gt; Companies afraid to implement automation that might get blocked hold back progress.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Arms Race Nobody Wins
&lt;/h2&gt;

&lt;p&gt;Here's what's particularly frustrating: sophisticated attacks create a tradeoff where aggressive blocking risks false positives against legitimate users, whilst permissive rules let sophisticated bots through.&lt;/p&gt;

&lt;p&gt;We're stuck in this endless cycle:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Bot detection gets more aggressive&lt;/li&gt;
&lt;li&gt; Legitimate tools get caught in the crossfire&lt;/li&gt;
&lt;li&gt; Good actors have to implement workarounds&lt;/li&gt;
&lt;li&gt; Those workarounds make them look more like bad actors&lt;/li&gt;
&lt;li&gt; Detection systems get even more aggressive&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Why Good Actors Need Stealth Today
&lt;/h2&gt;

&lt;p&gt;Here's the uncomfortable truth: in today's broken ecosystem, proving you're legitimate often makes you look like you're evading detection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Legitimacy Trap:&lt;/strong&gt; Bot detection vendors face an impossible tradeoff: aggressive blocking creates false positives against legitimate users, whilst permissive rules let sophisticated bots through. Many vendors operate at &lt;strong&gt;0.75% false positive rates&lt;/strong&gt; (75 times higher than the 0.01% ideal) because tighter thresholds would block too many paying customers.&lt;/p&gt;

&lt;p&gt;The paradox is stark: good actors need defensive capabilities not because they want to be deceptive, but because the current detection ecosystem gives them no choice.&lt;/p&gt;

&lt;p&gt;At Notte, we provide anti-detection capabilities today because websites' broken detection systems require it. But we're also actively working towards a future where such capabilities won't be necessary.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Path to Mutual Benefit
&lt;/h2&gt;

&lt;p&gt;The reality is that both sides want the same thing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Websites want to protect their resources and users from malicious activity.&lt;/li&gt;
&lt;li&gt;Legitimate automation wants to provide value without causing harm.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The current approach of aggressive blocking hurts everyone. The ideal false positive rate is 0.01%, far below some vendors' 0.75%. Yet many systems operate with false positive rates 75 times higher than ideal.&lt;/p&gt;

&lt;h3&gt;
  
  
  Real Solutions for Real Problems
&lt;/h3&gt;

&lt;p&gt;Here's what actually works:&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Intent-Based Detection
&lt;/h4&gt;

&lt;p&gt;Instead of just looking at behaviour patterns, systems need to understand intent. A price comparison bot checking 100 products has very different intent than a bot trying to buy up limited inventory. DataDome and other leading vendors are pioneering intent-based detection approaches that analyse &lt;em&gt;why&lt;/em&gt; automation is happening, not just &lt;em&gt;that&lt;/em&gt; it's happening. This represents a fundamental shift from pattern matching to purpose understanding.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Reputation Systems
&lt;/h4&gt;

&lt;p&gt;Detection engines can maintain a user reputation based on previous user activity. The reputation can be impacted positively or negatively depending on the age of the account, the activity pattern, and whether or not some previous bot activity was observed with the user.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Adaptive Responses
&lt;/h4&gt;

&lt;p&gt;Not every bot needs to be blocked. Some just need to be rate-limited or guided to use official APIs. Solutions like intelligent rate limiting and progressive friction provide graduated responses rather than binary block/allow decisions.&lt;/p&gt;

&lt;h4&gt;
  
  
  4. Cryptographic Verification Standards
&lt;/h4&gt;

&lt;p&gt;The most promising development is the emergence of cryptographic bot verification. OpenAI has begun signing all Operator requests using &lt;strong&gt;HTTP Message Signatures (RFC 9421)&lt;/strong&gt;, allowing site owners to verify requests genuinely originate from their infrastructure without relying on brittle IP allowlists.&lt;/p&gt;

&lt;p&gt;This approach, co-developed by OpenAI and Cloudflare as the &lt;strong&gt;Web Bot Auth&lt;/strong&gt; standard, uses cryptographic signatures to verify bot identity. Bot operators publish public keys at &lt;code&gt;/.well-known/http-message-signatures-directory&lt;/code&gt;, and requests include signed headers that websites can verify.&lt;/p&gt;

&lt;p&gt;The benefits over traditional IP-based allowlists are clear:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No infrastructure dependencies:&lt;/strong&gt; You don't need to maintain up-to-date lists of IP ranges.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tamper resistance:&lt;/strong&gt; Signatures are tied to request content and timestamp, making them impossible to forge.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexible deployment:&lt;/strong&gt; Bot identity is verified at the application layer, even if requests are routed through proxies or CDNs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cloudflare has integrated this directly into their Verified Bots program, and the IETF has established a working group to develop these standards further.&lt;/p&gt;

&lt;h4&gt;
  
  
  5. Human Override Capabilities
&lt;/h4&gt;

&lt;p&gt;Under &lt;strong&gt;GDPR Article 22&lt;/strong&gt;, data subjects have the right not to be subject to solely automated decisions that produce legal or similarly significant effects. When bot detection systems automatically block account access without human review capability, they may violate GDPR's requirement for human intervention rights. This frames aggressive bot detection as a regulatory risk, which organisations must address.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Future We're Building
&lt;/h2&gt;

&lt;p&gt;At Notte we envision a future where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Legitimate automation can operate without fear of being blocked.&lt;/li&gt;
&lt;li&gt;Websites can protect themselves without collateral damage.&lt;/li&gt;
&lt;li&gt;Good actors can prove their legitimacy without compromising their capabilities.&lt;/li&gt;
&lt;li&gt;The internet remains open for innovation whilst being protected from abuse.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This isn't just about technology. It's about changing the conversation from &lt;em&gt;"how do we block bots?"&lt;/em&gt; to &lt;em&gt;"how do we enable good automation whilst stopping bad actors?"&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Notte's Approach: Defence Today, Standards Tomorrow
&lt;/h3&gt;

&lt;p&gt;We're not just building better anti-detection technology. We're building a better approach to the entire problem. Yes, we provide sophisticated stealth capabilities, but we recognise these are defensive measures necessitated by today's broken ecosystem.&lt;/p&gt;

&lt;p&gt;Our anti-detection playbook helps legitimate automation work respectfully by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Implementing intelligent rate limiting to minimise server load&lt;/li&gt;
&lt;li&gt;Respecting &lt;code&gt;robots.txt&lt;/code&gt; directives where appropriate&lt;/li&gt;
&lt;li&gt;Providing configuration options for self-identification&lt;/li&gt;
&lt;li&gt;Building retry logic that backs off rather than hammers servers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As the ecosystem evolves towards intent-based detection and cryptographic verification standards like Web Bot Auth, Notte will enable our users to self-identify for legitimate use cases.&lt;/p&gt;

&lt;h2&gt;
  
  
  Moving Forward Together
&lt;/h2&gt;

&lt;p&gt;The current state of bot detection is broken. But it doesn't have to stay that way.&lt;/p&gt;

&lt;p&gt;The question isn't whether we need bot detection. We absolutely do. The question is how we implement it in a way that protects without destroying legitimate use cases.&lt;/p&gt;

&lt;p&gt;The emergence of standards like Web Bot Auth shows the path forward. When OpenAI signs requests cryptographically, when Cloudflare verifies those signatures at the edge, when developers can implement transparent automation that proves its identity, we move closer to an ecosystem that enables the good whilst stopping the bad.&lt;/p&gt;

&lt;p&gt;At Notte, we're providing the tools legitimate users need today whilst advocating for the standards the ecosystem needs tomorrow. Because at the end of the day, the internet should work for everyone: humans, good bots, and the legitimate automation that makes our digital lives better.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://console.notte.cc/" rel="noopener noreferrer"&gt;console.notte.cc&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>devops</category>
      <category>discuss</category>
    </item>
    <item>
      <title>How to Automate 2FA and Account Creation for AI Agents</title>
      <dc:creator>nottelabs</dc:creator>
      <pubDate>Tue, 23 Dec 2025 23:34:19 +0000</pubDate>
      <link>https://dev.to/nottelabs/how-to-automate-2fa-and-account-creation-for-ai-agents-5c6p</link>
      <guid>https://dev.to/nottelabs/how-to-automate-2fa-and-account-creation-for-ai-agents-5c6p</guid>
      <description>&lt;p&gt;TLDR: Creating accounts and passing 2FA is a major roadblock for AI agents, requiring manual intervention. We're launching &lt;strong&gt;Notte Agent Identities&lt;/strong&gt;, a new feature that gives your AI agents complete, persistent digital identities. Each identity comes with a dedicated email, a real phone number for SMS verification, and a secure credential vault to manage its own website credentials. This allows your agents to autonomously handle the &lt;strong&gt;entire&lt;/strong&gt; authentication process — &lt;a href="https://x.com/GithubProjects/status/2000611905061392396?s=20" rel="noopener noreferrer"&gt;from filling out a sign-up form to passing 2FA, without any human help&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scrape Past the Login Screen
&lt;/h3&gt;

&lt;p&gt;The most valuable data isn't public — it's behind a login. Traditional scrapers hit this wall and stop. Notte agent identities unlocks the authenticated web, transforming your scraper from a simple bot into an autonomous agent that can:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create Its Own Accounts&lt;/strong&gt;: your agent signs up for any service, handling both email and SMS verification automatically. No manual work required.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conquer 2FA Instantly&lt;/strong&gt;: the dreaded SMS code or Email Sign Link is no longer an automation-killer. Your agent gets these programmatically and logs in automatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scrape Like a Real User&lt;/strong&gt;: they provide persistent, credible identities that don't get blocked like disposable services do, allowing for long-term, stable scraping sessions.&lt;/p&gt;

&lt;p&gt;By making account creation and authentication a reproducible step in your code, this removes the primary manual bottleneck to scaling. It allows you to reliably deploy and manage numerous authenticated agents for parallel data collection and complex automation workflow.&lt;/p&gt;

&lt;h3&gt;
  
  
  How it works
&lt;/h3&gt;

&lt;p&gt;Notte agent identities are not a standalone feature; they are deeply integrated with our core Agent and Session components. During an active session, a Notte Agent uses built-in &lt;strong&gt;tool calling&lt;/strong&gt; to seamlessly request credentials, verification links, or 2FA codes from its assigned identity.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5sj2lioj64j8zr31vdv2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5sj2lioj64j8zr31vdv2.png" alt="Agent Identities" width="800" height="274"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Technical Integration: Using identities in Your Code
&lt;/h3&gt;

&lt;p&gt;Integrating Identities into your Notte agents is straightforward. Here's a practical example of how to use a agent identity to automate account creation:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5qo3ks5293qndd9dp04z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5qo3ks5293qndd9dp04z.png" alt="Agent Identities Code" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  What happens under the hood:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;When the agent encounters a signup form, it automatically uses the identity’s email and phone number.&lt;/li&gt;
&lt;li&gt;If email verification is required, the agent programmatically retrieves the verification link from its inbox.&lt;/li&gt;
&lt;li&gt;For SMS 2FA, the agent fetches the code from the its own phone number.&lt;/li&gt;
&lt;li&gt;Credentials are automatically stored in the the secure vault for future sessions&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Practical Applications: What to Build with Notte Identities
&lt;/h4&gt;

&lt;p&gt;The ability to programmatically create and manage authenticated identities opens up a wide range of automation possibilities that were previously complex or required significant manual work. Here are some key use cases where this capability is a game-changer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;E-commerce&lt;/strong&gt;: Programmatically register for shopping sites and marketplaces. This enables automated workflows for price tracking, order placement, or managing multiple accounts on platforms where authenticated access is required.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Social Media&lt;/strong&gt;: Reliably set up profiles across social networks. With the ability to handle SMS verification, identities overcome the primary technical barrier to creating accounts for data collection, research, or social listening tasks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Financial Services&lt;/strong&gt;: Automate the initial stages of account opening and KYC processes. Use identities to programmatically validate email and phone number verification steps, ensuring your user onboarding flows are functioning correctly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;QA Testing&lt;/strong&gt;: Generate clean test accounts on demand for quality assurance. Instead of relying on a static pool of users, your test scripts can create a new identity for each run, guaranteeing a consistent, uncompromised starting state for testing registration and user features.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SaaS Signups&lt;/strong&gt;: Automatically create and verify accounts on any software platform. Use this for competitive analysis, testing integrations, or populating a new environment with users without manual data entry.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Ready to Build?
&lt;/h4&gt;

&lt;p&gt;The next step is to try it yourself. Create your first agent identity on the &lt;a href="https://console.notte.cc/" rel="noopener noreferrer"&gt;Notte console&lt;/a&gt; and start automating account creation in minutes.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>ai</category>
      <category>devops</category>
    </item>
    <item>
      <title>What can I build with Notte?</title>
      <dc:creator>nottelabs</dc:creator>
      <pubDate>Wed, 03 Dec 2025 21:46:55 +0000</pubDate>
      <link>https://dev.to/nottelabs/what-can-i-build-with-notte-2e7b</link>
      <guid>https://dev.to/nottelabs/what-can-i-build-with-notte-2e7b</guid>
      <description>&lt;h2&gt;
  
  
  First: what is Notte?
&lt;/h2&gt;

&lt;p&gt;Simply put, Notte provides a platform to build and deploy web agents that don’t break. By turning complex and repetitive web tasks into reliable self-healing workflows, businesses can scale automation with confidence.&lt;/p&gt;

&lt;p&gt;Notte exists because the web is still designed for humans, not agents. Pure web agents can navigate it, but while they excel on benchmarks, they’re unreliable and costly in production. Traditional scripts are faster and cheaper, but a single website tweak can break them entirely.&lt;/p&gt;

&lt;p&gt;Notte’s answer is &lt;strong&gt;Hybrid Agent Workflows&lt;/strong&gt;: freeze the routine into deterministic steps; reserve LLMs for when adaptive reasoning is required. If a page changes out of hours, your flow doesn’t wait on you to redeploy - the agent adapts at runtime and carries the task to completion, armed with the necessary &lt;strong&gt;Agent Tooling&lt;/strong&gt; for secure logins, identity management, payment integration, and audit-ready replays.&lt;/p&gt;

&lt;p&gt;In short: faster &amp;amp; cheaper than any other fully agentic/LLM based solution, more resilient than pure Playwright/Puppeteer, and reliable enough for everything from regulated portals to high-stakes checkouts at scale.&lt;/p&gt;

&lt;h2&gt;
  
  
  What makes this work
&lt;/h2&gt;

&lt;p&gt;Notte exposes four primitives and the runtime around them:&lt;/p&gt;

&lt;p&gt;Observe converts a URL into compact, semantic context: what’s on the page and which elements are interactable.&lt;/p&gt;

&lt;p&gt;Execute executes those actions as a chain. When an action is unambiguous, it runs deterministically. When a page deviates, an agent falls back to reasoning over the observed map and recovers until success.&lt;/p&gt;

&lt;p&gt;Scrape extracts structured outputs that survive cosmetic DOM churn.&lt;/p&gt;

&lt;p&gt;Agent orchestrates Observe, Step, and Scrape into a coherent workflow. It maintains session state and carries context across pages, ensuring tasks reach completion across multi-step workflows.&lt;/p&gt;

&lt;p&gt;Around that core you get production tooling: hosted sessions with built-in stealth and autoscaling; vaults for credentials, MFA, SSO, and cookies; personas (emails and phone numbers) for account creation and verification flows; payments to execute card flows end-to-end; file upload/download, and session replays for audit.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F00v46x8h3zcx6yo83q76.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F00v46x8h3zcx6yo83q76.png" alt="how Notte works" width="800" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What people build with Notte
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1) Production-Ready AI Agents
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Market and pricing monitors.&lt;/strong&gt; Teams track competitive sites that change daily: promos, plan pages, fine print. A Notte agent spins up sessions across targets, applies filters, captures price tables, diffs changes, and posts a structured report. Unexpected banner of modal? An A/B variant landing mid-run? Deterministic steps keep moving; the agent only “thinks” when a control disappears or a layout shifts. No monitoring or script patching.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Onboarding helpers.&lt;/strong&gt; Many customer portals have no API and tricky UX. With Vaults and Personas, a Notte flow completes login, passes MFA, verifies email/SMS, uploads documents, and returns a clean JSON outcome (plus a replay for compliance).&lt;/p&gt;

&lt;h3&gt;
  
  
  2) Hybrid automation for back-office ops
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Tax and finance portals.&lt;/strong&gt; Deterministic logins and form fills are fast. However credentials must be secured, and reliability demands adaptability. Coupled with a vault for security, a Notte agent only steps in when a field relocates or a PDF viewer changes. Monthly filings run without constant fixes or manual intervention.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Compliance sweeps.&lt;/strong&gt; Scaled browser sessions fan out across regulator or licensure portals to scrape statuses and write expiring items into a queue. The variance lives in two or three steps; everything else is frozen.&lt;/p&gt;

&lt;h3&gt;
  
  
  3) Structured web data at scale
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Catalogs and pricing.&lt;/strong&gt; Observe exposes reliable action spaces for “Add to cart” or “Page next.” Scrape delivers structured records regardless of DOM changes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Product catalogs.&lt;/strong&gt; Agents traverse category pages, capture product details, normalise variants and pricing, and return clean records ready for analysis. With residential IP rotation and built-in stealth, the data flows at scale without scraping blocks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Notte instead of “just Playwright” or “just an LLM”
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Latency and cost.&lt;/strong&gt; Deterministic first. Agentic only when necessary.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reliability.&lt;/strong&gt; Inference-time recovery when the web moves. No “fix and redeploy” loop for trivial changes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Observability.&lt;/strong&gt; Structured outputs plus replays. Easy to debug.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scale.&lt;/strong&gt; Hosted sessions with built-in stealth and autoscaling eliminate the burden of managing browser infrastructure.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Notte Execution Flow
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;You state the goal (“log in and download last month’s invoices”).&lt;/li&gt;
&lt;li&gt;Observe returns a semantic map of the login page: what can be clicked, typed, or submitted.&lt;/li&gt;
&lt;li&gt;Step executes: enter email/password from Vaults, submit, navigate to billing, open the right row, download.&lt;/li&gt;
&lt;li&gt;If anything drifts (button renamed, table re-ordered) the agent reasons over observed context, selects the correct control, and moves on.&lt;/li&gt;
&lt;li&gt;Scrape outputs structured data; Replay gives the exact session for verification.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No need to deal with infra overhead - define the flow, lock down the predictable steps, and let the fallback handle unexpected changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Production features that matter
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Vaults.&lt;/strong&gt; Credentials, MFA tokens, SSO, and cookies stored with enterprise-grade security.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Personas.&lt;/strong&gt; Disposable emails and phone numbers for signup and verification at volume.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Payments.&lt;/strong&gt; Controlled card entry for checkout flows and agentic transactions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sessions.&lt;/strong&gt; Hosted browsers with stealth modes and autoscaling, ready for demand-fluxes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Replays.&lt;/strong&gt; Visual summaries and session playback to diagnose or prove what happened.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CDP compatibility.&lt;/strong&gt; If you already have hooks or devtools workflows, you can keep them.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Looking ahead
&lt;/h2&gt;

&lt;p&gt;Hybrid wins. Frozen steps plus selective reasoning is the pattern that holds up under real-world complexity - government portals, enterprise logins, consumer checkout, the lot. The answer to reliable automation: the end-user sees faster outcomes, and your team sees fewer tickets and fewer redeploys.&lt;/p&gt;

&lt;p&gt;What will you build? Start in the &lt;a href="https://console.notte.cc/overview" rel="noopener noreferrer"&gt;Console&lt;/a&gt; or &lt;a href="https://www.notte.cc/demo-request" rel="noopener noreferrer"&gt;book a demo&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>devops</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Notte Vault: The Solution for AI Agent Authentication</title>
      <dc:creator>nottelabs</dc:creator>
      <pubDate>Mon, 01 Dec 2025 19:50:30 +0000</pubDate>
      <link>https://dev.to/nottelabs/notte-vault-the-solution-for-ai-agent-authentication-22a2</link>
      <guid>https://dev.to/nottelabs/notte-vault-the-solution-for-ai-agent-authentication-22a2</guid>
      <description>&lt;h2&gt;
  
  
  Why do I need a vault?
&lt;/h2&gt;

&lt;p&gt;In the evolving landscape of AI assistants and autonomous agents, one critical challenge remains: secure access to protected online resources. Today, I want to explore the concept of credential vaults for web AI agents—a system that enables agents to interact with authenticated services without exposing sensitive login information. Think of it as enabling your agent to log in to Twitter without handing your password over to OpenAI.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Authentication Challenge
&lt;/h2&gt;

&lt;p&gt;Web AI agents promise to revolutionize how we interact with online services, but their utility is significantly limited when they encounter login screens. Currently, users face an uncomfortable choice:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Risky Route&lt;/strong&gt;: Provide credentials directly to the LLM, creating serious security vulnerabilities.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Automation-Killer&lt;/strong&gt;: Manually authenticate each service before agent use, completely undermining the benefits of automation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Fragile Fix&lt;/strong&gt;: Share cookies with the agent, which is error-prone and requires constant management of those pesky TTLs (Time To Live).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Surrender&lt;/strong&gt;: Limit agents to public-facing, unauthenticated content, effectively neutering their capabilities.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Credential Vault: A Secure Middleman
&lt;/h2&gt;

&lt;p&gt;A credential vault acts as a secure intermediary between AI agents and authentication systems, offering a way out of this catch-22. Here’s how it works:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg3hga7cmfm6e5p5i5la7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg3hga7cmfm6e5p5i5la7.png" alt="Secure AI Agent Credential Diagram" width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Core Architecture
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Isolated Credential Storage&lt;/strong&gt;: Passwords and usernames are stored in an encrypted vault completely separate from the system&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero-Knowledge Operation&lt;/strong&gt;: The LLM never sees, processes, or stores the actual credentials&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Permission-Based Access&lt;/strong&gt;: The vault controls which services an agent can access and what actions it can perform&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Secure Injection&lt;/strong&gt;: When authentication is needed, the system injects credentials directly into appropriate fields&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step by step: Two-Phase Flow
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Before Execution&lt;/strong&gt; (Setup, once and for all):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The user securely stores their credentials within the encrypted vault.&lt;/li&gt;
&lt;li&gt;The user grants specific AI agents permission to use a subset of credentials.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;During Execution&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;When an agent encounters a login prompt, it triggers an action using a placeholder value, signalling the vault to step in.&lt;/li&gt;
&lt;li&gt;The vault replaces the placeholder with the actual, securely stored credentials.&lt;/li&gt;
&lt;li&gt;The browser executes the action and returns an observation, which might contain sensitive data.&lt;/li&gt;
&lt;li&gt;The vault filters out any sensitive information, providing the agent with a sanitized and secure response.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How does it work in an actual use case?
&lt;/h2&gt;

&lt;p&gt;Credential vaults are about maximizing efficiency. They streamline the tedious bits so you can focus on the interesting (or, at least, the billable) tasks.&lt;/p&gt;

&lt;p&gt;Picture this: You’re three hours deep into a coding session. Your fingers are flying across the keyboard, Stack Overflow tabs are multiplying like rabbits, and you’ve consumed so much caffeine that you can hear colors. You’re in THE ZONE™.&lt;/p&gt;

&lt;p&gt;Then it hits you – that rumbling stomach reminder that you are, unfortunately, still human with basic biological needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Without a Credential Vault System: The Detrimental Distraction
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Pause your coding brilliance and break your flow state.&lt;/li&gt;
&lt;li&gt;Look for your phone (because you didn’t remember to charge it last night).&lt;/li&gt;
&lt;li&gt;Open UberEats.&lt;/li&gt;
&lt;li&gt;Spend 10 minutes endlessly scrolling, deciding between two meals that probably come from the same ghost kitchen anyway.&lt;/li&gt;
&lt;li&gt;Check your notifications and end up doom scrolling until your food arrives, completely derailed from your original task.&lt;/li&gt;
&lt;li&gt;Stare blankly at your screen. What were you coding again?&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  With a Credential Vault-Enabled Agent: Streamlined Sustenance
&lt;/h2&gt;

&lt;p&gt;“Hey, Notte, I’m dying of starvation here. Order me something on UberEats – surprise me, but nothing too questionable.”&lt;/p&gt;

&lt;p&gt;Your digital servant dutifully:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Authenticates with UberEats using your securely stored credentials (without judgment about how often you use the service).&lt;/li&gt;
&lt;li&gt;Logs in and places an order based on your past preferences.&lt;/li&gt;
&lt;li&gt;Confirms the delivery while you continue building that feature you promised your boss “would be done by Friday” three Fridays ago.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Is this peak laziness or peak efficiency? The philosophical debate continues, but your stomach is full, your code is compiling, and you’ve maintained your focus. Who’s really the winner here?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/nottelabs/notte/tree/main/examples/order-on-ubereats" rel="noopener noreferrer"&gt;Check out an agent using a vault to log in on UberEats and order a burger example on GitHub&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Building a credential vault for web AI agents solves one of the most significant barriers to AI automation: secure authenticated access. By keeping credentials completely isolated from the AI system while enabling authenticated interactions, we can unlock the full potential of AI agents while maintaining robust security.&lt;/p&gt;

&lt;p&gt;The key insight is separation of concerns—keeping authentication separate from intelligence, allowing each system to focus on what it does best while working together seamlessly from the user's perspective.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.notte.cc/" rel="noopener noreferrer"&gt;Our website&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="//console.notte.cc/"&gt;Start building with Notte Vault&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>automation</category>
      <category>devops</category>
    </item>
    <item>
      <title>Web Agents That Actually Understand Websites: How Notte's Perception Layer Solves the DOM Problem</title>
      <dc:creator>nottelabs</dc:creator>
      <pubDate>Fri, 27 Jun 2025 15:00:00 +0000</pubDate>
      <link>https://dev.to/nottelabs/web-agents-that-actually-understand-websites-how-nottes-perception-layer-solves-the-dom-problem-20jb</link>
      <guid>https://dev.to/nottelabs/web-agents-that-actually-understand-websites-how-nottes-perception-layer-solves-the-dom-problem-20jb</guid>
      <description>&lt;p&gt;The fundamental problem with web agents isn't automation — it's perception. How do you teach an LLM to understand a website when it's buried in layers of HTML, CSS, and JavaScript noise?&lt;/p&gt;

&lt;h2&gt;
  
  
  The Technical Problem: The DOM Impedance Mismatch
&lt;/h2&gt;

&lt;p&gt;Web agents have traditionally relied on brittle approaches: DOM parsing, CSS selectors, and HTML structure analysis. This creates a fundamental impedance mismatch between how LLMs process information (natural language) and how websites are structured (markup).&lt;/p&gt;

&lt;p&gt;Consider this typical web automation approach:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;driver.find_element(By.CSS_SELECTOR, "button.submit-btn.primary")
driver.find_element(By.XPATH, "//div[@class='form-container']//input[@name='email']")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What's wrong with this?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fragility&lt;/strong&gt;: CSS selectors break when developers change styling.&lt;br&gt;
&lt;strong&gt;Cognitive overhead&lt;/strong&gt;: LLMs must simulate structural reasoning instead of acting on semantic cues — inflating prompt size and increasing hallucination risk.&lt;br&gt;
&lt;strong&gt;Context loss&lt;/strong&gt;: Raw DOM provides no semantic understanding.&lt;br&gt;
&lt;strong&gt;Maintenance nightmare&lt;/strong&gt;: Every UI change requires agent updates&lt;/p&gt;

&lt;p&gt;The disconnect between LLMs' natural language processing and websites' structural complexity creates agents that are fragile, expensive to maintain, and difficult to debug.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Solution: Semantic Abstraction Through Perception
&lt;/h2&gt;

&lt;p&gt;Notte introduces a &lt;strong&gt;perception layer&lt;/strong&gt; that acts as a translation interface between websites and LLMs. Instead of forcing LLMs to parse DOM structures, it transforms raw web pages into structured, natural language descriptions that preserve semantic meaning while abstracting away implementation details.&lt;/p&gt;
&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;The perception layer converts this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;div class="product-card-container"&amp;gt;
  &amp;lt;div class="product-image-wrapper"&amp;gt;
    &amp;lt;img src="/product-123.jpg" alt="Wireless Headphones"&amp;gt;
  &amp;lt;/div&amp;gt;
  &amp;lt;div class="product-details"&amp;gt;
    &amp;lt;h3 class="product-title"&amp;gt;Premium Wireless Headphones&amp;lt;/h3&amp;gt;
    &amp;lt;span class="price-current"&amp;gt;$99.99&amp;lt;/span&amp;gt;
    &amp;lt;button class="btn btn-primary add-to-cart" data-product-id="123"&amp;gt;
      Add to Cart
    &amp;lt;/button&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Into this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Product: Premium Wireless Headphones
Price: $99.99
Image: Wireless Headphones
Available actions: Add to Cart
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This transformation isn’t static — it’s context-aware and dynamic. The LLM now works with &lt;strong&gt;meaning&lt;/strong&gt; instead of &lt;strong&gt;markup&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture Benefits
&lt;/h2&gt;

&lt;h4&gt;
  
  
  1. Semantic Abstraction
&lt;/h4&gt;

&lt;p&gt;Websites become navigable maps described in natural language. Instead of&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;driver.find_element(By.CSS_SELECTOR, ".add-to-cart")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;your agent thinks: "Click the 'Add to Cart' button for Premium Wireless Headphones."&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Change Resilience
&lt;/h4&gt;

&lt;p&gt;Natural language descriptions adapt better to UI changes than selectors. When developers change CSS classes from &lt;code&gt;btn-primary&lt;/code&gt; to &lt;code&gt;button-main&lt;/code&gt;, the perception layer still understands it as "Add to Cart button."&lt;/p&gt;

&lt;p&gt;When semantic intent is preserved, perception remains robust — even when markup changes.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. LLM Optimisation
&lt;/h4&gt;

&lt;p&gt;Information is presented in the format LLMs understand best — natural language with clear semantic structure. This improves reasoning, reduces hallucination risk, and shrinks prompt size.&lt;/p&gt;

&lt;h4&gt;
  
  
  4. Smaller Models, Better Performance
&lt;/h4&gt;

&lt;p&gt;The perception layer enables smaller models (like the Llama suite) to reason effectively on simplified inputs. DOM noise is stripped away, letting inference engines focus on what matters. This allows smaller models to compete with larger ones in task-specific execution.&lt;/p&gt;

&lt;h3&gt;
  
  
  Code Implementation
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Basic Agent Example
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from notte_sdk import NotteClient

# Initialize Notte client
notte = NotteClient(api_key="your-api-key")

# Natural language task execution using the agents API
response = notte.agents.run(
    task="Find the cheapest wireless headphones under $100 and add them to cart"
)

print(response.answer)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Session-Controlled Advanced Example
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from notte_sdk import NotteClient
from pydantic import BaseModel

# Define the expected response schema
class TwitterPost(BaseModel):
    url: str

notte = NotteClient()

# Advanced session management with credentials
with notte.Vault() as vault, notte.Session(
    headless=False, 
    proxies=False, 
    browser_type="chrome"
) as session:

    # Secure credential management (use env vars in production)
    vault.add_credentials(
        url="https://x.com",
        username="your-email",      # Replace with your real email
        password="your-password"    # Replace with your real password
    )

    # Create agent with session context
    agent = notte.Agent(
        session=session,
        vault=vault,
        max_steps=10
    )

    # Complex multi-step workflow
    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  # Triggers schema validation
    )

    print(f"Posted successfully: {response.answer.url}")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Data Extraction with Structured Output
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from notte_sdk import NotteClient
import json

notte = NotteClient()

# Structured data extraction using the scrape method
data = notte.scrape(
    url="https://pump.fun",
    instructions="get top 5 latest trendy coins on pf, return ticker, name, mcap"
)

# Print the result
print(json.dumps(data, indent=2, ensure_ascii=False))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Production Implications
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Reduced Maintenance Overhead
&lt;/h4&gt;

&lt;p&gt;When websites change their UI, natural language descriptions remain stable. Your agents continue working without constant selector updates.&lt;/p&gt;

&lt;h4&gt;
  
  
  Intuitive Debugging
&lt;/h4&gt;

&lt;p&gt;Debug through natural language traces instead of cryptic DOM queries:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;❌ Old way: "Element not found: button.submit-btn.primary"
✅ New way: "Could not find 'Submit Order' button on checkout page"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Faster Development Cycles
&lt;/h4&gt;

&lt;p&gt;Write agent tasks in plain English instead of learning complex selector strategies:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Instead of this:
element = driver.find_element(By.XPATH, 
    "//div[contains(@class, 'product-grid')]//div[contains(@class, 'product-item')][.//span[contains(text(), 'Wireless')]]//button[contains(@class, 'add-cart')]"
)

# Use this:
result = agent.run(task="Add wireless headphones to cart")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Better Multi-Step Workflows
&lt;/h4&gt;

&lt;p&gt;Notte handles cookies, CAPTCHAs, and anti-bot protection while maintaining session state across complex workflows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;response = agent.run(task="""
1. Compare prices for iPhone 15 across 3 major retailers
2. Find the best deal including shipping costs
3. Check availability and delivery times
4. Generate a summary report with recommendations
""")

print(response.answer)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Performance Benchmarks
&lt;/h3&gt;

&lt;p&gt;Notte outperforms all other web agents in speed, costs, and reliability by:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reducing token usage&lt;/strong&gt;: Less verbose DOM parsing means fewer API calls&lt;br&gt;
&lt;strong&gt;Enabling smaller models&lt;/strong&gt;: Semantic abstraction allows efficient models like Llama to excel&lt;br&gt;
&lt;strong&gt;Faster inference&lt;/strong&gt;: Ultra-high inference such as Cerebras without losing precision&lt;br&gt;
&lt;strong&gt;Higher success rates&lt;/strong&gt;: Natural language understanding reduces task failures&lt;/p&gt;

&lt;p&gt;(Explore our open operator evals &lt;a href="https://github.com/nottelabs/open-operator-evals" rel="noopener noreferrer"&gt;here&lt;/a&gt;).&lt;/p&gt;
&lt;h2&gt;
  
  
  Real-World Applications
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;E-commerce Automation&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Automated competitor price monitoring
response = agent.run(
    task="Check competitor pricing for wireless headphones on Amazon and Best Buy, compare with our $99 target price"
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Lead Generation&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Professional outreach automation
response = agent.run(
    task="Find 20 startup founders in the AI space on LinkedIn who recently posted about funding, extract their contact info"
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Market Research&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Automated market intelligence using the scrape endpoint
data = notte.scrape(
    url="https://www.g2.com/categories/project-management",
    instructions="Extract the top 5 project management tools with their pricing, ratings, and key features for competitive analysis"
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The Bottom Line
&lt;/h3&gt;

&lt;p&gt;Traditional web agents force LLMs to think like web scrapers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Notte lets them think like decision-makers — understanding what to do, not just where to click.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This isn't just about making agents work better. It’s about making them maintainable, debuggable, and production-ready. When your agent understands “find the cheapest flight” instead of parsing div.flight-result-container &amp;gt; span.price-value, you've solved the fundamental problem of web automation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Build web agents that understand meaning, not just markup.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Get Started
&lt;/h2&gt;

&lt;p&gt;Ready to build agents that actually understand websites?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/nottelabs/notte" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://console.notte.cc/" rel="noopener noreferrer"&gt;Console&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.notte.cc/side/introduction/what-is-notte" rel="noopener noreferrer"&gt;Docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>ai</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Notte Creator Program</title>
      <dc:creator>nottelabs</dc:creator>
      <pubDate>Mon, 09 Jun 2025 18:34:07 +0000</pubDate>
      <link>https://dev.to/nottelabs/notte-creator-program-59p8</link>
      <guid>https://dev.to/nottelabs/notte-creator-program-59p8</guid>
      <description>&lt;h2&gt;
  
  
  The Notte Creator Program is live 🚀
&lt;/h2&gt;

&lt;p&gt;Build with the Notte SDK and earn &lt;strong&gt;$100&lt;/strong&gt; worth of nuit crypto.&lt;br&gt;
Dev or not, this is your invite to show what agents can do.&lt;/p&gt;

&lt;p&gt;Here’s how to qualify:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Use the Notte SDK
&lt;/h3&gt;

&lt;p&gt;Your demo must clearly show Notte being used to perceive, navigate, and act on the web. Exceptional, creative, or high-signal demos can earn up to &lt;strong&gt;$250&lt;/strong&gt; — the best of the best &lt;/p&gt;

&lt;h3&gt;
  
  
  2. Share a public demo
&lt;/h3&gt;

&lt;p&gt;Post your demo on X (thread preferred) — this is required for payout.&lt;br&gt;
You can also cross-post to YouTube or your blog.&lt;/p&gt;

&lt;p&gt;Real content. Real use.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Share your code
&lt;/h3&gt;

&lt;p&gt;Your GitHub repo must be public and include full code.&lt;br&gt;
Submit it via the form — we want to see exactly how you used Notte.&lt;/p&gt;

&lt;p&gt;Remember to tag @nottecore if you’re posting on X.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Submit to claim your reward 💥
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Submit&lt;/strong&gt; → &lt;a href="https://nottelabs.notion.site/207d3a1ca7cf80a49d00c63eedd167b9?pvs=105" rel="noopener noreferrer"&gt;https://nottelabs.notion.site/207d3a1ca7cf80a49d00c63eedd167b9?pvs=105&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Docs&lt;/strong&gt; → &lt;a href="https://docs.notte.cc/side/introduction/what-is-notte" rel="noopener noreferrer"&gt;https://docs.notte.cc/side/introduction/what-is-notte&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Github&lt;/strong&gt; → &lt;a href="https://github.com/nottelabs/notte" rel="noopener noreferrer"&gt;https://github.com/nottelabs/notte&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let’s see what you build.&lt;/p&gt;

&lt;p&gt;Originally posted on X: &lt;a href="https://x.com/nuitdotfun/status/1932135970939256927" rel="noopener noreferrer"&gt;https://x.com/nuitdotfun/status/1932135970939256927&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>python</category>
      <category>programming</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
