A framework for
Event-Driven Embedded Systems in C,
it is an open source replacement for
the famous main's superloop

Why event-driven?

Every embedded system has a real time and a reactive component. Even if not aware, engineers already code reactive applications. Using react.o you can do it better, with a generic framework to provide architectural foundation engineers can produce greatly scalable and maintainable firmwares.

The reactive engine

It is a Main Loop, with multiple Event Queues where Handlers are connected to process events. Complex data paths are simplified, concurrency is minimized while parallelism boosted and worst case real-time scenario is easier to estimate. (Don't know how reactive application works?)

Better architecture

You break your problems in many small pieces and get a highly responsible, decoupled and scalable application.


It relies only on the GNU C standards and a few stdlib functions.

Deferred work

Use a Timed Queue to schedule jobs to run later.


Messaging algorithms are zero copy.

It is deterministic

Event handling time is deterministic. Simply setup Queues priorities to meet real-time requirements.


It can run fine in a 16 bit micro-controller, consuming from 1 KiB of flash memory.

Extra Classes

You can make use of available Array, Linked List, FIFO and more.

Develop faster

Using a generic framework requires engineers to write, test and debug less code.

Change log

Release 0.1.0-rc2

New features release

  • A new Context and its Factory to ease objects creation;
  • Real-time monitoring with AB Timing module;
  • Time unit is now configurable;
  • Advanced Main Loop sleep;
  • An improved cross platform build system.

Release 0.1.0-rc1

Core features release

  • Main Loop where everything is called from;
  • Queue to enqueue and handle events;
  • Timed Queue to defer jobs.