New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

breamer

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

breamer

Always-on CDP server via WSS for remote browser automation

latest
npmnpm
Version
0.1.2
Version published
Maintainers
1
Created
Source

breamer

Always-on CDP (Chrome DevTools Protocol) server via WSS for remote browser automation.

Run a persistent Chrome browser on any machine, expose it via Cloudflare Tunnel, and connect from anywhere using Puppeteer.

Quick Start

npx breamer

Or with options:

npx breamer --port 3000 --browser browser.yourdomain.com

CLI Options

OptionEnv VariableDefaultDescription
-p, --portPORT3000HTTP server port
-c, --chrome-portCHROME_DEBUG_PORT9222Chrome remote debugging port
-t, --tunnelTUNNEL_HOSTNAME-Cloudflare Tunnel hostname for HTTP API
-b, --browserBROWSER_HOSTNAME-Cloudflare Tunnel hostname for Chrome WebSocket
--headlessHEADLESS=truefalseRun Chrome in headless mode
--heap-sizeCHROME_HEAP_SIZE_MB512Chrome V8 heap size limit in MB

Cloudflare Tunnel Setup

Expose both the HTTP server and Chrome's debug port:

# Terminal 1: HTTP API
cloudflared tunnel --url http://localhost:3000

# Terminal 2: Chrome WebSocket
cloudflared tunnel --url http://localhost:9222

Pass both hostnames to breamer:

npx breamer --tunnel api.yourdomain.com --browser browser.yourdomain.com

API Endpoints

GET /

Service info.

GET /health

Health check with browser connection status and metrics:

  • Uptime
  • Pages created/navigated/closed
  • Console and page errors

GET /cdp

Get the WebSocket endpoint for browser connection.

Connecting from a Client

import puppeteer from "puppeteer";

// Fetch the CDP endpoint
const res = await fetch("https://api.yourdomain.com/cdp");
const { wsEndpoint } = await res.json();

// Connect to the remote browser
const browser = await puppeteer.connect({
  browserWSEndpoint: wsEndpoint,
  defaultViewport: null,
});

// Use it!
const page = await browser.newPage();
await page.goto("https://example.com");

Programmatic Usage

import { startServer } from "breamer";

await startServer({
  port: 3000,
  chromeDebugPort: 9222,
  browserHostname: "browser.yourdomain.com",
  tunnelHostname: "api.yourdomain.com",
  headless: false,
});

License

ISC

Keywords

cdp

FAQs

Package last updated on 16 Dec 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts