GoAkt is a distributed actor framework for Go that lets you build reactive systems with typed messages. It runs as a single process or a cluster of nodes behind the same API, and ships with the primitives (supervision, remoting, clustering, CRDTs, streams, observability) needed to put actor systems into production without re-rolling them yourself.
New to the actor model? Brian Storti's short introduction is a good starting point; the references at the end of that post go deeper.
SpawnChild, with child-to-parent navigationPreStart, PostStop, graceful stop, and poison-pill shutdownBecome and UnBecome, plus stacked BecomeStacked and UnBecomeStacked for protocol phasesTell, Ask, BatchTell, and BatchAsk for fire-and-forget, request-response, and bulk deliveryPipeTo: forward messages preserving the original sender, and pipe async task results back to an actorRequest with configurable modes and in-flight limitsStash, Unstash, and UnstashAll to defer messages during transient statesTerminated on deathTopicActor, cluster-aware with cross-node dissemination over remotingStop, Resume, Restart, and Escalate directives, plus retry windowsPipeTo integrates the breaker package to short-circuit calls to unhealthy dependenciesScheduleOnce, recurring Schedule, and ScheduleWithCron for cron-driven message deliveryPauseSchedule, ResumeSchedule, and CancelSchedule on existing referencesGCounter, PNCounter, LWWRegister, MVRegister, ORSet, ORMap, and Flag, with delta replication, anti-entropy sync, tombstone deletion, and snapshotsmap, filter, flatMap, batch, throttle, fan-out and fan-in), stage fusion, and built-in metrics and tracingWithExtensions on the actor system, then resolve them from any actor or grain via Extension on the receive contextWithDependencies, accessed inside Receive via Dependency and Dependencies; the actor system can also Inject dependency types for cluster-wide reconstruction on relocationSee Documentation for the full feature reference.
go get github.com/tochemey/goakt/v4
See the examples repository for runnable code covering local, remote, and clustered actor systems.
Architecture documents: Architecture.
Benchmark suite: Benchmark.
GoAkt is free and open source. If you need priority support on complex topics or request new features, please consider sponsorship.
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.
You can join these groups and chat to discuss and ask GoAkt related questions on:
We welcome contributions: bug fixes, new features, and documentation improvements. Before diving in, read the Architecture Document 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.
This framework is used in production by the following projects/companies:
Share feedback on this tracking issue; it helps shape what we work on next.