Skip to main content

Local bridge for Runyx extension

Project description

Runyx Project Overview

This repository contains Runyx, a browser automation platform composed of a Chromium extension and a local Python runtime used for development, testing, and orchestration.

At a high level:

  • The Chromium extension provides the Automation Studio UI and executes automations in the browser.
  • The Runyx Bridge is a lightweight local server (HTTP + WebSocket) used during development.
  • The Runyx App (Runner) is an object-oriented Python entrypoint that:
    • starts the Bridge
    • launches Edge or Chrome via Selenium (non-headless)
    • loads the extension
    • imports a project JSON on startup (from extension/local/import.json)
    • activates the extension via hotkey

Each component can be used independently, but together they form the full local Runyx development experience.


Repository structure

/
extension/          # Chromium extension (runtime + UI)
runyx_bridge/       # Python bridge + runner (MVP)
README.md           # <- this file

Each main folder has its own README with deeper details:

  • extension/README.md - extension usage and UI
  • runyx_bridge/README.md - Python bridge and runner details
  • examples/README.md

This root README explains how everything fits together.


Core components

1) Chromium extension

The extension contains:

  • Runtime
    • Service Worker
    • Content Script
    • Bridge between UI and page context
  • Automation Studio UI
    • Built with Next.js
    • Embedded into the extension
    • Also available inside DevTools

The extension is responsible for:

  • Managing workflows, triggers, and steps
  • Executing DOM actions (click, type, wait, extract, screenshot, etc.)
  • Collecting artifacts (cookies, page source, screenshots)
  • Communicating with Runyx Bridge (HTTP + WebSocket)

Load it locally via:

chrome://extensions -> Developer mode -> Load unpacked -> extension/

For Edge:

edge://extensions -> Developer mode -> Load unpacked -> extension/

The UI can be opened via:

  • Extension icon
  • Ctrl + Shift + F
  • DevTools tab ("Runyx")

2) Runyx Bridge (MVP)

Runyx Bridge is a development-only Python library that exposes:

  • HTTP server
    • Receives data from the extension
    • Endpoints are defined via decorators
    • CORS is fully open (by design)
  • WebSocket server
    • Used only as a trigger source
    • Emits events that start workflows in the extension

Key characteristics:

  • Minimal by design (MVP)
  • No authentication
  • No persistence
  • No production guarantees

It exists solely to support local development and testing.

See full details in runyx_bridge/README.md.


3) Runyx App (Python Runner)

The Runyx App is the orchestration layer that ties everything together.

It is responsible for:

  1. Starting Runyx Bridge (HTTP + WebSocket)
  2. Launching Edge or Chrome using Selenium in non-headless mode
  3. Loading the Runyx extension (unpacked)
  4. Importing a project JSON from extension/local/import.json
  5. Sending the activation hotkey (Ctrl + Shift + F)
  6. Keeping the environment alive (server mode) or exiting cleanly

This makes it possible to:

  • Start the entire Runyx stack with a single Python script
  • Test the extension without manual browser setup
  • Automate local development flows

Typical local development flow

  1. Start Runyx using the Python runner
  2. Edge/Chrome opens normally (non-headless)
  3. The Runyx extension is loaded automatically
  4. The project JSON is imported into storage
  5. The extension UI is activated via hotkey
  6. Automation Studio is ready to use
  7. HTTP + WebSocket endpoints are available locally

Example: minimal runner usage

from runyx_bridge import RunyxApp

app = RunyxApp(
    extension_path="./extension",
    import_project_path="./my-first-project-project.json",
    require_import=True,
    requests=True,
    websocket=True,
    on_background=False,  # server mode
)

app.start()

Using Runyx Bridge standalone

The Bridge can also be used without Selenium if you prefer to:

  • open Edge or Chrome manually
  • load the extension yourself
  • trigger workflows via WebSocket
  • receive data via HTTP

Example:

from runyx_bridge import run, receive

@receive("/receive")
def handle_data(payload, meta):
    print(payload)
    return "ok"

run(requests=True, websocket=True, on_background=False)

How communication works (high level)

  • WebSocket
    • External systems Bridge Extension
    • Used only for triggers
  • HTTP
    • Extension Bridge
    • Used for screenshots, cookies, page source, extracts, etc.

The extension always remains the execution authority.


Installation (Python side)

This project is intended to be used in editable / development mode.

Using Poetry (recommended):

poetry install
poetry run pytest

Or using pip:

pip install -e .

Important notes

  • Runyx Bridge is not production software
  • CORS is fully open intentionally
  • Selenium runs Edge or Chrome non-headless
  • Hotkey activation depends on OS window focus
  • The extension can also be used manually without the runner
  • Project data is imported on startup from extension/local/import.json

Documentation map

  • README.md (this file) - project overview
  • extension/README.md - extension usage and UI
  • extension/documentation/README.md - architecture and internals
  • runyx_bridge/README.md - Python bridge and runner details
  • examples/README.md -> runnable bridge/runner examples

Project goal

Provide a clear, minimal, and hackable local environment for developing and testing browser automations using the Runyx Chromium extension.

Nothing more, nothing less.

Project details


Download files

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

Source Distribution

runyx-1.0.1.tar.gz (15.7 kB view details)

Uploaded Source

Built Distribution

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

runyx-1.0.1-py3-none-any.whl (17.2 kB view details)

Uploaded Python 3

File details

Details for the file runyx-1.0.1.tar.gz.

File metadata

  • Download URL: runyx-1.0.1.tar.gz
  • Upload date:
  • Size: 15.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.2 Windows/11

File hashes

Hashes for runyx-1.0.1.tar.gz
Algorithm Hash digest
SHA256 ba04c479c1deb272c34492b3e3f4fda6f7944e13feb5ed24f9acec8daf4265fb
MD5 627470e1021131b756ab04dab72edb44
BLAKE2b-256 25fdcaea4e984784758c04d3a7c03a6157c7e980980a84bcbfe38737dcbea41a

See more details on using hashes here.

File details

Details for the file runyx-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: runyx-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 17.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.2 Windows/11

File hashes

Hashes for runyx-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1449a6336ad480da8d3967bd26531df26a551e7f981edd466e2288b9648f89c8
MD5 901eda04d57b3edb293d47079e388007
BLAKE2b-256 f3b17de73681a46fded7176994b6110c297e0dd3031e309876016457ce7ffab2

See more details on using hashes here.

Supported by

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