Skip to main content

bussdcc-system-health

This project has been archived.

The maintainers of this project have marked this project as archived. No new releases are expected.

Project description

BussDCC System Health

bussdcc-system-health 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_health-0.12.0.tar.gz (20.2 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_health-0.12.0-py3-none-any.whl (19.0 kB view details)

Uploaded Python 3

File details

Details for the file bussdcc_system_health-0.12.0.tar.gz.

File metadata

  • Download URL: bussdcc_system_health-0.12.0.tar.gz
  • Upload date:
  • Size: 20.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for bussdcc_system_health-0.12.0.tar.gz
Algorithm Hash digest
SHA256 9b235592826a503c5fb8623b18697850e99fe0e7e01815b02cc23c6f234bb171
MD5 0a60c4e7cd5e3861694a58aab00c1ec4
BLAKE2b-256 5680f5b4113dc3903132d05bdaf25564711a022937e63819940326bfab5a5f97

See more details on using hashes here.

File details

Details for the file bussdcc_system_health-0.12.0-py3-none-any.whl.

File metadata

File hashes

Hashes for bussdcc_system_health-0.12.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1ee332f7dd0cafb86be9b6ee4f280cb1d6a1de53507c0e04b39db998ca542c96
MD5 2571edbc87b48c742a08ba78c7cac3a3
BLAKE2b-256 b83b2e0b2c56e75ec3109875d9653498b5e38f8ba1416691c906cebc09ac9a36

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