Goakt
Fast and Distributed Actor framework using protocol buffers as message for Golang
About Goakt
GoAkt is a distributed actor framework for Go, inspired by Erlang and Akka. In development since 2022 and used in production, it lets you build responsive, resilient, and elastic systems with typed actor messages, running as a single process or a cluster of nodes behind the same API.
- Simpler concurrency. Actors process one message at a time; you write plain Go with no locks, channel plumbing, or shared-state bugs.
- Location transparency. Send a message to a local, remote, or clustered actor with the same API; the framework handles the wire.
- Resilience by design. Supervision trees and the "let it crash" model, inspired by Erlang/OTP, keep failures contained and recoverable.
- Production batteries included. Clustering, virtual actors (grains), CRDTs, streams, scheduling, passivation, and observability, without re-rolling them yourself.
Teams use GoAkt for event processing, IoT and edge workloads, real-time platforms, and distributed backends that would otherwise need a message broker plus custom coordination code.
New to the actor model? Actors are isolated units of computation that share no memory, each with a mailbox, private state, and one message in flight at a time. On a message, an actor can create more actors, send messages, or change how it handles the next one. For more depth, watch Carl Hewitt, the father of the actor model, explain it in his own words:
See goakt.dev for an overview and the documentation for the full feature reference.
Installation
go get github.com/tochemey/goakt/v4
Examples
See the examples repository for runnable code covering local, remote, and clustered actor systems.
In Production
These systems run GoAkt in production:
- Baki Money: AI-powered expense tracking platform that turns receipts into stories. Actors cache the app's data today, with wider use of the framework planned.
- Analytics platform: a self-hosted analytics platform that collects behavioural and telemetry data across several product lines. It runs as one Go monolith on Kubernetes at about 31 pods, with GoAkt as the entire distribution layer: no message broker, no service mesh and no external actor registry. Inbound WebSocket and SSE connections are cluster-named actors, outbound integrations are single-activation grains, reporting fans out over messages, and cluster single-fire cron lets an external scheduler retire. In their words, "the actor core has not been a source of surprises". Read the full production report.
Being built on GoAkt:
- V-App IoT Builder: a clustered Complex Event Processor that lets end users graphically design rules applied to incoming sensor data and react to environment changes.
- Galaxy: a distributed real-time game platform. It uses clustered actors and grains for player state, matchmaking lobbies, game sessions, authoritative clocks, persistence and node relocation, with NATS JetStream for durable state, event logs and reliable WebSocket delivery.
Running GoAkt in production? Write a short report to be listed here, or tell us how it is going in the feedback discussion.
Security
Applications using this library should routinely upgrade their Go version and refresh dependencies as needed to mitigate security vulnerabilities. GoAkt will make a best effort to keep dependencies current and perform vulnerability checks whenever necessary. To report a vulnerability, use GitHub's Report a Vulnerability form, as described in SECURITY.md.
Community
Ask questions and follow the work in Discussions, Issues, or on Slack. Feedback on the tracking issue helps shape what we work on next.
Contribution
We welcome contributions: bug fixes, new features, and documentation improvements. Before diving in, read the architecture overview of GoAkt from the Inside, the maintainers' book, to understand the codebase. We use Conventional Commits and a Docker-backed Makefile so contributors only need Docker and Make installed; run make help to see the available targets.
See contributing.md for prerequisites, setup, and the full contribution workflow, the other design documents covering the dispatcher pool, CRDTs, streams, reentrancy, and reliable delivery, and the benchmark suite for the performance harness.
Sponsors
GoAkt is free and open source. If you need priority support on complex topics or want to fund new features, consider sponsorship.
Frequently Asked Questions
What is Goakt?
Goakt is a Actor Model library for the Go programming language. Fast and Distributed Actor framework using protocol buffers as message for Golang
How do I install Goakt?
Install Goakt with the Go module system using `go get Tochemey/goakt`. Check the repository for the current installation instructions.
What category does Goakt belong to?
Goakt is listed under Actor Model, specifically Actor Model.
