yasmine is a C++ state machine framework developed by Seadex. The latest stable version is 1.3.3.

The very first beta version (0.1.0) was released on June 20, 2016. Originally only supporting C++11 support for C++03 was added with Beta 6 (0.6.0). Version 1.0.0, the first stable version, was released January 20, 2017. The complete version history is available for you, too.

yasmine is not just yet another state machine framework! It is an easy to use high level UML state machine abstraction that nicely integrates with modern object oriented C++ code.

We created her, because we often use state machines in the projects we work on. And using existing solutions was not quite satisfying. Some didn't feel like they integrated into modern C++ code nicely (coded in C, switch case based, ...), others required the overhead of big frameworks. Then in some cases pulling in closed source libraries is a problem, because risk assessment is tricky (medical applications). And then there are solutions that seem quite nice, but never matured, are not maintained or poorly maintained, or poorly documented.

yasmine adheres as closely as possible to the UML state machine semantics. Key features are hierarchical states, orthogonal regions, and the support of run-to-completion semantics. For detailed information read more about her features in the documentation. We are creating a whole ecosystem around the core library, that makes creating and maintaining state machine easier and more comfortable.

The core library libyasmine itself, the model library yasmine_model, and the command line state machine generator ygen are free for commercial and non-commercial use (see License for details). ygen_ui, the generator with graphical user interface, and the Enterprise Architect addin are commercial products which require you to buy a license for them. Currently beta versions of ygen_ui and of the EA addin can be obtained from the downloads section. The beta versions are free for evaluation and test purposes.

Also Commercial support by Seadex can be obtained (development, training, technical support).

You can also visit our forums at http://seadex.de/forums and post there if you have a suggestion, a question or want to give us any other kind of feedback. Also if you find yasmine useful, we would be glad if you would show your appreciation!

Credit goes to Jonathon Reach for his effort of reading the entire documentation and for supplying us with lots of suggestions. This helped to improve these pages a lot. Thanks!

Advantages of using yasmine

  • She provides a complete implementation of UML state machine semantics (which extend FSM (Finite State Machine) semantics significantly).

  • yasmine is a modern C++ implementation using C++11 (C++03 support is available, too).

  • Because it's C++ (and not C) the code integrates nicely into OO code.

  • She's well documented (If you think something is missing or unclear), please let us know.

  • Because she is open source you can check her implementation out. Also this guarantees long term usability and availability.

  • You can get support from Seadex. We appreciate your feedback and are open for feature requests and glad about bug reports.

  • The library enables you to create state machines at runtime.

  • yasmine will keep improving. The ecosystem around yasmine will grow, we will add even more tests, and also add to the documentation.

  • No additional dependencies are introduced in an C++11 environment. yasmine only uses the C++11 standard library - nothing else.
    If you need support for C++03, then Boost is required to bridge some of the gaps the lacking C++11 support causes.

What yasmine is not

She's not a minimum foot print library that prioritizes on running on every system no matter how few resources are available. yasmine is not resource hungry, but she cannot (and does not want to) compete with switch-case-based bare-metal no-abstraction libraries.


  • 14.09.2017 Beta versions of ygen_ui (graphical state machine generator) and the EA addin (state machine model export) are available for download.

  • 22.08.2017 Version 1.3.3 of yasmine is ready for download. This version contains bug fixes and CMake files improvements. The changelog can be seen here.

  • 17.08.2017 yasmine 1.3.2 is available for download. This version contains minor bug fixes. The entire changelog is located here.

  • 14.08.2017 yasmine 1.3.1 is available for download. This version contains CMake files improvements: set compiler standard using CPP_VERSION. The entire changelog is located here.

  • 26.06.2017 yasmine 1.3.0 is available for download. This version contains a new feature (unhandled event handler) and a new example. The entire changelog is located here.

  • 23.05.2017 First screen shots of ygen_ui are available here.

  • 28.04.2017 Version 1.2.1 of yasmine is ready for download. This version contains CMake file improvements.

  • 25.04.2017 Version 1.2.0 of yasmine is ready for download. This version contains the first releases of yasmine_model library and ygen - a console application that generates C++ code for a state machine. libyasmine is now at version 1.1.2 with minor changes. You can see the entire changelog here.

  • 07.04.2017 yasmine 1.1.1 is available for download. This version is released because of an internal restructuring of libyasmine. The libraries essentials and hermes were extracted from yasmine and are now used by libyasmine. There are also other minor changes which can be seen here.

  • 06.03.2017 Version 1.1.0 of yasmine is ready for download. This version contains new features and a new example. You can see the entire changelog here.

  • 08.02.2017 Version 1.0.1 of yasmine is ready for download. This version contains a bug fix. The changelog can be seen here.

  • 20.01.2017 We are glad to announce the first stable release of yasmine - version 1.0.0. The new features of this version can be found in the changelog.

  • 12.12.2016 yasmine 0.6.1 (Beta 7) was released (download). The changelog can be found here.

  • 09.12.2016 yasmine 0.6.0 (Beta 6) is available for download. Compatibility with C++03 is most noticeable change of this release. Also support for events with parameters was improved. Also new examples are available. The entire changelog is located here.

  • 07.11.2016 Version 0.5.0 (Beta 5) is online. CMake support was added to ease building on Non-Windows platforms (e.g. Linux). You can see the entire changelog here.

  • 07.10.2016 The 5th release of yasmine - version 0.4.0 (Beta 4) is available for download. The changelog can be found here.

  • 19.09.2016 As for today yasmine is also available on GitHub.

  • 16.09.2016 A new version of yasmine is available for download: yasmine 0.3.0 (Beta 3). The changelog can be found here.

  • 19.08.2016 yasmine 0.2.0 (Beta 2) was released (download).

  • 04.08.2016 2nd license update. For details please refer to our License page.

  • 22.07.2016 New release of yamine is available (0.1.1 (Beta 1)) (download).

  • 20.07.2016 License update: We have changed our licenses. They are now even less restrictive! For details please read our License page.

  • 20.06.2016 First release of yamine 0.1.0 (Beta 0) (download)!