Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

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.

timeline view tracing one interaction

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 JSON context → bus)
  • Ring buffer with configurable capacity and since_id pagination
  • 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

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

ovos_busmon-0.1.0a1.tar.gz (17.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ovos_busmon-0.1.0a1-py3-none-any.whl (11.1 kB view details)

Uploaded Python 3

File details

Details for the file ovos_busmon-0.1.0a1.tar.gz.

File metadata

  • Download URL: ovos_busmon-0.1.0a1.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

Hashes for ovos_busmon-0.1.0a1.tar.gz
Algorithm Hash digest
SHA256 939cb6b9c98b9c08ec288836d426c77ad231a6fdfb4bcf4f4841fa0162e2c8be
MD5 74cdf5ff5590ab45394acb60af5c30dd
BLAKE2b-256 9a4474e9bd6d81156c83315586ca347810612d8a32697bbfe637f8b8b3aad43a

See more details on using hashes here.

File details

Details for the file ovos_busmon-0.1.0a1-py3-none-any.whl.

File metadata

  • Download URL: ovos_busmon-0.1.0a1-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

Hashes for ovos_busmon-0.1.0a1-py3-none-any.whl
Algorithm Hash digest
SHA256 8ab656fe46736a9b453ebd27fb1212964d733f2c336c4926a1cd179b2543ee5c
MD5 a7c1c62bdb45581fb2fc78a1b2baf825
BLAKE2b-256 b9f3a27489b7bda7ac8cbbf68e20caca6845ceb6a9c1e31c06f8918e67c12b2c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page