Skip to main content

ORION Lab Bridge

Modular WebSocket bridge for industrial robotics labs. Connects physical and simulated devices (xArm, ABB, Siemens PLC, shell) to the ORION platform.

Quick start

One command — this is the recommended install and upgrade path:

pip install --upgrade "orion-bridge[all]"   # core + GUI + all device drivers
orion                                        # opens the GUI (use `orion --cli` for the terminal menu)

The GUI ships with the core package, so even a plain pip install orion-bridge gives a working orion --gui. On Windows the first run registers the Python Scripts directory in your user PATH automatically — if orion is not recognized right after installing, open a new terminal. If another program named orion shadows the command (e.g. Oracle's ORION disk benchmark), use the orion-bridge alias or python -m orion_bridge.

For a lighter install pick only the device drivers you need:

pip install "orion-bridge[xarm]"    # physical xArm only
pip install "orion-bridge[mujoco]"  # MuJoCo simulation
pip install "orion-bridge[gazebo]"  # Gazebo via rosbridge
pip install "orion-bridge[plc]"     # Siemens S7 snap7
pip install "orion-bridge[http]"    # PLC REST sidecar (Flask)

Available extras: xarm, abb, plc, gazebo, mujoco, http, all

Configuration

Profiles are stored in ~/.orion/connections.toml. The wizard creates this file on first run. You can also edit it directly.

connections.toml format

# Which profile to use when no --connection flag is given
[default]
profile = "mezzanine"

# One [connections.<name>] section per lab
[connections.mezzanine]
server    = "wss://your-server.example.com/ws/robot"
lab_id    = "mezzanine"
bridge_id = "hostname-mezzanine"   # unique per bridge process
token_env = "ORION_TOKEN_MEZZANINE"  # real token read from this env-var

[[connections.mezzanine.devices]]
type = "xarm"
id   = "xarm-lab1"
ip   = "192.168.1.185"

[[connections.mezzanine.devices]]
type = "shell"
id   = "shell-local"

# A second profile (e.g. local dev)
[connections.dev]
server    = "ws://localhost:8000/ws/robot"
lab_id    = "dev"
bridge_id = "localhost-dev"
token_env = "ORION_TOKEN_DEV"

[[connections.dev.devices]]
type    = "xarm"
id      = "xarm6-mujoco"
handler = "mujoco"
viewer  = true
mjcf_path = "sim/models/xarm6/scene_xarm6.xml"

Token management

The token is never stored in the TOML file. Set the env-var named in token_env before starting:

export ORION_TOKEN_MEZZANINE="your-secret-token"
orion --connection mezzanine

Or use a .env file with python-dotenv / direnv.

CLI flags

Flag Description
orion Interactive wizard (first run) or menu
orion --list Print all saved profiles
orion --connection NAME Start bridge using a specific profile
orion --local Run without a server (local dispatch only)
orion --config FILE Legacy: load a JSON config file

Migrating from lab_config.json

If you have a legacy lab_config.json from an older installation, run orion once — the bridge automatically detects the file and migrates it to connections.toml. The JSON file is left untouched.

You can also migrate manually from Python:

from orion_bridge.connections import migrate_from_json
name = migrate_from_json("lab_config.json")
print(f"Migrated to profile '{name}'")

Supported devices

Type Handler Notes
xarm physical (default) UFACTORY SDK over IP
xarm mujoco MuJoCo simulation (pip install mujoco)
xarm gazebo Gazebo via rosbridge (pip install roslibpy)
abb TCP socket RAPID SocketServer
plc snap7 Siemens S7-1200 (pip install python-snap7)
shell subprocess Local commands (whitelisted)

Environment variables

Variable Required Description
ORION_BRIDGE_ID Yes Unique bridge ID, provisioned by owner
ORION_BRIDGE_TOKEN Yes Unique bridge token, provisioned by owner
SUPABASE_URL Yes Supabase project URL
SUPABASE_ANON_KEY Yes (for orion login) Anon key — NOT service_role

Authentication

Bridges have two authentication layers:

  1. Bridge identity: ORION_BRIDGE_ID + ORION_BRIDGE_TOKEN, provisioned once and stored in .env. Required for the bridge to connect to the server.
  2. User identity: orion login with email OTP. Required for orion repl.
orion login     # sends OTP to your email, stores JWT in ~/.orion/credentials.json
orion logout    # removes stored credentials
orion repl      # interactive REPL — requires prior login

orion (menu) and orion --start work without login.

Development

pip install -e ".[all]"   # editable install with all extras
pytest tests/ -v

Metadata

Release files for orion-bridge 3.6.5

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

Source distribution (sdist)

Source distribution for orion-bridge 3.6.5
File Size Uploaded
orion_bridge-3.6.5.tar.gz 3.4 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for orion-bridge 3.6.5
File Interpreter ABI Platform
orion_bridge-3.6.5-py3-none-any.whl Python 3 none any Details

Total release size: 6.8 MB

Release files / orion_bridge-3.6.5.tar.gz

Download URL orion_bridge-3.6.5.tar.gz
Size 3.4 MB
Tags Source
SHA-256 checksum
How to use checksums
d706a50f0faf084cd6286ebed6e7f1976126c8be2f20879a469384e8b62e2956
BLAKE2b-256 checksum
How to use checksums
3c45eae7c4884f4f56ddd8cf57f6ea608608f17785ce2a6749dc213d7a8c9e88
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.11

Release files / orion_bridge-3.6.5-py3-none-any.whl

Download URL orion_bridge-3.6.5-py3-none-any.whl
Size 3.4 MB
Tags Python 3
SHA-256 checksum
How to use checksums
18ee5da66711306de4faa9b0cbcf1740e58c5070bebefdd393875272f88bd95b
BLAKE2b-256 checksum
How to use checksums
794cb65787f1c4add71fe247b09c9f6c0c7ee355673ad048278298e3c0430d2a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.11

Release history Release notifications | RSS feed

3.12.0

2 release files

3.11.0

2 release files

3.10.0

2 release files

3.9.0

2 release files

3.8.2

2 release files

3.8.1

2 release files

3.8.0

2 release files

3.7.0

2 release files

This release

3.6.5 This release

2 release files

3.6.4

2 release files

3.6.3

2 release files

3.6.2

2 release files

3.6.1

2 release files

3.6.0

2 release files

3.5.0

2 release files

3.4.0

2 release files

3.3.0

2 release files

3.2.4

2 release files

3.2.3

2 release files

3.2.2

2 release files

3.2.1

2 release files

3.2.0

2 release files

3.1.3

2 release files

3.1.2

2 release files

3.1.1

2 release files

3.1.0

2 release files

3.0.1

2 release files

3.0.0

2 release files

2.1.4

2 release files

2.1.3

1 release file

2.1.2

1 release file

2.1.1

1 release file

2.1.0

1 release file

2.0.8

1 release file

2.0.7

1 release file

2.0.6

1 release file

2.0.5

1 release file

2.0.4

1 release file

2.0.3

1 release file

2.0.2

1 release file

2.0.1

1 release file

2.0.0

2 release files

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