blackboardx
A group of agents works on one problem. Each writes what it finds into a single shared record, every agent can read all of it, and no agent calls another; the record is the only channel between them. The blackboard literature calls a system skeletal when it supplies this structure with no domain knowledge inside, so that an application system is built on it by adding knowledge and control. blackboardx is skeletal in that sense. It supplies the board and the control component; an application creates a model by supplying its regions, seed, admission rule, termination predicate, and limits, and its agents register themselves into it.
The distribution name is blackboardx; the import name is blackboard. The documentation, including the API reference, is at https://moeinroghani.github.io/blackboardx/.
Install
pip install blackboardx
pip install 'blackboardx[postgres]' # PostgresBoard
pip install 'blackboardx[mongodb]' # MongoBoard
The base install has no runtime dependency: the board it ships, SqliteBoard, is backed by SQLite, which comes with Python. A deployment keeps the record in the database it already runs, and the adapter for one needs its driver.
Documentation
| Quickstart | A run in full, in twenty lines |
| Concepts | What the board, the control component and a run are |
| Storage | Where the record is kept, and what an adapter owes |
| Guides | Writing an agent, admission rules, ending a run, testing |
| API reference | Every exported name |
Example
from datetime import timedelta
from blackboard import (
Agent,
Level,
Register,
RunBudgets,
Settled,
SqliteBoard,
create_model,
)
wakes = []
model = create_model(
regions=[Level("platform"), Register("window")],
seed={"window": ["2026-08-16T20:00", "2026-08-16T22:00"]},
budgets=RunBudgets(wall_clock=timedelta(minutes=10), idle=timedelta(seconds=1)),
board=SqliteBoard("incident.sqlite3"),
)
model.control.register_agent(Agent(name="ocp", notify=wakes.append))
(wake,) = wakes
window = model.reader.read_register("window").value
model.control.write("ocp", "platform", {"window": window, "findings": ["oom"]})
model.control.ack("ocp", wake.notification_id)
assert model.control.wait_closed(timeout=timedelta(seconds=10)) == Settled()
License
Apache-2.0. The license text is in LICENSE, and every distribution carries it.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file blackboardx-0.4.0.tar.gz.
File metadata
- Download URL: blackboardx-0.4.0.tar.gz
- Upload date:
- Size: 167.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f965fc27a69a57d9f269a5e38981022dab8157cc6e558ea1a8aaaa0cb51e5aae
|
|
| MD5 |
b689cfd25d5bccb9ec979beb0d864d40
|
|
| BLAKE2b-256 |
18df422ec3286d61609a56db840c8744df37b2e2f258066d18abc520c1c640f0
|
Provenance
The following attestation bundles were made for blackboardx-0.4.0.tar.gz:
Publisher:
publish.yml on MoeinRoghani/blackboardx
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
blackboardx-0.4.0.tar.gz -
Subject digest:
f965fc27a69a57d9f269a5e38981022dab8157cc6e558ea1a8aaaa0cb51e5aae - Sigstore transparency entry: 2589380521
- Sigstore integration time:
-
Permalink:
MoeinRoghani/blackboardx@15d6642b31da74fc29cfc41ca4b556a7cf34b71c -
Branch / Tag:
refs/heads/main - Owner: https://github.com/MoeinRoghani
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@15d6642b31da74fc29cfc41ca4b556a7cf34b71c -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file blackboardx-0.4.0-py3-none-any.whl.
File metadata
- Download URL: blackboardx-0.4.0-py3-none-any.whl
- Upload date:
- Size: 33.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9a0650b147e3e384882ec426888c017f19c0daa0b6303e603944b24976944541
|
|
| MD5 |
516aed8506894d377d1682e07b04efce
|
|
| BLAKE2b-256 |
58768332a0c1b0d0d9923b5daf21101468e234c76b2237d768fdde99c32ff2ae
|
Provenance
The following attestation bundles were made for blackboardx-0.4.0-py3-none-any.whl:
Publisher:
publish.yml on MoeinRoghani/blackboardx
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
blackboardx-0.4.0-py3-none-any.whl -
Subject digest:
9a0650b147e3e384882ec426888c017f19c0daa0b6303e603944b24976944541 - Sigstore transparency entry: 2589380647
- Sigstore integration time:
-
Permalink:
MoeinRoghani/blackboardx@15d6642b31da74fc29cfc41ca4b556a7cf34b71c -
Branch / Tag:
refs/heads/main - Owner: https://github.com/MoeinRoghani
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@15d6642b31da74fc29cfc41ca4b556a7cf34b71c -
Trigger Event:
workflow_dispatch
-
Statement type: