Ergo is a distributed actor framework for Go that implements the Erlang distribution protocol, enabling the construction of resilient, concurrent applications that can communicate transparently with Erlang/OTP nodes. At its core, it provides an actor model with isolated lightweight processes, priority-ordered mailboxes, and a meta-process architecture that separates blocking I/O from sequential message handling to prevent actor freezing. The framework includes a Raft-inspired cluster consensus system for leader election and automatic failover, along with OTP-style supervision trees that organize processes hierarchically for automatic crash detection and configurable restart strategies.
The framework distinguishes itself through its native Erlang interoperability, allowing Go and Erlang nodes to exchange messages using the Erlang DIST protocol and Erlang Term Format encoding. It offers a complete set of distributed systems primitives including transparent cross-node messaging, cluster membership management with peer discovery, and topology-agnostic deployment that lets the same application code run as a monolith or across multiple nodes by changing only the entry point configuration. Ergo also provides a server-sent events streaming platform where each HTTP connection is managed as a cluster-addressable actor, supporting typed event dispatch, reconnection handling, and distribution across handler pools.
Beyond its core actor and distributed systems capabilities, Ergo includes a scheduled job execution system with crontab syntax, timezone handling, and remote execution across nodes. The framework provides comprehensive observability through Prometheus metrics collection, structured logging with lock-free asynchronous output, and a web-based node inspector for examining processes, network stacks, and application state. A command-line scaffolding tool generates project skeletons, supervisors, process pools, and network servers to accelerate development.