Skip to main content

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

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.44.0.tar.gz (33.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-0.44.0-py3-none-any.whl (40.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: bussdcc_system-0.44.0.tar.gz
  • Upload date:
  • Size: 33.2 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.44.0.tar.gz
Algorithm Hash digest
SHA256 3950050dfd11bd7c2e8956cb8a39748d92c7f359423cb6227fb5075cbcb5e181
MD5 e7bd356e3aea206b7d0eed69f0ca9a9c
BLAKE2b-256 3fcb951d473b25c6473ef136a85eb1816aea2c016311f0398245e3cefed28841

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bussdcc_system-0.44.0-py3-none-any.whl
  • Upload date:
  • Size: 40.3 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.44.0-py3-none-any.whl
Algorithm Hash digest
SHA256 206b6c04373c3d7fadfc88c1092be6a3b7703f0d596f3ec0be399ea239c1582f
MD5 09ef7630f1714f9931ed87c14fd6aaad
BLAKE2b-256 19f75b393599b121f3584d33f37d785c8ce211a6e8fc4aaa55aaae7ebb6072e0

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.44.0 This release

2 files

0.43.0

2 files

0.42.0

2 files

0.41.0

2 files

0.40.0

2 files

0.39.0

2 files

0.38.0

2 files

0.37.0

2 files

0.36.0

2 files

0.35.1

2 files

0.35.0

2 files

0.34.0

2 files

0.33.0

2 files

0.32.0

2 files

0.31.0

2 files

0.30.0

2 files

0.29.0

2 files

0.28.0

2 files

0.27.0

2 files

0.26.0

2 files

0.25.0

2 files

0.24.0

2 files

0.23.1

2 files

0.23.0

2 files

Supported by

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