Visual, real-time, agent based programming for Arduino. Now available for Windows, Mac, and Linux.

Embrio is a different kind of visual programming environment which doesn’t try to mimic traditional programming, instead you create your program out of multiple “agents” which each have one job and all run at the same time in parallel. Agents attach to each other, activating and suppressing other agents similar to neurons in a brain. Agents are implemented by adding and connecting visual nodes, and you can write your own custom nodes giving you the full power of traditional coding wrapped in an easy to use graphical interface. Work with a live connection to your Arduino to get real time feedback and interaction, avoiding the cumbersome compile, upload, and test loop of traditional programming.

Agent Based Programming

An agent is a little piece of a program that has one job. Agents connect to and turn on and off other agents. An Embrio program is made up of multiple agents running in parallel.

Real Time Connection

Work with a live connection to your Arduino, see how your program works as you build it!

See the list of compatible boards.

Compiles To Arduino

When your program is done it can be compiled to run entirely on your Arduino! The profiler tool gives you accurate resource usage information while you work.

Learn more by going through the growing library of video tutorials, for example:


Fade LED - This tutorial shows you how to use an Output node and a repeating Timer node to make an LED fade on and off.


Print to LCD - This project uses a custom Arduino node and some Text Activator nodes to print text to an LCD. It cycles through 3 messages with the push of a button.


Autonomous Car - In this 3 part project we’ll see how to program an autonomous robot car using Embrio. The car has 3 behaviors. It wanders around, avoiding obstacles by turning away from near by walls and stopping before hitting a wall. Every so often it stops and...

Recent Activity

9/16/2018 - Embrio Software Update


Bugs Fixed
Arrays in the declaration section of a node weren’t compiling correctly on Arduino.
Errors on nodes weren’t clearing.
Integer outputs on nodes that use the Min or Max values had a compile issue.

9/16/2018 - New Forum Post

Deleting Node I still have 1 node that I can not select or delete. It's an and gate inside of the Contactor control node group up the top by itself with nothing connected to it anymore.

9/16/2018 - New Forum Post

Update Faulty Update on the update.. Since the update has been installed none of my Node groups work. Outside of the node group the input activator operates but there is no output activation. From inside the

9/13/2018 - New Forum Post

Node group problems Sorry if the project is alittle hard to follow, it even gets me some time, that was the main reason for requseting the notes. Which I'm just starting to use, it will help when I remember to use them..

9/12/2018 - Embrio Software Update


Bugs Fixed
Fixed a bug where reusable node groups were using an input's default value when the exposed input had no value.
Cleaned up the agent processing timing code to avoid what could have been causing an agent to stop processing.

9/2/2018 - Embrio Software Update


New Features
Can replace an exposed input or output with another input or output on the same node screen to keep connections on other agents intact. Right click on an input or output and select “reattach”.
In connection mode restored states are sent to the connected Arduino to help debugging.
Added a “Notes” tab to the bottom details controls. Notes are shown as a tooltip when mousing over an item in the project tree, an editor tab, or an Agent node.
Status labels on the Arduino communicator control. Easier to tell what’s going on now.
Can move node inputs and outputs up and down with the right click menu.
Node screen editor performance improvements.
Updated to the newest version of jQuery.
Faster loading of the node screen editor.
Triggers show in playback mode.
Can drag exposed inputs that are on another node screen but don’t have a value.
Changes to configuration only inputs mark that the connection program needs to be updated.
Don’t open an agent when a button on an agent node is double clicked.

Bugs Fixed
Fixed some issues getting node timing after making changes to a node.
Changing an agent’s refresh rate didn’t register that a new connection program was needed.
A node that had a function in the declarations section that accessed node inputs would break the timing test program.
Arrays in Arduino code declaration section were causing a compile error.
When renaming an agent the nodes exposing that agent wouldn’t update their name.
Fixed project tree drag/drop which was sometimes difficult use.
The selected node definition in the node toolbars wasn’t showing the selected highlight.

7/5/2018 - New Library Item

EasyDriver Stepper

This node lets you control a stepper motor, like the Nema 17 Bipolar Stepper Motor, with the EasyDriver - Stepper Motor Driver.

3/16/2018 - New Tutorial

Bezier Curve Node

The bezier curve node lets you convert a linear input to a curved output. It is especially useful for working with physical devices that have a non linear response, or adding ease in and out throughout a project for a more natural look.

3/5/2018 - New Library Item

I2C 20x4 LCD

This node works with any standard I2C 20x4 LCD module.

2/24/2018 - New Library Item

Pololu Maestro Servo Controllers

This node lets you control a bunch of servos with the Pololu Maestro family of servo control boards using the maestro-arduino library. A servo control board is great because it moves all of the hardware and software resources needed to control servo motors off of the Arduino and only takes up 2 pins to control a large number of servos. The board creates the smooth PWM signals needed to run the servos. You can also use these boards to control anything that's controlled by a PWM signal like LEDs.

1/2/2018 - New Tutorial

Servo Control with UI

This tutorial shows how to control a Servo with an Arduino via a user interface running on a PC, connected by a serial cable. The project contains two controllers, one to run on the Arduino, and one to run on the PC with a UI made with HTML, CSS, and jQuery. The two controllers communicate with built in serial communication nodes.

1/2/2018 - New Tutorial

Form Editing Basics

Embro lets you create programs with a user interface to run on a computer. Pages are creating using HTML, CSS, and jQuery. This video tutorial gives an overview of the Embrio form editor.