Skip to content
Erlang node implemented in Python 3.5+ (Asyncio-based)
Python Erlang Makefile Other
Branch: master
Clone or download
s2hc-johan Merge pull request #55 from Pyrlang/process_representation
make it possible to encode a process instance with term
Latest commit f068628 Oct 8, 2019

Pyrlang - Erlang node in Python

This is a drop-in Erlang node implementation in Python 3.5, implementing a network Erlang node protocol. It was designed to allow interoperation between existing Python projects and BEAM languages: Erlang, Elixir, Alpaca, Luaerl, LFE, Clojerl and such.

With just a few lines of startup code your Python program becomes an Erlang network node, participating in the Erlang cluster.


Browse at

Or build your own by running make docs (generated by Sphinx).

Support & Questions

For those times when you absolutely need assistance and email is too slow, here's a Discord channel: and there is a Slack channel #pyrlang on


  • Switchable async engine backends: Gevent and Asyncio.
  • Erlang distribution protocol for Erlang versions 19, 20, and 21
  • Registry of Python 'processes', which have an Erlang-compatible process identifier and an optional registered name
  • Send and receive messages locally and remotely by pid or name
  • Can link and monitor Erlang from Python and Python from Erlang
  • net_adm pings supported
  • RPC calls to Python (Erlang rpc:call). Exceptions are propagated from Python back to Erlang;
  • Pyrlang.GenServer descendant from Pyrlang.Process allows accepting generic calls mapped to Python class members
You can’t perform that action at this time.