Skip to main content

RunBridge Node

Make a local browser available to remote programs and agents.

简体中文 · English · Quick start · Documentation · Changelog (Chinese) · Issues

Python 3.14 MIT

RunBridge Node is the browser execution component of RunBridge. It runs on the browser device, connects to RunBridge Hub, executes Playwright operations in an independent Python worker, and sends results and page frames back to Hub.

Use it to provide an isolated browser test environment, or to reuse an existing Chrome instance's pages and login state with its owner's authorization. Programs and agents access the device through Hub's HTTP / MCP interface; Node manages browser processes, endpoints, and page objects locally.

Highlights

Capability What you can do
Managed browser sessions Launch Chromium for a session and clean up its processes and temporary profile afterward
Existing Chrome reuse Connect to an authorized local instance and retain its original pages and login state when disconnecting
One YAML file Configure Hub, identity, and browser options; automatically enroll, probe, and connect on first startup
Central lease allocation Let Hub manage claims, renewals, and release while Node handles capabilities and execution
Multiple instances per device Provide separate Nodes with independent configurations, identities, and browser resources
Frames and cleanup status Observe the actual page, report cleanup, and quarantine resources when cleanup cannot be confirmed

How it works and which mode to choose

RunBridge Node architecture

Choice managed: isolated browser borrowed: existing Chrome
Typical use Automated tests, independent tasks, agent MCP Existing login state or a specific browser environment
Browser source Chromium launched by Node for the session Local Chrome instance explicitly authorized by its owner
Session end Remove this session's browser and temporary profile Disconnect; retain original pages and login state
Page streaming Capture the managed page directly Install the optional visual extra when needed
Client entry Hub HTTP / MCP Hub HTTP
Guide Managed Chromium Existing Chrome

Inspect online status, occupancy, and capabilities in the Hub dashboard. Managed mode is headless by default; subscribe to page frames through Hub. Node does not have a separate web management UI.

Quick start

Install from PyPI after this version is published

Prepare Python 3.14, uv, and Hub enrollment material as described below. Until upload, use the source route. With this installation, continue at step 2.

mkdir -p ~/runbridge-node
cd ~/runbridge-node
uv venv --python 3.14 .venv
uv pip install --python .venv/bin/python "runbridge-node[playwright]==0.8.2" -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
.venv/bin/python -m playwright install chromium

1. Install Node and prepare Chromium

On the Node device, prepare Git, Python 3.14.x, and uv. First obtain a reachable Hub base URL and the original enrollment.token from the Hub deployer. Save the token file to ~/Downloads/.

These commands use a macOS / Linux shell and install managed Chromium support:

git clone https://github.com/Pegasus-Yang/Run-Bridge-Node.git
cd Run-Bridge-Node
uv sync --locked --no-dev --extra playwright -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
.venv/bin/python -m playwright install chromium

uv creates .venv at the repository root. Linux also needs the browser's system libraries; see the Playwright browser guide. For installation from a wheel in a separate directory, see deployment.

2. Save enrollment material and configuration

umask 077
mkdir -p .runbridge
cp -n ~/Downloads/enrollment.token .runbridge/enrollment.token
chmod 600 .runbridge/enrollment.token

Create node.yaml in the current installation directory, replacing hub_url with the actual Hub base URL:

hub_url: http://hub.example:8787
enrollment_token_file: .runbridge/enrollment.token
tools:
  playwright: {}

This uses managed, headless Chromium, resource ID chromium, and identity file .runbridge/node.json. Relative paths resolve from the YAML file's directory.

3. Connect and hand off the resource

.venv/bin/runbridge-node run --settings node.yaml

Leave the terminal running. First startup enrolls, probes the browser, and connects; later starts reuse the identity. A separate register command is unnecessary.

Give the logged node_id, resource ID, and mode to the Hub deployer or client. Confirm ONLINE, fresh capabilities, and resource READY / FREE in Hub's dashboard. Follow the Hub client guide to claim Node, operate the page, close the session, and return Node. First startup needs neither a client access file nor Hub's claim credential in the Node process.

Supported scope

  • Current Node: 0.8.2, paired with Hub 0.9.3. Python 3.14.x and matching Python Playwright are required. No separate Node.js/npm deployment or Playwright BrowserServer is needed.
  • 33 project methods are explicitly implemented; see the Hub method reference. Hub provides HTTP / MCP; Node performs local execution.
  • A Node browser resource accepts one active session at a time. Use independent Node instances for concurrent tasks on the same machine.
  • Borrowed authorization covers the entire browser instance. Completed page operations persist; releasing resources does not undo business changes.
  • Browser sessions and Node leases are released separately. Return Node at batch end; a maintainer reviews unknown cleanup.
  • Some CLI messages and Hub dashboard labels remain Chinese. Browser locale defaults are unchanged by the English documentation.

Documentation and help

Start here Contents
Documentation index Reading paths for device maintainers, client handoff, and troubleshooting
Quick start · Deployment Installation, enrollment, connection, handoff, restarts, and long-term operation
Parameters · Annotated YAML CLI, defaults, paths, and browser options
Managed Chromium · Existing Chrome New browsers or an existing login environment
Multiple Nodes Independent identities and concurrent tasks
Page capture · MCP preparation Frame support and agent resources
Browser credentials and test data · Operations Credential prompts, private data, disconnections, cleanup, and upgrades

Development and contributions

Use Issues or submit a Pull Request. Include both component versions, OS, browser version and mode, reproduction steps, and redacted errors.

Development uses the root .venv. The contribution guide covers setup and validation and links to the detailed development manual in Chinese. Maintained by Pegasus-Yang.

License

This project uses the MIT License. Third-party dependencies retain their respective licenses.

Metadata

Release files for runbridge-node 0.8.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for runbridge-node 0.8.2
File Size Uploaded Provenance
runbridge_node-0.8.2.tar.gz 149.4 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for runbridge-node 0.8.2
File Interpreter ABI Platform
runbridge_node-0.8.2-py3-none-any.whl Python 3 none any Details

Total release size: 206.1 kB

Release files / runbridge_node-0.8.2.tar.gz

Download URL runbridge_node-0.8.2.tar.gz
Size 149.4 kB
Tags Source
SHA-256 checksum
How to use checksums
b1d8359522f2330ff2151dfc50e937894f607b90550c43b43d8627a63b5174a3
BLAKE2b-256 checksum
How to use checksums
1fb9a79658e7436ab334832cd1f0fef9334c4496afa487ca6aa6be616c9fe41c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / runbridge_node-0.8.2-py3-none-any.whl

Download URL runbridge_node-0.8.2-py3-none-any.whl
Size 56.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
87a8203dadf9d1293ab604756de30f840c61f162894664fdb9229486e84e905a
BLAKE2b-256 checksum
How to use checksums
e55b6a04aceb08d920a6deed27c732208b32c42b5e68239e74d68ee64681b912
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for runbridge-node 0.8.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.8.2 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page