npx skills add ...
npx skills add browserbase/skills --skill functions
npx skills add browserbase/skills --skill functions
Deploy serverless browser automation as cloud functions using Browserbase. Use when the user wants to deploy browser automation to run on a schedule or cron, create a webhook endpoint for browser tasks, run automation in the cloud instead of locally, or asks about Browserbase Functions.
Deploy serverless browser automation using the official browse CLI.
Get an API key from: https://browserbase.com/settings
This creates:
Key objects:
context.session.connectUrl - CDP endpoint to connect Playwrightcontext.params - Input parameters from invocationServer runs at http://127.0.0.1:14113
The dev server auto-reloads on file changes. Use console.log() for debugging - output appears in the terminal.
Output:
Save the Function ID - you need it to invoke.
| Command | Description |
|---|---|
browse functions init <name> | Create new project |
browse functions dev <file> | Start local dev server |
browse functions publish <file> | Deploy to Browserbase |
For invocation examples, common patterns, and troubleshooting, see REFERENCE.md.
pnpm installimport { defineFn } from "@browserbasehq/sdk-functions";
import { chromium } from "playwright-core";
defineFn("my-function", async (context) => {
const { session, params } = context;
// Connect to browser
const browser = await chromium.connectOverCDP(session.connectUrl);
const page = browser.contexts()[0]!.pages()[0]!;
// Your automation
await page.goto(params.url || "https://example.com");
const title = await page.title();
// Return JSON-serializable result
return { success: true, title };
});browse functions dev index.tscurl -X POST http://127.0.0.1:14113/v1/functions/my-function/invoke \
-H "Content-Type: application/json" \
-d '{"params": {"url": "https://news.ycombinator.com"}}'browse functions publish index.tsFunction published successfully
Build ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Function ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx