Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 10 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@

Plugboard is an **event-driven modelling and orchestration framework** in Python for simulating and driving complex processes with many interconnected stateful components.

You can use it to **define models** in Python and **connect them together easily** so that data automatically moves between them. After running your model on a laptop, you can then scale out on multiple processors, or go to a compute cluster in the cloud.
You can use it to **define models** in Python and **connect them together easily** so that data automatically moves between them. After running your model on a laptop, you can then scale out on multiple processors or go to a compute cluster in the cloud thanks to the integration with the [Ray](https://www.ray.io/) framework.

Some examples of what you can build with Plugboard include:

Expand All @@ -50,8 +50,9 @@ Some examples of what you can build with Plugboard include:
- **YAML model specification** format for saving model definitions, allowing you to run the same model locally or in cloud infrastructure;
- A **command line interface** for executing models;
- Built to handle the **data intensive simulation** requirements of industrial process applications;
- Modern implementation with **Python 3.12 and above** based around **asyncio** with complete type annotation coverage;
- Modern implementation with **Python 3.12+** based around **asyncio** with complete type annotation coverage;
- Built-in integrations for **loading/saving data** from cloud storage and SQL databases;
- Built-in **LLM integrations** for building AI-augmented process models with support for multiple providers;
- **Detailed logging** of component inputs, outputs and state for monitoring and process mining or surrogate modelling use-cases.

## 🔌 Installation
Expand All @@ -63,7 +64,9 @@ python -m pip install plugboard

Optional integrations for different cloud providers can be installed using `plugboard[aws]`, `plugboard[azure]` or `plugboard[gcp]`.

Support for parallelisation can be installed using `plugboard[ray]`.
Support for parallelisation and hyperparameter optimisation can be installed using `plugboard[ray]`.

Additional optional extras: `plugboard[llm]` for LLM components, `plugboard[redis]` for Redis-based connectors, and `plugboard[websockets]` for WebSocket I/O.

## ⚡ Quickstart with AI

Expand Down Expand Up @@ -132,8 +135,10 @@ class B(Component):

There is also a `@component` decorator which simplifies creating `Component`s for small stateless transform type functions. A component instance can be created by calling the `.component` method of the object returned by the decorator. The wrapped function can be sync or async and will be called as the step method with the named inputs being passed in. Inputs must be specified matching function args. Outputs must be specified and the function must return a dictionary where the keys match the outputs.
```python
from plugboard.component import component

@component(inputs=["in_1"], outputs=["out_1"])
def pow2(in_1: int) -> int:
def pow2(in_1: int) -> dict[str, int]:
return {"out_1": in_1 ** 2}

result = pow2(2) # Preserves original function call -> result = {"out_1": 4}
Expand Down Expand Up @@ -208,16 +213,13 @@ plugboard process run my-model.yaml

## 📖 Documentation

For more information including a detailed API reference and step-by-step usage examples, refer to the [documentation site](https://docs.plugboard.dev). We recommend diving into the [tutorials](https://docs.plugboard.dev/latest/examples/tutorials/hello-world/) for a step-by-step to getting started.
For more information including a detailed API reference and step-by-step usage examples, refer to the [documentation site](https://docs.plugboard.dev). We recommend diving into the [tutorials](https://docs.plugboard.dev/latest/examples/tutorials/hello-world/) for a step-by-step guide to getting started.

## 🐾 Roadmap

Plugboard is under active development, with new features in the works:

- Support for strongly typed data messages and validation based on pydantic.
- Support for different parallelisation patterns such as: single-threaded with coroutines, single-host multi process, or distributed with Ray in Kubernetes.
- Data exchange between components with popular messaging technologies like RabbitMQ and Google Pub/Sub.
- Support for different message exchange patterns such as: one-to-one, one-to-many, many-to-one etc via a broker; or peer-to-peer with http requests.

## 👋 Contributions

Expand Down
Loading