functions▌
browserbasehq/sdk-functions · updated May 5, 2026
MDX-style export adds YAML metadata + attribution linking explainx.ai and this canonical listing URL.
Deploy serverless browser automation as cloud functions using Browserbase.
Browserbase Functions
Deploy serverless browser automation using the official bb CLI.
Prerequisites
Get API key and Project ID from: https://browserbase.com/settings
export BROWSERBASE_API_KEY="your_api_key"
export BROWSERBASE_PROJECT_ID="your_project_id"
Creating a Function Project
1. Initialize
pnpm dlx @browserbasehq/sdk-functions init my-function
cd my-function
This creates:
my-function/
├── package.json
├── index.ts # Your function code
└── .env # Add credentials here
2. Add Credentials to .env
echo "BROWSERBASE_API_KEY=$BROWSERBASE_API_KEY" >> .env
echo "BROWSERBASE_PROJECT_ID=$BROWSERBASE_PROJECT_ID" >> .env
3. Install Dependencies
pnpm install
Function Structure
import { 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 };
});
Key objects:
context.session.connectUrl- CDP endpoint to connect Playwrightcontext.params- Input parameters from invocation
Development Workflow
1. Start Dev Server
pnpm bb dev index.ts
Server runs at http://127.0.0.1:14113
2. Test Locally
curl -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"}}'
3. Iterate
The dev server auto-reloads on file changes. Use console.log() for debugging - output appears in the terminal.
Deploying
pnpm bb publish index.ts
Output:
Function published successfully
Build ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Function ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Save the Function ID - you need it to invoke.
Quick Reference
| Command | Description |
|---|---|
pnpm dlx @browserbasehq/sdk-functions init <name> | Create new project |
pnpm bb dev <file> | Start local dev server |
pnpm bb publish <file> | Deploy to Browserbase |
For invocation examples, common patterns, and troubleshooting, see REFERENCE.md.
List & Monetize Your Skill
Submit your Claude Code skill and start earning
Discussion
Product Hunt–style comments (not star reviews)- No comments yet — start the thread.
Ratings
4.8★★★★★61 reviews- ★★★★★Chen Reddy· Dec 28, 2024
functions fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
- ★★★★★James White· Dec 28, 2024
We added functions from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
- ★★★★★Chaitanya Patil· Dec 24, 2024
We added functions from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
- ★★★★★Alexander Thompson· Dec 24, 2024
functions reduced setup friction for our internal harness; good balance of opinion and flexibility.
- ★★★★★Chen Sethi· Dec 16, 2024
Keeps context tight: functions is the kind of skill you can hand to a new teammate without a long onboarding doc.
- ★★★★★Hiroshi Liu· Dec 12, 2024
functions has been reliable in day-to-day use. Documentation quality is above average for community skills.
- ★★★★★Fatima Diallo· Dec 12, 2024
functions reduced setup friction for our internal harness; good balance of opinion and flexibility.
- ★★★★★Chen Brown· Dec 8, 2024
functions fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
- ★★★★★Neel Sharma· Nov 19, 2024
functions reduced setup friction for our internal harness; good balance of opinion and flexibility.
- ★★★★★Piyush G· Nov 15, 2024
functions reduced setup friction for our internal harness; good balance of opinion and flexibility.
showing 1-10 of 61