Acts like IPC: an interoperability cage match

Over in Habitat IPC configuration, @DLed said:

Indeed I’d not use thread or even coroutine-centric abstractions for all 3: concurrency, parallelism and distribution. The Actor Model encapsulates all without extra mental overhead. Vaughn Vernon had recently published the Python port of his actor model library GitHub - VaughnVernon/DomoActors-Py: Actor Model toolkit for Python: Fault-tolerant, message-driven concurrency.

As I had never heard of DomoActors and was concerned about interop, I asked the Goog for a rundown:

Can DomoActors interoperate with Elixir?

Yes, DomoActors (used with the Commanded library in Elixir) readily interoperate with Elixir’s native actor model (BEAM processes) because they are Elixir processes, leveraging GenServer for state management and the BEAM’s message passing for communication, allowing for seamless integration within Elixir applications for Command Query Responsibility Segregation (CQRS) and event sourcing. …

However, this is not a guarantee of drama-free interop, so I asked a follow-up question:

Does Domoactors-py play nicely with the Elixir version?

It is important to distinguish between DomoActors-Py and the Domo Elixir library, as they are separate projects by different authors.

Interaction with Elixir

DomoActors-Py (released in late 2025 by Vaughn Vernon) is a type-safe Actor Model library for Python. It is inspired by the actor model found in languages like Elixir and Erlang but is not a direct “port” meant to communicate natively over the Erlang Distribution Protocol.

  • No Native Binary Protocol: DomoActors-Py uses Python’s asyncio for concurrency. It does not natively “speak” the Erlang distribution protocol used by Elixir’s actors (processes).
  • Interoperability Methods: To use them together, you would typically use standard cross-language communication:
  • JSON over HTTP/gRPC: Treat them as separate microservices.
  • Pythonx: If you need to run Python code directly inside an Elixir node, the Pythonx library allows you to embed a Python interpreter within the Elixir BEAM VM.
  • Port Drivers: Use Erlport to manage Python processes from Elixir.

(ducks…)