Skip to content
vic

Pyrlang/Pyrlang

Erlang node implemented in Python 3.5+ (Asyncio-based)

Pyrlang/Pyrlang.json
{
"createdAt": "2017-05-19T16:01:27Z",
"defaultBranch": "master",
"description": "Erlang node implemented in Python 3.5+ (Asyncio-based)",
"fullName": "Pyrlang/Pyrlang",
"homepage": "https://pyrlang.github.io/Pyrlang/",
"language": "Python",
"name": "Pyrlang",
"pushedAt": "2025-04-09T01:22:12Z",
"stargazersCount": 633,
"topics": [
"distributed",
"erlang",
"erlang-node",
"gevent",
"library",
"message-passing",
"python",
"rpc"
],
"updatedAt": "2025-11-09T20:30:28Z",
"url": "https://github.com/Pyrlang/Pyrlang"
}

This is a drop-in Erlang node implementation in Python 3, implementing a network Erlang node protocol. It was designed to allow interoperation between existing Python projects and BEAM languages: Erlang, Elixir, Gleam, 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.

  • Erlang distribution protocol for Erlang versions 19 to 25
  • 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.gen.server.GenServer descendant from pyrlang.process.Process allows accepting generic calls mapped to Python class members

Browse at https://pyrlang.github.io/Pyrlang/

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

  1. Clone Pyrlang and Term repositories
  2. Install Term from source: Go to Term directory and pip install -e .
  3. Install Pyrlang from source: Go to Pyrlang directory and pip install -e .

For those times when you absolutely need assistance and email is too slow, here’s a Discord channel: https://discord.gg/pWWe7Wx and there is a Slack channel #pyrlang on https://erlanger.slack.com/