Announcing a new Autonomous Decentralized Systems Framework for Elixir

Introducing Automata

An ambitious project with the goal of creating an AI control architecture framework for building autonomous decentralized systems (ADS)

From the Readme:
Spawn a collection of concurrent, distributed, fault-tolerant, and highly available distributed intelligent agents for coordinated and/or uncoordinated action in one or many environments with no central point of failure.

This project combines my work at Stanford University in Artificial Intelligence with my interest in autonomous decentralized systems.

The goal is to get a prototype working for single-node(machine), single automaton system, and eventually expand to a distributed architecture.

I am seeking partners/contributors for building out the inital prototype at the least and hopefully making meaningful connections with like-minded engineers for making this dream a reality. Lets get to work!

Current Needs:

  • Artificial Intelligence/Cognitive Architecture/Behavior Tree Expertise
  • Elixir Design/Architecture Expertise
  • ETS Expertise for BlackBoard System
  • Test Coverage
  • Documentation

Or just a strong interest and desire to learn any/all of the above…

Reach out to me here or at if interested. We can start a slack channel and ideate, iterate, and just generally have a grand old time!




Sounds extremely interesting, but quite a bit beyond my skill, to tell you the truth.

1 Like

It’s funny you say that, because thats exactly what I’m thinking. But, I believe it is important to push through doubt and challenge yourself beyond what your currently capable of to get better. As we all should in order to make amazing projects for the world that help them to finally see the light on the magic of Elixir.

I’m committed to this project and improving rapidly with Elixir, and from what I’ve seen of your work Aetherus, your skill is very good, and I think this project has many opportunities for all skill levels, it just may take time before they appear since it is still early in the project.

If you truly think it’s not the project for you then I understand, but I think you have what it takes to contribute and welcome you to give it a second thought. If not, maybe you could star it, and if/when you get better with the elixir ecosystem you could contribute then!

Thanks and Best, Eric


Exactly. I’m in, but don’t expect me to contribute a lot in the near future. I’ll try my best to catch up though.

1 Like

In case you haven’t found, there are libraries like libcluster and swarm that can help you achieve autonomous decentralization.

Yes indeed, and there is also Horde


Can I add you as a contributor? What’s your github username?


I’m a Chinese guy.

I’ve already forked your GitHub repo, and now reading your code and see if I can understand it.


Excellent. No worries about not contributing right away, I want to do things very much the right way rather than the fast way. I feel like our industry is too fast moving already, and we should take the time to really think things through and commit to very high standards, best practices, and quality, all which take time. In fact the next thing I’ll be doing is writing up some kind of standards section on the README. TTYL!


Thank you for letting me be a contributor. I feel I need to learn more about the behavior tree. I’m googling now. Thanks again. Oh, forgive my poor English.


By the Way, the current basic architecture is based on The Elixir & OTP Guidebook which is by Benjamin Tan Wei Hao ( another chinese guy ). It is one of the best elixir books out there (along with Elixir in Action) and highly recommended if you haven’t read it.

Actually Elixir evolves quite a lot from 1.3 to 1.10, so the “Guidebook” maybe a little out of date. “Elixir in Action” released its 2019 edition lately, so maybe it’s more relevant IMHO.

For example, OTP 21 added a new callback handle_continue/2 to GenServer, and Elixir >= 1.9 ships with the release capability so you don’t have to rely on Distillery any more.

1 Like

Yes it is a out of date. I had to update to DynamicSupervisor as well, but if you see other places feel free to update it.

I’d gladly join and try to help as a senior programmer in the area of code organisation, readable code, short and meaningful docs – not promising anything about the AI stuff though.

That is, after I finish my job hunt.


Absolutely incredible! Yes, please. I knew this was the right place to start! I’m new at this process. Should I invite you as a contributor? Github username?

Same as this one here: dimitarvp.

I’m glad you’re not putting any schedules on this because it might take time.

1 Like

R & D mode. I’m still researching in a pretty major way right now. Development probably shouldn’t even happen right away as we learn about the right way to do it. Plus I’m still learning advance Elixir concepts so that is a thing.

1 Like

Update on the Automata project for an AI control architecture framework. I have a mock sequence running (nodes/seq_mock_nodes.ex, run with iex -S mix) and just need to ensure that the user-defined behavior trees are being updated synchronously even when ticked continuously (not just one time – or start tracking last running node from root with a zippertree or similar to minimize updates).

So I now consider the core design to be stable. Next steps are to get a grasp on testing needs and how to handle timeouts for user-defined nodes, etc… Logistics of and more elaborate testing of the basic classic behavior tree sequence.

Help wanted:

@ericsteen I am interested in helping out. Tried to join the slack via the link on the readme and contributing docs, but the invite link is stale. My github handle is paultannenbaum

Fantastic! thanks paultannenbaum, that’s odd the link works for me, will look into it. I added you to the repo