Skip to main content

An opinionated runtime and tooling layer built on top of bussdcc.

Project description

BussDCC Framework

bussdcc-framework is an opinionated runtime and tooling layer built on top of bussdcc.

It provides the components most real systems need:

  • runtime orchestration
  • event sinks and replay
  • JSONL event logging
  • a lightweight web interface
  • system identity discovery
  • deterministic replay of recorded event streams

The framework keeps the bussdcc kernel small while providing a practical foundation for building complete systems.

Architecture

Application
    ↓
bussdcc-framework
    ↓
bussdcc

bussdcc (kernel)

The core provides the minimal primitives:

  • messages
  • events
  • processes
  • services
  • runtime
  • state
  • clocks
  • event buses

bussdcc-framework

The framework adds system-level capabilities:

  • structured event logging
  • replay runtime
  • web interface
  • event sinks
  • operational services
  • application scaffolding

Features

Runtime

Extended runtime with event sinks and framework lifecycle messages.

from bussdcc_framework.runtime import Runtime

runtime = Runtime()

Features:

  • event sink pipeline
  • framework lifecycle messages
  • graceful shutdown handling
  • replay support

Event Logging (JSONL)

Built-in JSONL logging for deterministic replay and auditing.

from bussdcc_framework.io.jsonl import JsonlSink

runtime.add_sink(JsonlSink("./events"))

Logs are segmented by time:

events/
  2026-03-09/
    12-00-00.jsonl
    12-10-00.jsonl

Each line contains a structured event:

{
  "time":"2026-03-09T12:00:01.735301+00:00",
  "type":"bussdcc_framework.message.system:SystemIdentityEvent",
  "data":{ ... }
}

Event Replay

Replay previously recorded event streams.

from bussdcc_framework.runtime import ReplayRuntime
from bussdcc_framework.io.jsonl import JsonlSource

runtime = ReplayRuntime(speed=1.0)

runtime.add_source(JsonlSource("./events"))

This allows:

  • deterministic testing
  • system simulation
  • historical debugging

Web Interface

A lightweight Flask + Socket.IO interface for system control and monitoring.

from bussdcc_framework.interface.web import WebInterface

runtime.add_process(
    WebInterface(host="0.0.0.0", port=5000)
)

Custom routes can be registered:

class MyWeb(WebInterface):

    def register_routes(self, app, ctx):

        @app.route("/")
        def index():
            return "Hello World"

Inside Flask routes you can emit BussDCC messages:

from bussdcc_framework.interface.web import emit

emit(MyMessage())

Console Logging

Simple JSON event output for development.

from bussdcc_framework.io.console import ConsoleSink

runtime.add_sink(ConsoleSink())

Example output:


{"time":"2026-03-09T12:00:01.722504+00:00","type":"bussdcc_framework.message.framework:FrameworkBooted","data":{"version":"0.1.0"}}

System Identity Service

Discovers system metadata at runtime:

  • hostname
  • hardware model
  • CPU serial
from bussdcc_framework.service import SystemIdentityService

runtime.add_service(SystemIdentityService())

This emits a SystemIdentityEvent and stores it in runtime state.

Example

Minimal application:

from bussdcc_framework.runtime import Runtime
from bussdcc_framework.io.console import ConsoleSink
from bussdcc_framework.service import SystemIdentityService

runtime = Runtime()

runtime.add_sink(ConsoleSink())
runtime.add_service(SystemIdentityService())

runtime.boot()
runtime.run()

Design Goals

Deterministic systems

All behavior flows through events that can be logged and replayed.

Strong typing

All messages are typed dataclasses.

Operational visibility

Event streams are easily captured and analyzed.

Replayable execution

Recorded systems can be replayed exactly for debugging and simulation.

Small core

The bussdcc kernel stays minimal while the framework provides practical tooling.

Installation

pip install bussdcc-framework

Related Projects

  • bussdcc – event-driven systems kernel
  • bussdcc-hardware – hardware device integrations

License

MIT License

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_framework-0.28.0.tar.gz (25.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_framework-0.28.0-py3-none-any.whl (29.3 kB view details)

Uploaded Python 3

File details

Details for the file bussdcc_framework-0.28.0.tar.gz.

File metadata

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

File hashes

Hashes for bussdcc_framework-0.28.0.tar.gz
Algorithm Hash digest
SHA256 75d533b648acf98cf647b9afc2a0f26ffca948d0fd1bdb8fb3b88eae65152ac4
MD5 b9a76d21b5fcc2a1028d65af8527e720
BLAKE2b-256 4700cf0640c8c5825159677fd2bfa25870a4a4f1395143c0adca20c9627383e0

See more details on using hashes here.

File details

Details for the file bussdcc_framework-0.28.0-py3-none-any.whl.

File metadata

File hashes

Hashes for bussdcc_framework-0.28.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e169f71f5745d21c68d7e894d78dd8beb7abb31e5bc3b944b730c0235d133279
MD5 9a14843579dc809cc0024ca0a2c2c4b3
BLAKE2b-256 49e4c6432dfacc676930801eb5c0466dadac8ba56cfb94cb8e1142774c4c6248

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