Deploy browser automations as scheduled, API-callable serverless Functions — plus stealth sessions, vault-backed login, captcha solving, and natural-language agent runs via the Notte CLI.

MITAuto-check passedProductivity & Automation

Install Notte

skills CLI
$ npx skills add Bitterbot-AI/bitterbot-desktop --skill notte -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Bitterbot-AI/bitterbot-desktop notte --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Bitterbot-AI/bitterbot-desktop.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/notte .claude/skills/notte && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
notte
GitHub stars
2.5k
Token cost
~2.8k tokens
SKILL.md length
764 words
Files
1
Skills in repo
17
Repo updated
First seen
Licence
MIT

At a glance

Deploy browser automations as scheduled, API-callable serverless Functions — plus stealth sessions, vault-backed login, captcha solving, and natural-language agent runs via the Notte CLI.

  • Works in 3 steps: Functions — deploy a browser automation… → Vault-backed login — passwords auto-fill… → Stealth sessions — residential proxies +…
  • Tasks that involve Browser automation
  • SKILL.md covers Functions — deploy a browser…, When to use Notte vs the…, Setup and Quick start, plus 10 more sections
  • Calls brew, curl and go; reaches api.notte.cc and github.com; needs NOTTE_API_KEY and TOTP_BASE32_SECRET

What it does

Notte is an agent skill from Bitterbot-AI/bitterbot-desktop. Deploy browser automations as scheduled, API-callable serverless Functions — plus stealth sessions, vault-backed login, captcha solving, and natural-language agent runs via the Notte CLI. Turns any browser flow into a deterministic Bitterbot-callable endpoint, ideal for crystallized skills + dream-engine cron schedules.

Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Productivity & Automation, covering Browser automation, Scheduled and recurring tasks and Serverless. It works with Firecrawl. The repository describes itself as: Bitterbot - a mesh of agents that turns shared experience into collective capability. The licence is MIT.

When your agent uses it

  • Tasks that involve Browser automation
  • Tasks that involve Scheduled and recurring tasks
  • Tasks that involve Serverless

Example prompts

  • “/notte”

Requirements

  • Python 3
  • A credential in NOTTE_API_KEY
  • A credential in TOTP_BASE32_SECRET

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Functions — deploy a browser automation script as a serverless, API-callable endpoint with built-in cron scheduling. The natural fit for…
  2. Vault-backed login — passwords auto-fill on matching URLs without ever entering the model's context.
  3. Stealth sessions — residential proxies + inline captcha solving, for sites where the bundled Chromium gets locked out.

What it can do on your machine

Read from SKILL.md and the folder at commit cd4562a. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • brew
    • curl
    • go
    • jq

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • api.notte.cc
    • github.com
    • news.ycombinator.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • NOTTE_API_KEY
    • TOTP_BASE32_SECRET

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Notte loads about 2.8k tokens when it runs. Until then it costs about 82 tokens; SKILL.md has 764 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~82
When it runs · the whole SKILL.md, loaded when a task matches
~2.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from Bitterbot-AI/bitterbot-desktop at commit cd4562a, republished under its MIT licence (© Bitterbot-AI). 764 words, ~2,838 tokens.

Download SKILL.mdSave it as .claude/skills/notte/SKILL.md (or your agent's skills folder).
name
notte
description
Deploy browser automations as scheduled, API-callable serverless Functions — plus stealth sessions, vault-backed login, captcha solving, and natural-language agent runs via the Notte CLI. Turns any browser flow into a deterministic Bitterbot-callable endpoint, ideal for crystallized skills + dream-engine cron schedules.
homepage
https://notte.cc

Notte

Hosted browser infrastructure with a CLI that does three things the bundled browser tool and Firecrawl cannot:

  1. Functions — deploy a browser automation script as a serverless, API-callable endpoint with built-in cron scheduling. The natural fit for crystallized skills and dream-engine cycles.
  2. Vault-backed login — passwords auto-fill on matching URLs without ever entering the model's context.
  3. Stealth sessions — residential proxies + inline captcha solving, for sites where the bundled Chromium gets locked out.

Functions — deploy a browser flow as a callable API

Crystallized skills and dream-cycle automations both want the same thing: a stable, repeatable browser action the agent can call by name on a schedule. Notte Functions is exactly that.

bash
# 1. Capture an agent's run as deterministic Python (or hand-write it).
notte agents workflow-code   # exports the latest agent's steps as Python
notte sessions workflow-code # or export from a CLI session

# 2. Deploy the script as a Function (one-shot — no servers, no infra).
notte functions create --file workflow.py
# → returns function_id

# 3. Run on demand, or schedule.
notte functions run                                # one-off
notte functions schedule-set --cron "0 */2 * * *"  # every 2h, matches dream cycles
notte functions runs                               # invocation history
notte functions fork                               # version forward without losing the original

# 4. Or invoke via HTTP from anywhere (skill scripts, gateway hooks, channels).
curl -X POST https://api.notte.cc/functions/{function_id}/runs/start \
  -H "Authorization: Bearer $NOTTE_API_KEY" \
  -d '{"url":"https://example.com","query":"laptop"}'

Why this matters for Bitterbot:

  • A crystallized skill that ends in "open this URL and grab the data" can be backed by a Function — fast, deterministic, no LLM tokens per execution.
  • Function schedule-set aligns directly with dream-engine cron triggers (every 2h consolidation, daily syncs, hourly monitors).
  • notte agents workflow-code is structurally the same pattern as Bitterbot's dream engine crystallizing execution paths — the agent figures out the steps, then the deterministic Function takes over for production.
  • Functions auto-inherit Notte's session capabilities: vault credentials, stealth proxies, captcha solving — without re-deploying anything.

When to use Notte vs the bundled tools

NeedUse
Open a tab, click around, take a snapshotBundled browser tool (src/browser/)
Pull a single page through a stealth fetchFirecrawl via web_fetch (docs/tools/firecrawl.md)
Crystallize a recurring browser flow into a callable API endpointnotte functions
Schedule a browser flow on a cron (dream-cycle aligned)notte functions schedule-set
Run a multi-step task on an authenticated sitenotte session
Log in without exposing the password to the LLMnotte vault
The bundled browser is being challenged with captcha / Cloudflare / DataDomenotte (--solve-captchas, --proxy)
Need a residential / geo-located IPnotte
Hand a browsing goal to an agent and get a structured answernotte agents

notte does not replace the bundled browser. It's the deployment + infrastructure layer for browser flows that need to outlive a single agent run.

Setup

bash
# Install (handled by the install metadata above).
brew tap nottelabs/notte-cli https://github.com/nottelabs/notte-cli.git && brew install notte
# or:
go install github.com/nottelabs/notte-cli/cmd/notte@latest

# Authenticate. Stores the API key in the system keyring.
notte auth login
# or: export NOTTE_API_KEY=...

Quick start

bash
notte sessions start --proxy --solve-captchas
notte page goto "https://news.ycombinator.com"
notte page observe
notte page scrape --instructions "Top 10 story titles, points, and URLs as JSON"
notte sessions stop -y

observe returns interactive element IDs (@B3, @I1, @L9). Use those with click / fill, or fall back to Playwright selectors (#submit, button:has-text('Submit')) — both are accepted.

Vault-backed login (the biggest UX win over the bundled browser)

docs/tools/browser-login.md recommends manual login because automated logins trigger anti-bot defenses and can lock the account. Notte fixes this: store credentials in a vault and the browser auto-fills on matching URLs. The agent never sees the password.

bash
notte vaults create --name "myservice"
notte vaults credentials add --vault-id <vault-id> \
  --url "https://myservice.com" \
  --email "user@example.com" \
  --password "..." \
  --mfa-secret "<TOTP_BASE32_SECRET>"   # optional TOTP

notte sessions start
notte page goto "https://myservice.com/login"
# Credentials auto-fill from the matching vault entry.

This unblocks autonomous flows during dream cycles where there's no user available to log in manually.

Agent runtime (delegate the whole task)

For multi-step goals, hand the task to a Notte agent:

bash
notte agents start --task "Find the cheapest non-stop SFO→CDG flight on Sep 14 and return the URL"
notte agents status
notte agents replay     # session recording / step trace

Agents are cheaper than authoring step-by-step CLI calls when the task has many branches.

Show full SKILL.md (309 more words)Show less

Stealth flags worth knowing

FlagEffect
--proxyRoute through Notte's residential proxy pool
--proxy-country <c>ISO country code (us, gb, fr, de, …)
--solve-captchasAuto-solve reCAPTCHA / hCaptcha / Cloudflare turnstile
--user-agent <ua>Pin a specific UA string
--cdp-url <url>Bring-your-own remote browser (e.g. Lightpanda)
--headless=falseRequired when --cdp-url points to Lightpanda Cloud

Page actions (cheat sheet)

bash
notte page click "@B3" | "#submit-button"
notte page fill "@I1" "hello"        # add --enter to submit
notte page check "#tos"
notte page select "#country" "France"
notte page upload "#file" --file ./report.pdf
notte page download "@L5"
notte page eval-js 'document.title'
notte page screenshot
notte page wait 500
notte page press "Enter" | "Escape" | "Tab"
notte page scroll-down [px] | scroll-up [px]

Navigation: goto, back, forward, reload, new-tab, switch-tab, close-tab.

Structured extraction

bash
notte page scrape --instructions "Every job posting: title, company, location, salary range" -o json
notte page scrape --instructions "Article body and author" --only-main-content

Note: for routine single-page extraction without auth or anti-bot needs, web_fetch (with Firecrawl) is the lighter path. Use notte page scrape when extraction lives behind login or after a multi-step navigation.

MCP path (no install required)

Notte ships an MCP server (notte-mcp). It can be called through the existing mcporter skill without installing the Notte CLI:

bash
NOTTE_API_KEY=... mcporter call --stdio "uv run --with notte-mcp python -m notte_mcp.server" \
  notte_scrape url=https://example.com instructions="Extract pricing tiers"

Use the CLI by default — the MCP path is mainly useful inside flows already orchestrating MCP calls.

Live viewer (debugging)

bash
notte sessions start -o json | jq -r '.viewer_url'
# or
notte sessions viewer

Environment variables

VariablePurpose
NOTTE_API_KEYAPI key (alternative to notte auth login)
NOTTE_SESSION_IDDefault session for page commands
NOTTE_API_URLOverride API endpoint
NOTTE_MCP_SERVER_PROTOCOLstdio or sse (only for the MCP server)

Tips

  • Always observe before click / fill / scrape. Element IDs come from observe output.
  • After every navigation, observe again — IDs are scoped to the current DOM snapshot.
  • Stop sessions you start. notte sessions stop -y skips the prompt. Idle sessions cost API budget.
  • Lightpanda + --cdp-url requires --headless=false. Otherwise the CDP server returns 500.
  • @B3 clicking the wrong element? Fall back to a Playwright selector.
  • Modals blocking clicks? notte page press "Escape" then notte page wait 500.

Troubleshooting

SymptomFix
Site keeps blocking / shows captchaRestart with --proxy --solve-captchas
Empty / partial scrapeAdd notte page wait 1000 then re-observe before scrape
@B3 clicks the wrong thingUse a Playwright selector (button:has-text('Submit'))
Lightpanda CDP returns 500Add --headless=false to sessions start
Agent stuck on a captchaStop session, restart with --solve-captchas
401 / auth errorsRe-run notte auth login or set NOTTE_API_KEY

© Bitterbot-AI, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/notte of Bitterbot-AI/bitterbot-desktop.

Open the folder on GitHubat commit cd4562a

Compare with similar skills

Notte next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Notte compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Notte this skillBitterbot-AI/bitterbot-desktop2.5k—~2.8kAutomated safety check: PassMIT
Minimal Web Baas DemoTencentCloudBase/CloudBase-AI-Toolkit1.1k1 repos~2.2kAutomated safety check: PassMIT
Scrapingbee CLIScrapingBee/scrapingbee-cli108—~3.2kAutomated safety check: NotesMIT
Agents SDKhodgef/apiker1273 repos~3kAutomated safety check: PassMIT
Firecrawl Interact Integrationfirecrawl/firecrawl190k1 repos~731Automated safety check: PassISC
NubaseOtterMind/Nubase623—~2.2kAutomated safety check: NotesApache-2.0

Similar skills

  • Minimal Web Baas Demo

    TencentCloudBase/CloudBase-AI-Toolkit

    Fast path for a minimal CloudBase Web + database demo (最小前后端 / 最小可用 fullstack / Lovable-like BaaS).

    1.1k GitHub starsUsed in 1 repo~2.2k tokens
    Productivity & AutomationAuto-check passed
  • Scrapingbee CLI

    ScrapingBee/scrapingbee-cli

    Fetch and read any web page, search the web, crawl a site, or pull structured data out of pages.

    108 GitHub stars~3.2k tokensUpdated 2 days ago
    Productivity & AutomationAuto-check: notes
  • Agents SDK

    hodgef/apiker

    Build AI agents on Cloudflare Workers using the Agents SDK. An agent skill from hodgef/apiker.

    127 GitHub starsUsed in 3 repos~3k tokens
    Backend & APIsAuto-check passed
  • Guides adding Firecrawl's /interact endpoint to product code for pages that need clicks, forms, pagination or logged-in flows beyond plain scraping.

    190k GitHub starsUsed in 1 repo~731 tokens
    Data & AnalyticsAuto-check passed
  • Nubase

    OtterMind/Nubase

    A skill your agent uses when the user mentions Nubase broadly, wants a backend for an AI-generated app, or needs to deploy/publish generated code online — across Database, Auth, Storage, Assets…

    623 GitHub stars~2.2k tokensUpdated 11 days ago
    Backend & APIsAuto-check: notes
  • X Bookmarks

    sharbelxyz/x-bookmarks

    Fetch, summarize, and manage X/Twitter bookmarks via bird CLI or X API v2.

    289 GitHub stars~2k tokensUpdated 7 mo ago
    Productivity & AutomationAuto-check: notes

More from Bitterbot-AI/bitterbot-desktop

All 17 skills in this repo
  • Canvas

    Bitterbot-AI/bitterbot-desktop

    Display and control HTML content on connected Bitterbot nodes (Mac, iOS, Android) via the canvas host server.

    2.5k GitHub stars~1.4k tokensUpdated yesterday
    Auto-check passed
  • Moltbook

    Bitterbot-AI/bitterbot-desktop

    Participate in Moltbook — the social network for AI agents. An agent skill from Bitterbot-AI/bitterbot-desktop.

    2.5k GitHub stars~2.3k tokensUpdated yesterday
    Auto-check passed
  • Pre Action Interceptors

    Bitterbot-AI/bitterbot-desktop

    A skill your agent uses when a tool error begins with "INTERCEPTOR:", a sent message was silently hedged or rewritten, or the user asks about active guards or blocked actions.

    2.5k GitHub stars~580 tokensUpdated yesterday
    Auto-check passed
  • Finance Data

    Bitterbot-AI/bitterbot-desktop

    Get stock quotes, company info, market data, and crypto prices.

    2.5k GitHub stars~696 tokensUpdated yesterday
    Auto-check passed
  • Forage Economy

    Bitterbot-AI/bitterbot-desktop

    A skill your agent uses when anyone asks about bounties (or "forge"), agent earnings, the agent economy, marketplace skills, A2A activity or your network reputation.

    2.5k GitHub stars~633 tokensUpdated yesterday
    Auto-check passed
  • Memory Architecture

    Bitterbot-AI/bitterbot-desktop

    A skill your agent uses when the user asks how your memory, dreams, hormones or knowledge crystals work, or when you need to interpret memorystatus output.

    2.5k GitHub stars~1.2k tokensUpdated yesterday
    Auto-check passed

Works with

Questions about Notte

What does Notte do?

Deploy browser automations as scheduled, API-callable serverless Functions — plus stealth sessions, vault-backed login, captcha solving, and natural-language agent runs via the Notte CLI. Notte is an agent skill from Bitterbot-AI/bitterbot-desktop. Deploy browser automations as scheduled, API-callable serverless Functions — plus stealth sessions, vault-backed login, captcha solving, and natural-language agent runs via the Notte CLI.

When should I use Notte?

Notte fits situations like: tasks that involve Browser automation; tasks that involve Scheduled and recurring tasks; tasks that involve Serverless.

How do I install Notte in Claude Code?

Run `npx skills add Bitterbot-AI/bitterbot-desktop --skill notte -a claude-code`. Or copy the skill folder (skills/notte in Bitterbot-AI/bitterbot-desktop) into .claude/skills/notte in your project. Claude Code loads it when a task matches its description.

How do I install Notte in Codex?

Run `npx skills add Bitterbot-AI/bitterbot-desktop --skill notte -a codex`. Or copy the skill folder (skills/notte in Bitterbot-AI/bitterbot-desktop) into .agents/skills/notte in your project. Codex loads it when a task matches its description.

Can I use Notte in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Bitterbot-AI/bitterbot-desktop --skill notte -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/notte, .gemini/skills/notte, .github/skills/notte and .opencode/skills/notte in your project.

What does Notte need to run?

Going by SKILL.md and its folder, Notte needs the command-line tools its instructions call (brew, curl, go and jq) and credentials named NOTTE_API_KEY and TOTP_BASE32_SECRET. Our summary lists: Python 3; A credential in NOTTE_API_KEY; A credential in TOTP_BASE32_SECRET.

Does Notte access the network?

SKILL.md names 3 domains. In commands or code: api.notte.cc, github.com and news.ycombinator.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is Notte safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Notte use?

Notte is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Notte use?

About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Notte?

Skills that share tags, products or a category with Notte: Minimal Web Baas Demo (TencentCloudBase/CloudBase-AI-Toolkit, 1.1k stars), Scrapingbee CLI (ScrapingBee/scrapingbee-cli, 108 stars), Agents SDK (hodgef/apiker, 127 stars) and Firecrawl Interact Integration (firecrawl/firecrawl, 190k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Notte?

Bitterbot-AI (a GitHub organization) maintains it in Bitterbot-AI/bitterbot-desktop, which has 2,467 GitHub stars. The repository holds 17 skills in this directory. The repository was last updated on October 9, 2026.

Source: Bitterbot-AI/bitterbot-desktop on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.