Skip to main content

bussdcc-system

Project description

bussdcc-system

bussdcc-system is a reference application demonstrating how to build a real system using bussdcc — a deterministic cybernetic runtime for Python.

It monitors host system health and exposes:

  • live metrics via a web dashboard
  • structured event streams
  • historical JSONL logging
  • real-time UI updates through WebSockets

The project is intentionally small but complete. It shows how services, processes, interfaces, and sinks work together inside a bussdcc runtime.

Overview

This application collects and visualizes system telemetry:

  • CPU usage
  • Memory usage
  • Disk usage
  • System load averages
  • CPU temperature
  • Network throughput
  • Hardware throttling / undervoltage status (Raspberry Pi compatible)
  • Host identity information

The runtime emits events continuously, which are:

  1. processed into state
  2. streamed to a web interface
  3. logged to disk

This demonstrates bussdcc’s core pattern:

Service → Events → Process → State → Interface → UI
             ↓
           Sinks

Architecture

The project intentionally mirrors bussdcc’s runtime model.

Services

SystemService

Runs periodically and emits system telemetry events:

system.memory.usage.updated
system.cpu.usage.updated
system.disk.usage.updated
system.temperature.updated
system.network.usage.updated
system.throttling.updated

Services are responsible only for observing the world and emitting events.

Processes

SystemProcess

Consumes events and updates runtime state:

ctx.state.set("system.cpu.usage", evt.data)

Processes transform event streams into structured shared state.

Interface

SystemWebInterface

  • Runs a Flask + Socket.IO server
  • Streams runtime events to the browser
  • Renders state snapshots on page load

Interfaces expose the system externally without coupling to services.

Event Sinks

Two sinks demonstrate observability patterns:

ConsoleSink

Prints structured JSON events to stdout.

JsonlSink

Writes rotating JSONL event logs:

data/history/YYYY-MM-DD/HH-MM-SS.jsonl

Each line is a single immutable event record.

Dashboard

The web UI provides live system visibility:

  • ✅ Health status indicator
  • CPU usage breakdown
  • Memory & disk utilization
  • Load averages
  • Network throughput per interface
  • Thermal & power throttling detection

Updates occur in real time using Socket.IO events emitted directly from the runtime.

Installation

Requires Python 3.11+.

Standard Install (Recommended)

Install from PyPI:

pip install bussdcc-system-health

Or install locally for development:

pip install -e .

Linux / Raspberry Pi Setup

On Debian-based systems (including Raspberry Pi OS), install required system packages:

sudo apt-get update
sudo apt-get install -y \
    python3-pip \
    python3-flask \
    python3-psutil \
    python3-flask-socketio \
    python3-flask-bootstrap

Then install the application:

pip install bussdcc-system-health --break-system-packages

--break-system-packages may be required on newer Debian and Raspberry Pi OS releases due to externally-managed Python environments (PEP 668).

Optional: Virtual Environment (Alternative)

If you prefer not to use --break-system-packages:

python3 -m venv .venv
source .venv/bin/activate
pip install bussdcc-system-health

Running

Start the runtime:

bussdcc-system-health

Then open:

http://localhost:8086

Example Event Output

Console sink output:

{"time":"2026-01-01T12:00:00Z","name":"system.cpu.usage.updated","data":{"user":12.4,"system":3.1,"idle":84.5}}

This illustrates bussdcc’s core idea:

the system is an event stream first, UI second.

Project Structure

bussdcc_system_health/
├── cli.py            # runtime entrypoint
├── runtime/          # custom runtime lifecycle
├── services/         # telemetry collection
├── processes/        # state projection
├── interfaces/       # web UI
└── sinks/            # event logging

What This Example Demonstrates

This project is designed as a learning reference for bussdcc concepts:

Concept Demonstrated By
Deterministic runtime custom Runtime
Periodic services SystemService
Event-driven state SystemProcess
External interfaces Flask web UI
Observability sinks
Real-time updates Socket.IO bridge

Why bussdcc?

Traditional applications couple:

logic ↔ UI ↔ IO ↔ background work

bussdcc separates responsibilities through events:

observe → emit → transform → expose

This leads to systems that are:

  • easier to reason about
  • deterministic
  • observable by default
  • naturally extensible

Hardware Notes

Some features depend on Linux system interfaces:

Feature Platform
CPU temperature Linux SBC / Raspberry Pi
Throttling detection Raspberry Pi firmware
Network metrics Linux

The application still runs on non-Pi systems, but certain fields may be unavailable.

Development

Install dependencies:

pip install -e .[dev]

Run directly:

python -m bussdcc_system_health.cli

License

MIT License

Related

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bussdcc_system-0.43.0.tar.gz (32.7 kB view details)

Uploaded Source

Built Distribution

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

bussdcc_system-0.43.0-py3-none-any.whl (39.8 kB view details)

Uploaded Python 3

File details

Details for the file bussdcc_system-0.43.0.tar.gz.

File metadata

  • Download URL: bussdcc_system-0.43.0.tar.gz
  • Upload date:
  • Size: 32.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for bussdcc_system-0.43.0.tar.gz
Algorithm Hash digest
SHA256 bcadb6efbe26b4711bb970a95b101e16a783557088d51bc045ca68bcc9baa582
MD5 9ee0c5edb88ba1779e33903fca3129c0
BLAKE2b-256 364a870a7cd968f134143bf73af18f8f8f517f70109f7a72a7613300a5a0b3ee

See more details on using hashes here.

File details

Details for the file bussdcc_system-0.43.0-py3-none-any.whl.

File metadata

  • Download URL: bussdcc_system-0.43.0-py3-none-any.whl
  • Upload date:
  • Size: 39.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for bussdcc_system-0.43.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3c47e50ba62199bd3c0d53b55dbf2d7df83036fb12d1f86ade16d934451107b6
MD5 0406a86169419dd539379c3594d051a3
BLAKE2b-256 24d02885e805707766539cac89e31571f71ee755d1d7341d4f0c639d1d3ca514

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 Pingdom Monitoring Sentry Error logging StatusPage Status page