Skip to main content

BRUI Core (Browser UI Automation Core)

A flexible and robust browser UI automation framework that provides essential functionality for browser-based UI automation projects.

Features

  • Browser Management: Automated browser launching and control across different operating systems
  • Configuration Handling: Flexible configuration management with TOML and environment variable support
  • Clipboard Integration: Easy clipboard monitoring and manipulation
  • UI Integration Base: Extensible base classes for UI automation
  • Cross-Platform Support: Works on Linux and macOS

Installation

From PyPI (recommended)

pip install brui_core

From source (editable)

Using uv (recommended)

git clone https://github.com/AutoByteus/brui_core.git
cd brui_core
uv sync

Development / testing extras

With uv, dev dependencies are synced by default. To sync all extras:

uv sync --all-extras

Build the distribution

This project utilizes uv for modern, isolated builds:

# Build with specific Python version
uv build --python 3.11

This will produce the source distribution and wheel in the dist/ directory.

Quick Start

from brui_core.ui_integrator import UIIntegrator

async def main():
    # Initialize the UI integrator
    ui = UIIntegrator()
    await ui.initialize()

    try:
        # Your automation code here
        pass
    finally:
        # Clean up
        await ui.close()

# Run with asyncio
import asyncio
asyncio.run(main())

Lifecycle Note

UIIntegrator now uses explicit lifecycle control only. It does not run a background keep-alive loop. If your page is closed and you need a fresh tab, call await ui.reopen_page() explicitly.

Requirements

  • Python 3.11+
  • Playwright (pinned in pyproject.toml and installed automatically)
  • Chrome/Chromium browser installed
  • Pillow, pyperclip, and other transitive dependencies installed with the package

Configuration

The framework is configured using environment variables:

Environment Variable Description Default
CHROME_PROFILE_DIRECTORY Chrome profile to use Profile 1
CHROME_REMOTE_DEBUGGING_PORT Remote debugging port 9222
CHROME_DOWNLOAD_DIRECTORY Directory for downloads (System Default)
CHROME_USER_DATA_DIR User data directory for session persistence (System Default)

Session Persistence (Logins & Cookies)

To maintain login states (cookies, local storage, cache) across different automation runs, you can configure the user_data_dir.

  • Default Behavior: If user_data_dir is not set, Chrome uses your system's default user profile (e.g., ~/.config/google-chrome on Linux). This means your automation shares the same session as your personal browsing.
  • Custom / Isolated Session: To keep your automation isolated (or to maintain multiple distinct signed-in states), set user_data_dir to a specific path. As long as you point to the same directory, Chrome will restore your previous session, keeping you logged in.
  • Chrome/Chromium 136+ Requirement: Recent Chrome and Chromium versions (136+) refuse to enable remote debugging on the default profile directory. You must set user_data_dir to a non-default path for CDP to work.

Example (Environment Variable):

export CHROME_USER_DATA_DIR="./my-bot-profile"

Manual Smoke Tests

This repo includes a few manual smoke tests under scripts/ to verify local setup. These are not part of automated CI.

Browser CDP connectivity

uv run python scripts/test_browser.py

This connects to a running Chromium instance over CDP on http://localhost:9222 and opens Google.

UIIntegrator sanity check

uv run python scripts/test_ui_integrator.py

This initializes UIIntegrator, opens a page, and optionally writes a screenshot.

LLM server + Chromium Docker check

bash scripts/test_llm_server_docker.sh

This waits for a local LLM server on port 51739 and Chromium on port 9222, then probes their HTTP endpoints.

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

For support, please open an issue in the GitHub repository.

Acknowledgments

  • Built with Playwright
  • Developed by AutoByteus

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

brui_core-2.0.2.tar.gz (13.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

brui_core-2.0.2-py3-none-any.whl (12.1 kB view details)

Uploaded Python 3

File details

Details for the file brui_core-2.0.2.tar.gz.

File metadata

  • Download URL: brui_core-2.0.2.tar.gz
  • Upload date:
  • Size: 13.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for brui_core-2.0.2.tar.gz
Algorithm Hash digest
SHA256 2cb1e4759b886069bd05c1d7a48d292f13febbf6af6a5ef00cdaf800238611af
MD5 9091e8fa9ca76f6cea8f3b94ce3bbf6c
BLAKE2b-256 ffbba5d5aa8fda58ada7bae70191f3476299dbc7e046bdb890cce2aa27a4056a

See more details on using hashes here.

Provenance

The following attestation bundles were made for brui_core-2.0.2.tar.gz:

Publisher: release.yml on AutoByteus/brui_core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file brui_core-2.0.2-py3-none-any.whl.

File metadata

  • Download URL: brui_core-2.0.2-py3-none-any.whl
  • Upload date:
  • Size: 12.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for brui_core-2.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 e7d2cde5bc82f65856639ffe871be11925a585bb44973da83f6620e49597faa5
MD5 3e78a330a5e270c89fa9eb699aea9671
BLAKE2b-256 fda922a0c0465202984ef403f2b4d7b847806b90bc457172902f85dc8ffcfe7f

See more details on using hashes here.

Provenance

The following attestation bundles were made for brui_core-2.0.2-py3-none-any.whl:

Publisher: release.yml on AutoByteus/brui_core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

2.0.2 This release

2 files

2.0.1

2 files

2.0.0

2 files

1.2.1

2 files

1.2.0

2 files

1.1.0

2 files

1.0.9

2 files

1.0.8

2 files

1.0.7

2 files

1.0.6

2 files

1.0.5

2 files

1.0.4

2 files

1.0.2

2 files

1.0.1

2 files

1.0.0

2 files

0.1.0

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page