Dead simple OPC UA browser
Project description
OPGuia
Dead simple OPC UA browser built with Python.
Quick Start
The fastest way to run OPGuia is with uv:
uvx opguia
Don't have uv? Install it with
curl -LsSf https://astral.sh/uv/install.sh | shor see the uv installation docs.
Or install with pip:
pip install opguia
opguia
A native desktop window opens automatically. Enter an OPC UA endpoint or let it auto-discover servers on your network.
Features
Browse & Inspect
- Auto-scan for OPC UA servers on standard ports (4840-4843, 48400-48401, 48010, 53530)
- Tree-table view with inline values, types, and status indicators
- Compact 26px rows — scan hundreds of variables at a glance
- Filter nodes by name
- Full node detail dialog with all OPC UA attributes
- Custom struct types resolved and decoded with per-field display
- Copy any attribute value to clipboard
Write
- Click-to-write for any writable variable with type validation
- Per-index inputs for array types (toggles for booleans, text inputs for numeric/string)
- Integer range checking, float validation, boolean parsing
Monitor
- Watch panel for live variable tracking
- Live time-series graphs per watched variable (ECharts)
- Configurable poll rate (0.1s to 2.0s)
Connect
- Connection profiles with per-profile settings (watched vars, tree root, expanded state)
- SSH port-forwarding tunnel support with password or key-based auth
- Live endpoint health pings on saved profiles
- Headless CLI mode for scripting (
opguia --headless)
Look & Feel
- Material Dark theme
- Native desktop window via pywebview
- Custom app icon on macOS and Windows
CLI Mode
Browse, read, and write without the GUI:
opguia --headless browse opc.tcp://localhost:4840
opguia --headless read opc.tcp://localhost:4840 "ns=2;s=MyVar"
opguia --headless write opc.tcp://localhost:4840 "ns=2;s=MyVar" 42
opguia --headless tree opc.tcp://localhost:4840
opguia --headless info opc.tcp://localhost:4840 "ns=2;s=MyVar"
Development
git clone https://github.com/KyleAlanJeffrey/opguia
cd opguia
uv sync # or: python -m venv .venv && pip install -e .
python main.py
Releasing
Releases trigger via GitHub Actions when a commit with title vX.Y.Z and body containing #release is pushed to main.
Project details
Release history Release notifications | RSS feed
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 opguia-1.9.1.tar.gz.
File metadata
- Download URL: opguia-1.9.1.tar.gz
- Upload date:
- Size: 678.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cf7ccb4c8db5df910ab901e7e6cba8d138cd6cd7ae30d672c0d4868bcdb3c33a
|
|
| MD5 |
5264584fdbdc0399ae61b53773f5abf1
|
|
| BLAKE2b-256 |
2c7d13fc6ade8a7f4b9d5e2311a0e3cc4cf35cbe8d9b47384d20436f87bb886e
|
Provenance
The following attestation bundles were made for opguia-1.9.1.tar.gz:
Publisher:
release.yml on KyleAlanJeffrey/opguia
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
opguia-1.9.1.tar.gz -
Subject digest:
cf7ccb4c8db5df910ab901e7e6cba8d138cd6cd7ae30d672c0d4868bcdb3c33a - Sigstore transparency entry: 1152400716
- Sigstore integration time:
-
Permalink:
KyleAlanJeffrey/opguia@c4d54f3a55055526dc52d4ef9988be890ebf222b -
Branch / Tag:
refs/heads/main - Owner: https://github.com/KyleAlanJeffrey
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c4d54f3a55055526dc52d4ef9988be890ebf222b -
Trigger Event:
push
-
Statement type:
File details
Details for the file opguia-1.9.1-py3-none-any.whl.
File metadata
- Download URL: opguia-1.9.1-py3-none-any.whl
- Upload date:
- Size: 55.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
50e97b6bb1bac023df3614503c425bd6d42545ea8d014222fc556c1975182d73
|
|
| MD5 |
dcc8de54ed465a560b77d46d35242f70
|
|
| BLAKE2b-256 |
2789d556c7007ad62c2267beb61f1b0a3fa3d69baaba8ca72574686e7055af3d
|
Provenance
The following attestation bundles were made for opguia-1.9.1-py3-none-any.whl:
Publisher:
release.yml on KyleAlanJeffrey/opguia
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
opguia-1.9.1-py3-none-any.whl -
Subject digest:
50e97b6bb1bac023df3614503c425bd6d42545ea8d014222fc556c1975182d73 - Sigstore transparency entry: 1152400802
- Sigstore integration time:
-
Permalink:
KyleAlanJeffrey/opguia@c4d54f3a55055526dc52d4ef9988be890ebf222b -
Branch / Tag:
refs/heads/main - Owner: https://github.com/KyleAlanJeffrey
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c4d54f3a55055526dc52d4ef9988be890ebf222b -
Trigger Event:
push
-
Statement type: