Collaborative State Machines (CSM) is a programming model for building reactive, distributed applications that run across the cloud, edge, and IoT.

Traditional programming models often struggle with applications that are dynamic, stateful, and spread across the cloud, edge, and IoT. CSM addresses this by letting you design applications as collections of state machines that collaborate with each other. Each state machine can run in the cloud, at the edge, or directly on IoT devices, yet all machines continue to operate together as one cohesive system.

About Us

CSM is developed by the Distributed and Parallel Systems Group at the University of Innsbruck.

Learn more about our research and meet the team.

State Machines

At the heart of CSM are state machines. Each one is small, autonomous, and easy to reason about. Together, they form powerful distributed applications. State machines can:

  • React to events from their environment or from other machines.
  • Maintain their own state, while also working with persistent shared data.
  • Trigger actions or external services directly inside states and transitions.
  • Collaborate by exchanging events and data with other machines.

This approach makes complex logic easier to manage without tying your application to specific compute nodes, services, or execution environments.

Learn more about the fundamental programming model through the CSM specifications.

Features

CSM helps developers tackle complexity with:

  • Resilience — applications adapt to changing environments and recover from failures.
  • Modularity — behavior is encapsulated, making systems easier to understand and extend.
  • True distribution — run across cloud, edge, and IoT without extra complexity.
  • Separation of concerns — cleanly express application logic, decoupled from infrastructure.
  • Structured data management — handle local, static, and persistent data with well-defined scope and lifetime.

Learn more about getting started.

Use Cases

CSM is ideal for any system that is distributed, event-driven, and stateful. Example use cases include:

  • IoT & Edge Solutions — devices reacting to local events while syncing with cloud services.
  • Surveillance & Monitoring — distributed data streams processed in real time.
  • Smart Factories — workflows coordinating machines, sensors, and analytics.
  • Large-Scale Cloud Systems — scalable applications with clear separation of business logic and infrastructure.

For more, see our examples.