Introspectable Finite State Machines
Last updated 3 years ago by jonnor .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install finitosm 
SYNC missed versions from official npm registry.

Finito State Machines

Build Status

An experiment in Finite State Machines (FSM) and automata-based programming.

Finito allows you to declare state machines for widely different devices and programming languages, that are testable, introspectable at runtime, and visually programmable.

Currently supported targets are C (C++ compatible) for microcontrollers etc. and JavaScript for browser/Node.js.

Finito aims to complement and integrate with the Flow-based Programming (FBP) runtimes MicroFlo and NoFlo.



  • Initial API, JSON format and .fsm DSL exists
  • Can execute some very simple machines in browser and microcontroller
  • finito dot definition.fsm/json can generate Graphviz for visualization
  • Not used in a application yet


Finito is on NPM

npm install finitosm


For now see the examples and tests

TODO: document defining a machine using JSON, .fsm DSL, and programmatic API
TODO: document how to implement+run in Javascript/browser
TODO: document how to implement+run in C/microcontroller


  • 0.1.0: One can create components for MicroFlo using Finito
  • x.0.0: One can visually create, introspect and debug state machines, using standalone tool or in combination with




v0.1 "minimally useful"


  • Find alternate way of doing the 'parametrized' function
  • Allow multiple exit/final states


  • Add tests for fluent JS API


  • C: Add some tests
  • JS: Support methods as state actions and predicates?


  • Allow dot renderer to output svg/png directly?
  • Add interactive visualization that can show and follow current state of machine, also when machine is "remote", like running on a microcontroller
  • Demonstrate integration of machines spanning microcontroller and web
  • Add a UI for creating state machines visually


  • Allow state transitions in microcontroller to be persisted in ROM, read back out and replayed
  • Add support for hierarchical machines
  • targets: Add support for FPGAs using VHDL/Verilog
  • DSL: Handle more general cases in the the .fsm DSL
  • Add a C++ target, with support methods as state actions and predicates

Current Tags

  • 0.1.0                                ...           latest (3 years ago)

8 Versions

  • 0.1.0                                ...           3 years ago
  • 0.0.9                                ...           4 years ago
  • 0.0.8                                ...           4 years ago
  • 0.0.7                                ...           4 years ago
  • 0.0.6                                ...           4 years ago
  • 0.0.5                                ...           4 years ago
  • 0.0.4                                ...           4 years ago
  • 0.0.2                                ...           4 years ago
Maintainers (1)
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 0
Dependencies (6)
Dev Dependencies (24)
Dependents (0)

Copyright 2014 - 2017 © |