Skip to content
Switch branches/tags
Go to file
Cannot retrieve contributors at this time

MicroFlo 0.6.4

Released: 25.02.2018


  • Support multiple --prepend-file for microflo generate. Can be useful to separate config from secrets, or common config from device-specific.

MicroFlo 0.6.3

Released: 24.02.2018

New features

  • microflo runtime can connect to device via MQTT instead of USB/serial, useful in Internet-of-Things scenarios. Pass option --serial mqtt://
  • linux-mqtt target supports MQTT host transport. Run with MSGFLO_BROKER=mqtt:// ./thing prefix/mything


  • Fixed invalid exported port declarations if using --enable-maps and having multiple exported ports

MicroFlo 0.6.2

Released: 05.01.2018


  • --prepend-file FILE option for microflo generate, includes contents of FILE in generated output. Useful for configuration data, like Arduino library includes, defines for MicroFlo settings etc.

MicroFlo 0.6.0

Released: 31.12.2017

There is now basic support for components coming from multiple sources, including libraries. Components provided by MicroFlo project are now split into 3:

  • microflo-core: Generally useful, non-platform-specific components
  • microflo-arduino: Ardunio-specific components
  • microflo-contrib: Everything else
  • ./components: Application-specific components

Breaking changes

  • Filenames output by microflo generate graph.fbp OUTPUT has changed. All output files now have the prefix OUTPUT, for instance OUTPUT.graph.h or OUTPUT.component.ports.h. Uses of microflo runtime --componentmap should now be Build system that only use the main.cpp/ino file should not need to change. Code embedding MicroFlo and including the intermediate outputs must change, see examples/embedding.cpp for details.
  • "Setup" packets are no longer sent on network start. All components must wait for a regular packet/IIP before sending outputs.
  • Default baudrate is now 115200 instead of 9600. Code that relies on the old default should specify --baudrate and/or define MICROFLO_ARDUINO_BAUDRATE accordingly.
  • The --library option for microflo generate has been replaced with --components, which specify directories/files to search for components. Users must update to the new method. Also provided are --ignore-component and --ignore-component-file, to exclude components. All these options can be specified multiple times. Default is to automatically include components under ./components.


  • Removed microflo main, microflo component, microflo graph subcommands from the CLI. These were experimental possible replacements for generate, that did not quite work out. Instead microflo generate has been improved, for instance via the --mainfile option.
  • Removed microflo upload subcommand from the CLI. Should instead use microflo runtime and
  • Removed MsgSetup and Packet::isSetup()


  • Fixed initial graph not loading on AVR-based Arduinos when using --target arduino instead of --target arduino:avr
  • Network no longer stops executing when Flowhub goes from live mode to edit/project mode.
  • microflo-core 0.6.0: Components no longer resets state on network:start (thanks to removal of Setup messages). Affected components included Timer,DigitalWrite, AnalogWrite etc

Internal changes

  • generate output uses #include to gather together the different parts, instead of inlining
  • The Reset FBCS message has been renamed to ClearNodes, and no longer affects network state. The response NetworkReset is now NodesCleared.

MicroFlo 0.5.1 / 0.5.2

Released: 30.12.2017


  • Fix microflo runtime crashing when sending/receiving 'bang' packets (null)

Was supposed to be released on 17.11.2017, but the NPM package was never published.

MicroFlo 0.5.0

Released: 08.11.2017

Breaking changes

  • Requires ES6 support, meaning Node.js 6+ or a modern browser. Older environments are not supported.
  • AVR: Remove dedicated backend. Users should either use Arduino, or ship their own backend.

Platform support

  • Linux-MQTT: Send Msgflo discovery messages periodically

Internal changes

  • Now uses CoffeeScript 2

MicroFlo 0.4.4

Released: 12.10.2017


  • Avoid exception and crash if on protocol errors


  • microflo generate --mainfile file.hpp, allows chosing which file to include to the firmware entrypoint (main() or similar). Defaults value is based on the existing --target option.
  • microflo generate --enable-maps option, allows enabling arrays used with component/node/port/command name strings.

Platform support

  • ESP8266: Experimental support for MQTT/Msgflo, by automatically exposing exported in/outports of the graph

MicroFlo 0.4.2

Released: 02.08.207


  • Fix exception after removing node/edge

Platform support

  • ESP32: Avoid using unimplemented analogWrite in Arduino backend on ESP32 devices

MicroFlo 0.4.1

Released: 24.07.207


  • Support --wait-connect 3 option for microflo runtime, needed devices like Arduino Uno that reset upon serial connection.

Internal changes

  • Bumped most NPM dependencies to latest version

MicroFlo 0.4.0

Released: 11.07.2017


  • New Arduino tutorial available at microflo-example-arduino
  • Updated README and CHANGES to reflect progress in 2015-2016

Platform support

MicroFlo 0.3.55

Released: 02.06.2017


  • No longer include Arduino libraries under thirdparty/. These are not used, since the components have moved out to microflo-core. Users of such components are now responsible for including the libraries themselves.
  • microflo flash. Never worked well, and uploading/flashing device is out-of-scope. Instead users should use the upload tools included with their platform (Arduino etc).
  • No longer produces Arduino library .zip. Instead users should install microflo via NPM, and use microflo generate to create the Arduino sketch to open/upload.

MicroFlo 0.3.54

Released: 01.06.2017


  • microflo runtime: No longer hangs if engine does not reply on serialport, instead times out and exits.
  • microflo runtime: Fix live url missing host/port defaults


  • component.json file for package manager. Instead use microflo package from NPM, which supports both browser and Node.js.

MicroFlo 0.3.53

Released: 16.05.2017

New features

  • microflo runtime outputs a Flowhub live URL for opening IDE
  • Opt-in support in microflo runtime for signalling aliveness to Flowhub registry. Specify a runtime id using --id UUID (or MICROFLO_RUNTIME_ID envvar), and enable using --ping-interval SECONDS.


  • microflo register. Instead Flowhub IDE will do registration when opening live URL, or one can use the flowhub-registry-register CLI tool from flowhub-registry.

MicroFlo 0.3.52

Released: 07.05.2017

Platform support

  • Arduino: Baudrate used is configurable via MICROFLO_ARDUINO_BAUDRATE
  • Tiva/Stellaris: Dedicated backend removed in favor of using Arduino, with Tiva core from Energia project
  • Arduino: Implement TimerMicros(), used by core/PseudoPWM

MicroFlo 0.3.50

Released: 10.05.2017

New features

  • Added a Error Packet type, with a set of pre-defined errors: ComponentBug, UnsupportedType, UnsupportedValue,InvalidInput, OperationFailed, OperationTimeout and Other. Used to signal errors in components, and for error handling components.


  • Fix crash if attempting to remove non-existing node
  • Fix exception when used with NoFlo RemoteSubgraph due to unsupported connect event

MicroFlo 0.3.48

Released: 17.03.2017

New features

  • Added a Pointer Packet type, a tagged boxed pointer. Used when embedding MicroFlo and wishing to pass non-trivial datastructures through graph. Not copyable, so packet lifetime must be (carefully!) handled by the embedding code. Not serialize/deserializable either.

Platform support

  • MQTT: Support de/serializing float and byte packets
  • Linux: Serial transport working, creates a device which microflo runtime --serial can connect to


  • Added C++ unit test setup for engine, and new packet types
  • Tests now run against the native Linux backend (with serial) instead of microflo-emscripten
  • Tests now have their own components under test/components instead of depending on microflo-core

MicroFlo 0.3.47

Released: 17.03.2017


  • Fixed edge data subscriptions. Would crash with newer Flowhub version which started sending these messages again.

MicroFlo 0.3.45

Released: 16.03.2017

New features

  • Live programming now default. Changes in Flowhub applies immediately, no need to hit start/stop to activate the new graph.
  • microflo generate can output .ino sketch which can be opened and uploaded using the standard Arduino IDE.

Internal changes

  • Removed separate componentlib build, was unused.
  • microflo generate outputs absolute file paths for includes, makes resolving them work regardless of build setup.

MicroFlo 0.3.44

Released: 16.01.2017

New features

  • Opt-in support for live programming, graph changes applied automatically when made

Internal changes

  • Protocol commands now stored in a dispatch object
  • Support start/stop command separately from network reset
  • Support removing/deleting individual nodes

Platform support

  • Linux

MicroFlo 0.3.42

Released: 09.01.2017


  • Fix wrong format in MsgFlo discovery message. Now compatible with msgflo 0.7+

Internal changes

  • Use Arduino IDE 1.8+ with official arduino-builder instead of third-party ino tool
  • Reworked protocol handling to map FBP/FBCS messages more 1-1. Needed for future live programming support.

MicroFlo 0.3.39

Released: 18.12.2016

New features

Internal changes

  • Updated to serialport 4.x.x

MicroFlo 0.3.38

Released: 10.06.2016

Platform support:

MicroFlo 0.3.36

Released: 19.04.2016


  • Added tests for roundtripping data to microcontroller and back (using fbp-spec)
  • Run Msgflo testa against MQTT Linux support

MicroFlo 0.3.34

Released: 19.04.2016

Platform support

  • MQTT on Linux supports send/receive on exported ports

MicroFlo 0.3.32

Released: 17.04.2016

New features

  • Support define MICROFLO_MESSAGE_LIMIT for specifying max number of messages.
  • Added MessageQueue API, allows to customize how messages are stored.


  • Fix exporting of outports which are not connected to an inport. Previously needed to workaround by sending to a Forward.

Platform support

  • Initial Linux backend for MQTT with Msgflo discovery protocol.

MicroFlo 0.3.29

Released: 12.05.2015

Experimental support for ESP8266, using a custom backend.

MicroFlo 0.3.21

Released: 03.03.2015

All host-side code converted to CoffeeScript.

MicroFlo 0.3.18

Released: January 4, 2015

Initial support for Texas Instruments Stellaris/Tiva

MicroFlo 0.3.14

Released: December 16, 2014

Project moved to MicroFlo Github organization

MicroFlo 0.3.3

Released: October 12, 2014

Serial support has now been integrated in Flowhub Chrome app, starting with version 0.1.12. Download

The simulator and automated tests are now using Emscripten to compile to JavaScript instead of the node.js C++ addon, and can run also in web browser.

Several program size optimations have been made, which lets MicroFlo fit in devices with 16kB memory. One can now specify which component set to include using make build LIBRARY=arduino-minimal.

A new PureFunctionComponent2 component base-class simplifies implementation of components which are pure functions with 2 arguments.

MicroFlo 0.3.2

Released: July 5, 2014

Removed MicroFlo Chrome app in favor of integrated MicroFlo serial support in NoFlo UI. A release of NoFlo UI is bundled with this release.

MicroFlo 0.3.1

Released: June 30, 2014

TODO: document

MicroFlo 0.3.0: "Node in a Node, to infinity"

Released: May 8, 2014

The IDE used is now the officially supported, and there is basic support for several non-Arduino platforms. A Chrome app can act as the communications adapter between IDE and runtime on device, making running node.js in the terminal no longer neccesary.


  • One can now introspect data flowing along edges in NoFlo UI
  • Upload output is now shown in NoFlo UI
  • Experimental Atmel AVR8 backend, without any Arduino dependencies. Tested on AT90USB1287 w/ AT90USBKEY
  • Basic mbed backed, tested on mbed LPC 1768
  • Basic Tiva/Stellaris backed, tested on Tiva-C TM4C123G
  • Experimental Embedded Linux backend, using standard sysfs GPIO interface.
  • Makefile now has additional variables for overriding: ARDUINO, SERIALPORT
  • Host/simulator API has been extended to also cover HostCommunication/commandstream
  • Programs can be automatically tested when running in simulator, driven from JavaScript/CoffeeScript

Added components:

  • LedMatrixMax, LedChainWS, LedChainNeoPixel, PseudoPwmWrite, NumberEquals, BooleanAnd

MicroFlo 0.2.1

Released: December 21, 2013

Installing on Mac OSX and Windows no longer requires a C++ compiler, as node-serialport binaries for those platforms are included.


  • Documentation extended to cover persisting graphs on device, and creating custom components.
  • Message and node capacity is now configurable at compiletime, to adapt to different devices Example: -DMICROFLO_NODE_LIMIT=10 -DMICROFLO_MESSAGE_LIMIT=10 reduces SRAM usage to ~350 bytes

Added components:

  • ReadCapacitivePin

MicroFlo 0.2.0: "The start of something visual"

Released: November 27, 2013

Visually programmmable. When using NoFlo UI, one can create MicroFlo graphs visually and upload to an Arduino while running.

New features

  • Releases now contains both an pre-made Arduino library and a customized NoFlo UI IDE.
  • Added support for running on Mac OSX and Windows, in addition to GNU/Linux.
  • Added a tutorial documenting how to get started with MicroFlo on Arduino devices.
  • Added commandline options for configuring debug levels, serial port and WebSocket port

In addition many improvements were made to host<->microcontroller communication and runtime scalability. Basic Node.JS bindings were added to be able to run MicroFlo programs and tests also in the host (temporarily disabled for release).

Added components:

  • AnalogRead, MonitorPin, PwmWrite, MapLinear, Split, Gate, Route, BooleanOr

Modified components:

  • ToggleBoolean (added reset port), Timer (added reset port)

Removed components:

  • ToString (being replaced by graph introspection/debug tools)

Known issues:

MicroFlo 0.1.0: "The Fridge"

Released: September 22, 2013

Minimally useful. Can write a .fbp program implementing the thermostat and cooler control for a fridge, without any hardcoding or hacks. Link

New features:

  • Added IIP support in .fbp for configuring pins, timer intervals etc.

Added components:

  • DigitalRead, InvertBoolean, ReadDallasTemperature, HysteresisLatch, BreakBeforeMake, ArduinoUno, ToString, Delimit

MicroFlo 0.0.2: "A blink, an echo"

Released: September 9, 2013

Proof-of-concept working on an Arduino Uno. Can write .fbp program which echos back communication on the serial port, or blinks an LED at a hardcoded interval and pin.

Added components:

  • SerialIn, SerialOut, DigitalWrite, Timer, Forward