ovos-busmon
Live monitor, capture, and injection tool for the OpenVoiceOS messagebus. Stream every bus message to a browser, filter by type (glob), inspect payloads, export captures as JSONL, and inject messages directly from the UI.
See docs/usage.md for a full walkthrough with screenshots.
Debug your OVOS device from a URL
The monitor UI is a single static page. Hosted on GitHub Pages, anyone can open
the URL on a laptop that can reach an OVOS device and connect to its messagebus
immediately — no install, no server: the page opens a WebSocket straight to
ws://localhost:8181/core (host/port configurable in the connection panel or
via ?host=&port= query parameters).
Browser note: Chromium-based browsers allow a ws://localhost connection from
an https:// page (localhost is a trustworthy origin); Safari and some Firefox
versions block it. If the connection is refused, use the Download standalone
HTML button in the UI and open the saved file locally — identical
functionality, no restrictions.
Two transport modes — one UI
Mode 1 — fully in-browser (zero server)
Open static/index.html directly (or deploy it to GitHub Pages).
The page opens a WebSocket directly to the OVOS messagebus (ws://localhost:8181/core by default).
Configure host/port/path via the connection panel in the UI or via query parameters:
file:///path/to/static/index.html?host=192.168.1.10&port=8181&path=/core
Works whenever the browser can reach the bus (same machine as OVOS, or LAN). No server required.
Mode 2 — service (ovos-busmon)
Install and run the FastAPI service.
It connects server-side to the bus via ovos-bus-client and serves:
| Endpoint | Description |
|---|---|
GET / |
The same static UI (auto-detected transport: SSE instead of WS) |
GET /api/status |
Service health, buffer stats, bus coordinates |
GET /api/messages |
Ring buffer contents (?since_id=N&limit=M) |
GET /api/stream |
SSE live tail |
POST /api/send |
Inject a message onto the bus |
POST /api/chat |
Send a text utterance as a real client would (chat panel) |
GET /api/export |
JSONL download of the full capture buffer |
The UI auto-detects which transport to use:
- served from
http:///https://→ SSE + REST (Mode 2) - opened as
file://or from a static host → direct WebSocket (Mode 1)
Installation
pip install ovos-busmon
Or from source:
git clone https://github.com/OpenVoiceOS/ovos-busmon
cd ovos-busmon
pip install -e .[dev]
Running the service
ovos-busmon
# Listens on http://127.0.0.1:8005 by default
Configuration
All settings via environment variables (or a .env file):
| Variable | Default | Description |
|---|---|---|
OVOS_BUS_HOST |
localhost |
OVOS messagebus host |
OVOS_BUS_PORT |
8181 |
OVOS messagebus port |
BUSMON_HOST |
127.0.0.1 |
Address to bind the HTTP service |
BUSMON_PORT |
8005 |
Port to bind the HTTP service |
BUSMON_USERNAME |
ovos |
HTTP Basic auth username |
BUSMON_PASSWORD |
ovos |
HTTP Basic auth password |
BUFFER_SIZE |
2000 |
Ring buffer capacity (messages) |
Docker
docker compose up --build
The compose file binds the service to 127.0.0.1:8005 only (localhost).
To reach an OVOS bus on the host machine, OVOS_BUS_HOST=host.docker.internal is set automatically.
Message injection
The Inject panel is a power tool.
It sends arbitrary messages onto the bus — useful for development and testing.
By default the service binds only to 127.0.0.1; do not expose it to untrusted networks.
Features
- Live message stream with expandable, syntax-highlighted JSON (vendored highlighter — fully offline, no CDN)
- Timeline view: group the stream by session into expandable per-interaction traces with category badges
- Chat panel: converse with the assistant in text with a stable session id (multi-turn/converse works) while watching the bus handle each turn
- Filter by message type (glob patterns — e.g.
ovos.*,recognizer_loop:*) - Full-text search across type / data / context / session
- Filter by session ID, source, destination
- Sort newest-first or oldest-first
- Pause/resume capture, plus auto-pause on filter match
- Bounded client-side buffer (configurable, dropped-count visible)
- Export as JSONL or JSON (client-side or via
/api/export) - Message injection (type + JSON
data+ optional JSONcontext→ bus) - Ring buffer with configurable capacity and
since_idpagination - GitHub Pages deployable (Mode 1 — no server needed)
Development
pip install -e .[dev]
pytest tests/ -v
Security
ovos-busmon is a local debugging tool.
HTTP Basic auth protects the service endpoint, but credentials are sent in plaintext unless you add TLS.
Keep the default 127.0.0.1 binding.
The injection endpoint gives anyone who can reach it full ability to emit any message on the bus.
Do not expose it to the public internet or run it unattended.
Related projects
- ovos-messagebus — the bus server this tool monitors
- ovos-bus-client — the client library used in service mode
- ovos-core — the intent pipeline whose traffic you'll be tracing
- hivemind-core — protected remote access to a bus, busmon works there too
License
MIT — see LICENSE.
Credits
Developed by TigreGotico for OpenVoiceOS.
Funded by NGI0 Commons Fund / NLnet under grant agreement No 101135429, through the European Commission's Next Generation Internet programme.
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 ovos_busmon-0.1.0.tar.gz.
File metadata
- Download URL: ovos_busmon-0.1.0.tar.gz
- Upload date:
- Size: 17.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7726ae32437f2112648efef01a0100f759132f3d3cba327baa876e5ba203cb88
|
|
| MD5 |
b4448a04b9c7f7f194f03fcb086e1a5c
|
|
| BLAKE2b-256 |
b5a8bc6c1cf1452cf4fd03d7ffedc0ba913ffadcf69706653e3d417ea2a93ed6
|
File details
Details for the file ovos_busmon-0.1.0-py3-none-any.whl.
File metadata
- Download URL: ovos_busmon-0.1.0-py3-none-any.whl
- Upload date:
- Size: 11.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b23b284b558d776d85affa0b6a9cb6e6efae1f59f312a651e7f9f99c2ae6f985
|
|
| MD5 |
6143eafd9f7e6a49e19adb926785c827
|
|
| BLAKE2b-256 |
302104bea5d70e694d50afe100e2af62ea033b4b946f40d2fe3a234447a49706
|