An actor-based framework for building distributed, event-driven systems in Go, inspired by Erlang with network transparency.
Ergo is a framework that implements Erlang's actor model and fault-tolerance patterns in Go. It enables developers to build complex, distributed applications with high reliability and performance by using isolated processes (actors) that communicate via message passing, with built-in network transparency and supervision trees for self-healing systems.
Go developers building distributed, fault-tolerant systems such as microservices, real-time backends, or networked applications that require high concurrency and resilience. It is particularly suited for teams familiar with or inspired by Erlang/OTP design principles.
Developers choose Ergo to leverage Erlang's battle-tested concurrency and fault-tolerance patterns within the Go ecosystem, without external dependencies. Its unique selling point is network transparency—actors interact identically whether local or remote—combined with high performance (over 21 million messages/sec locally) and ready-to-use components for rapid development.
An actor-based Framework with network transparency for creating event-driven architecture in Golang. Inspired by Erlang. Zero dependencies.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Benchmarks show over 21 million messages per second locally and nearly 5 million over network on a 64-core processor, thanks to efficient custom serialization and protocol optimizations.
Actors interact identically whether local or remote, with built-in service discovery, distributed pub/sub, and an efficient protocol using compression and connection pooling.
Implements supervision trees with multiple restart strategies (One For One, All For One, etc.) and restart types, enabling self-healing systems inspired by Erlang/OTP.
Includes core actors (Actor, Supervisor), meta processes for I/O (TCP, UDP, Web), and an extra library with Leader, Metrics, WebSocket, and SSE components for rapid development.
Adopting the actor model and Erlang patterns demands a significant learning curve for Go developers accustomed to goroutines and channels, potentially slowing initial development.
As a specialized framework, it has a smaller community and fewer third-party integrations compared to mainstream Go libraries, which can increase effort for custom or non-standard use cases.
Reliance on the `ergo` tool for boilerplate and the need to understand supervision trees add initial complexity over standard Go project setups, despite the tool's convenience.