Minimal Web Baas Demo
TencentCloudBase/CloudBase-AI-Toolkit
Fast path for a minimal CloudBase Web + database demo (最小前后端 / 最小可用 fullstack / Lovable-like BaaS).
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.
$ npx skills add Bitterbot-AI/bitterbot-desktop --skill notte -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Bitterbot-AI/bitterbot-desktop notte --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "notte" agent skill from https://github.com/Bitterbot-AI/bitterbot-desktop/tree/main/skills/notte into .claude/skills/notte/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "notte", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Bitterbot-AI/bitterbot-desktop/tree/main/skills/notteType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Bitterbot-AI/bitterbot-desktop --skill notte -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Bitterbot-AI/bitterbot-desktop notte --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Bitterbot-AI/bitterbot-desktop.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/notte .agents/skills/notte && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "notte" agent skill from https://github.com/Bitterbot-AI/bitterbot-desktop/tree/main/skills/notte into .agents/skills/notte/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "notte", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Bitterbot-AI/bitterbot-desktop --skill notte -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Bitterbot-AI/bitterbot-desktop notte --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Bitterbot-AI/bitterbot-desktop.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/notte .cursor/skills/notte && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "notte" agent skill from https://github.com/Bitterbot-AI/bitterbot-desktop/tree/main/skills/notte into .cursor/skills/notte/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "notte", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Bitterbot-AI/bitterbot-desktop.git --path skills/notte--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Bitterbot-AI/bitterbot-desktop --skill notte -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Bitterbot-AI/bitterbot-desktop notte --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Bitterbot-AI/bitterbot-desktop.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/notte .gemini/skills/notte && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "notte" agent skill from https://github.com/Bitterbot-AI/bitterbot-desktop/tree/main/skills/notte into .gemini/skills/notte/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "notte", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Bitterbot-AI/bitterbot-desktop notteInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Bitterbot-AI/bitterbot-desktop --skill notte -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Bitterbot-AI/bitterbot-desktop.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/notte .github/skills/notte && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "notte" agent skill from https://github.com/Bitterbot-AI/bitterbot-desktop/tree/main/skills/notte into .github/skills/notte/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "notte", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Bitterbot-AI/bitterbot-desktop --skill notte -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Bitterbot-AI/bitterbot-desktop notte --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Bitterbot-AI/bitterbot-desktop.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/notte .opencode/skills/notte && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "notte" agent skill from https://github.com/Bitterbot-AI/bitterbot-desktop/tree/main/skills/notte into .opencode/skills/notte/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "notte", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
notteDeploy 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. 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.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit cd4562a. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
brewcurlgojqFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
api.notte.ccgithub.comnews.ycombinator.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
NOTTE_API_KEYTOTP_BASE32_SECRETFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from Bitterbot-AI/bitterbot-desktop at commit cd4562a, republished under its MIT licence (© Bitterbot-AI). 764 words, ~2,838 tokens.
.claude/skills/notte/SKILL.md (or your agent's skills folder).Hosted browser infrastructure with a CLI that does three things the bundled browser tool and Firecrawl cannot:
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.
# 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:
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.| Need | Use |
|---|---|
| Open a tab, click around, take a snapshot | Bundled browser tool (src/browser/) |
| Pull a single page through a stealth fetch | Firecrawl via web_fetch (docs/tools/firecrawl.md) |
| Crystallize a recurring browser flow into a callable API endpoint | notte functions |
| Schedule a browser flow on a cron (dream-cycle aligned) | notte functions schedule-set |
| Run a multi-step task on an authenticated site | notte session |
| Log in without exposing the password to the LLM | notte vault |
| The bundled browser is being challenged with captcha / Cloudflare / DataDome | notte (--solve-captchas, --proxy) |
| Need a residential / geo-located IP | notte |
| Hand a browsing goal to an agent and get a structured answer | notte 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.
# 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=...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 -yobserve 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.
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.
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.
For multi-step goals, hand the task to a Notte agent:
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 traceAgents are cheaper than authoring step-by-step CLI calls when the task has many branches.
| Flag | Effect |
|---|---|
--proxy | Route through Notte's residential proxy pool |
--proxy-country <c> | ISO country code (us, gb, fr, de, …) |
--solve-captchas | Auto-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=false | Required when --cdp-url points to Lightpanda Cloud |
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.
notte page scrape --instructions "Every job posting: title, company, location, salary range" -o json
notte page scrape --instructions "Article body and author" --only-main-contentNote: 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.
Notte ships an MCP server (notte-mcp). It can be called through the existing mcporter skill without installing the Notte CLI:
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.
notte sessions start -o json | jq -r '.viewer_url'
# or
notte sessions viewer| Variable | Purpose |
|---|---|
NOTTE_API_KEY | API key (alternative to notte auth login) |
NOTTE_SESSION_ID | Default session for page commands |
NOTTE_API_URL | Override API endpoint |
NOTTE_MCP_SERVER_PROTOCOL | stdio or sse (only for the MCP server) |
observe before click / fill / scrape. Element IDs come from observe output.observe again — IDs are scoped to the current DOM snapshot.notte sessions stop -y skips the prompt. Idle sessions cost API budget.--cdp-url requires --headless=false. Otherwise the CDP server returns 500.@B3 clicking the wrong element? Fall back to a Playwright selector.notte page press "Escape" then notte page wait 500.| Symptom | Fix |
|---|---|
| Site keeps blocking / shows captcha | Restart with --proxy --solve-captchas |
| Empty / partial scrape | Add notte page wait 1000 then re-observe before scrape |
@B3 clicks the wrong thing | Use a Playwright selector (button:has-text('Submit')) |
| Lightpanda CDP returns 500 | Add --headless=false to sessions start |
| Agent stuck on a captcha | Stop session, restart with --solve-captchas |
| 401 / auth errors | Re-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
Just SKILL.md in skills/notte of Bitterbot-AI/bitterbot-desktop.
Open the folder on GitHubat commit cd4562a
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Notte this skillBitterbot-AI/bitterbot-desktop | 2.5k | — | ~2.8k | Automated safety check: Pass | MIT | |
| Minimal Web Baas DemoTencentCloudBase/CloudBase-AI-Toolkit | 1.1k | 1 repos | ~2.2k | Automated safety check: Pass | MIT | |
| Scrapingbee CLIScrapingBee/scrapingbee-cli | 108 | — | ~3.2k | Automated safety check: Notes | MIT | |
| Agents SDKhodgef/apiker | 127 | 3 repos | ~3k | Automated safety check: Pass | MIT | |
| Firecrawl Interact Integrationfirecrawl/firecrawl | 190k | 1 repos | ~731 | Automated safety check: Pass | ISC | |
| NubaseOtterMind/Nubase | 623 | — | ~2.2k | Automated safety check: Notes | Apache-2.0 |
TencentCloudBase/CloudBase-AI-Toolkit
Fast path for a minimal CloudBase Web + database demo (最小前后端 / 最小可用 fullstack / Lovable-like BaaS).
ScrapingBee/scrapingbee-cli
Fetch and read any web page, search the web, crawl a site, or pull structured data out of pages.
hodgef/apiker
Build AI agents on Cloudflare Workers using the Agents SDK. An agent skill from hodgef/apiker.
firecrawl/firecrawl
Guides adding Firecrawl's /interact endpoint to product code for pages that need clicks, forms, pagination or logged-in flows beyond plain scraping.
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…
sharbelxyz/x-bookmarks
Fetch, summarize, and manage X/Twitter bookmarks via bird CLI or X API v2.
Bitterbot-AI/bitterbot-desktop
Display and control HTML content on connected Bitterbot nodes (Mac, iOS, Android) via the canvas host server.
Bitterbot-AI/bitterbot-desktop
Participate in Moltbook — the social network for AI agents. An agent skill from Bitterbot-AI/bitterbot-desktop.
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.
Bitterbot-AI/bitterbot-desktop
Get stock quotes, company info, market data, and crypto prices.
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.
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.
Works with
Categories
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.
Notte fits situations like: tasks that involve Browser automation; tasks that involve Scheduled and recurring tasks; tasks that involve Serverless.
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.
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.
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.
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.
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.
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.
Notte is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
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.
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.
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.