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:


Blink 2 LEDs - In Embrio, when you have 1 LED blinking, it's simple to make another LED blink. This tutorial introduces the concept of Reusable Node Groups in Embrio which let you encapsulate a group of nodes into a reusable node.


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, an...


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

6/18/2018 - New Forum Post

"+" sign disappears in program code

mogplus8: Nothing I've tried saves the plus sign. Even collapsing the node then expanding it for editing again makes is disappear. Even more bizarrely, if I highlight all the code, including the plus sign, then

6/10/2018 - New Forum Post

Installation succefull but embrio2 don't start!!!

EmbrioAdmin: I think I've got this figured out. It turns out that the cross platform library I'm using is pretty picky as to which version of Mono it works with. The link currently on the download page is wrong,

6/10/2018 - Embrio Software Update


Bugs Fixed
Node outputs in nested reusable node groups would cause a compile error in the compiled program.

6/5/2018 - New Forum Post

Interface behaviour a bit odd

EmbrioAdmin: Ran into a few snags with the update but it's up now. When you get a chance could you update your copy and let me know if it fixes the issues you were seeing? You mentioned hitting the S key. W

6/4/2018 - Embrio Software Update


Bugs Fixed
Zoom works on Windows.
Sometimes after adding a node the node's buttons wouldn't work.
Trigger inputs would fire on compiled program startup.

5/27/2018 - Embrio Software Update


New Features
Much faster Arduino uploading, calls the internal commands directly instead of using the Arduino IDE.
Added a toolbar to the top of the application with a connection and upload feedback.

Bugs Fixed
Big performance improvement on Windows. Replaced the Chrome web control with the built in Internet Explorer control which is faster and makes for an easier and cleaner install. Also some users experienced lots of performance bugs with the Chrome control which should be gone now.

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.

2/20/2018 - New Library Item

TM1637 4 Digit Display

This node lets you use any 4 digit display that uses the TM1637 LED Driver library.

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.