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 UIrunyx_bridge/README.md- Python bridge and runner detailsexamples/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:
- Starting Runyx Bridge (HTTP + WebSocket)
- Launching Edge or Chrome using Selenium in non-headless mode
- Loading the Runyx extension (unpacked)
- Importing a project JSON from
extension/local/import.json - Sending the activation hotkey (
Ctrl + Shift + F) - 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
- Start Runyx using the Python runner
- Edge/Chrome opens normally (non-headless)
- The Runyx extension is loaded automatically
- The project JSON is imported into storage
- The extension UI is activated via hotkey
- Automation Studio is ready to use
- 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 overviewextension/README.md- extension usage and UIextension/documentation/README.md- architecture and internalsrunyx_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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ba04c479c1deb272c34492b3e3f4fda6f7944e13feb5ed24f9acec8daf4265fb
|
|
| MD5 |
627470e1021131b756ab04dab72edb44
|
|
| BLAKE2b-256 |
25fdcaea4e984784758c04d3a7c03a6157c7e980980a84bcbfe38737dcbea41a
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1449a6336ad480da8d3967bd26531df26a551e7f981edd466e2288b9648f89c8
|
|
| MD5 |
901eda04d57b3edb293d47079e388007
|
|
| BLAKE2b-256 |
f3b17de73681a46fded7176994b6110c297e0dd3031e309876016457ce7ffab2
|