StrIoT — functional stream processing for IoT
StrIoT is a stream-processing engine for IoT workloads, implemented as a Haskell library. A user defines a stream-processing program using a set of operators provided by StrIoT and the result is rewritten/optimised and partitioned into distinct sub-programs that can be deployed to separate processing nodes, connected together via TCP/IP.
StrIoT can be used in several ways:
Using StrIoT Operators in Haskell
You can define a stream-processing program directly in terms of the provided operators. See docs/Operators.md for a detailed description of the operators and several example programs.
For use with the Optimiser
StrIoT's optimiser system takes as input a graph data-structure describing the stream-processing program, which is then processed and converted into distinct Haskell programs that can be individually compiled and executed. The API is described in the Haddock Haddock documentation. For more detailed examples, see the examples/ sub-directory.
We publish a base Docker image containing the StrIoT library to the Docker Hub: https://hub.docker.com/u/striot
Contributions are welcome! We use our GitHub project to track issues and manage Pull Requests. We use a low-traffic mailing list for discussions about the project: https://lists.ncl.ac.uk/wws/info/striot
Copyright & License
StrIoT is Copyright © 2020 Adam Cattermole, Jonathan Dowland, Paul Watson and others. StrIoT is made available under the Apache License, Version 2. See LICENSE for the full text.