An easy pattern to scrap for beginners and for low-hanging fruit automations.
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.
/
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.
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")
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.
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
- 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
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()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)- 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.
This project is intended to be used in editable / development mode.
Using Poetry (recommended):
poetry install
poetry run pytestOr using pip:
pip install -e .- 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
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
Provide a clear, minimal, and hackable local environment for developing and testing browser automations using the Runyx Chromium extension.
Nothing more, nothing less.