Skip to main content

blackboardx

A skeletal blackboard system for Python.

The blackboard architecture came out of HEARSAY-II, a speech understanding system built at Carnegie Mellon in the early 1970s under a DARPA programme. Its difficulty was that a stretch of speech admits several readings, and the knowledge that settles which one is right arrives in unrelated kinds: acoustic, lexical, syntactic, semantic. Which kind will settle a given stretch is not known until that stretch is examined, so the system could not be written as procedures calling one another, because a call fixes what runs next. HEARSAY-II gave its specialists a shared structure to work on instead. Each reads what bears on its own expertise and writes back what it concludes, and none of them calls another.

Later systems kept that arrangement and replaced the knowledge, HASP interpreting sonar where HEARSAY-II interpreted speech. H. Penny Nii, surveying blackboard systems in AI Magazine in 1986, named a system skeletal when it supplies the components alone and leaves the knowledge and the control to whoever builds on it.

blackboardx is skeletal in that sense. It supplies the board, which stores what agents write and puts every write in one order, and the control component, which determines who is notified of a change, whether a write is admitted, and when the run ends. An application supplies its regions, their opening premise values, the agents the run starts with, an admission rule, a termination predicate, and limits.

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,
    Premise,
    RunLimits,
    Settled,
    SqliteBoard,
    create_model,
)

notifications = []

model = create_model(
    regions=[Level("platform"), Premise("window")],
    premises={"window": ["2026-08-16T20:00", "2026-08-16T22:00"]},
    agents=[Agent(name="ocp", notify=notifications.append)],
    limits=RunLimits(wall_clock=timedelta(minutes=10), idle=timedelta(seconds=1)),
    board=SqliteBoard("incident.sqlite3"),
)

(notification,) = notifications
window = model.reader.read_premise("window").value
model.control.write("ocp", "platform", {"window": window, "findings": ["oom"]})
model.control.ack("ocp", notification.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

blackboardx-0.7.0.tar.gz (178.9 kB view details)

Uploaded Source

Built Distribution

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

blackboardx-0.7.0-py3-none-any.whl (33.8 kB view details)

Uploaded Python 3

File details

Details for the file blackboardx-0.7.0.tar.gz.

File metadata

  • Download URL: blackboardx-0.7.0.tar.gz
  • Upload date:
  • Size: 178.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for blackboardx-0.7.0.tar.gz
Algorithm Hash digest
SHA256 c754dde55700770c8b231c581d16bfc296d2cd42f8793ec33a668e0c564a7aa3
MD5 e6d42ee82d29ad8b2e511d2f9b95876e
BLAKE2b-256 7ea368ff020e1522b7dea11fac5dd37079bb68bed052adf67a25f6cef306bb8d

See more details on using hashes here.

Provenance

The following attestation bundles were made for blackboardx-0.7.0.tar.gz:

Publisher: publish.yml on MoeinRoghani/blackboardx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file blackboardx-0.7.0-py3-none-any.whl.

File metadata

  • Download URL: blackboardx-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 33.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for blackboardx-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1c3292e32fd7540eb6eb049b91ad1cc47e17ff006978a4ec9c742dcd5593a46c
MD5 9f7d732692a5c65afc096b659c9077dd
BLAKE2b-256 64b3893ba6ad388804f353cb295b312506376f5af609bd2f1951360aa7b0e60f

See more details on using hashes here.

Provenance

The following attestation bundles were made for blackboardx-0.7.0-py3-none-any.whl:

Publisher: publish.yml on MoeinRoghani/blackboardx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.14.1

2 files

0.14.0

2 files

0.13.0

2 files

0.12.0

2 files

0.11.1

2 files

0.10.1

2 files

0.10.0

2 files

0.8.0

2 files

This release

0.7.0 This release

2 files

0.6.0

2 files

0.5.0

2 files

0.4.0

2 files

0.3.0

2 files

0.2.1

2 files

0.2.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page