Skip to content

Tochemey/goakt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,321 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

GoAkt - Distributed Actor framework for Go
Distributed Actor framework for Go

build Go Reference Go Report Card codecov GitHub go.mod Go version Awesome OpenSSF Best Practices

Distributed Go actor framework to build a reactive and distributed system in Go with typed actor messages. GoAkt is highly scalable and available when running in cluster mode. It comes with the necessary features require to build a distributed actor-based system without sacrificing performance and reliability. With GoAkt, you can instantly create a fast, scalable, distributed system across a cluster of computers.

If you are not familiar with the actor model, the blog post from Brian Storti here is an excellent and short introduction to the actor model. Also, check the reference section at the end of the post for more material regarding the actor model.

Version & branches

  • v3 — Protocol buffers for actor messages. Branch: release/3.14.
  • v4 — Typed messages with any, unified APIs, pluggable serializers (Proto/CBOR), and config-only remoting. See CHANGELOG.md for migration; Docs for API reference.

Features

Feature Description
Actor Model Build concurrent and distributed systems using the actor model with typed messages.
Messaging Tell/Ask APIs for fire-and-forget or request/response flows.
Reentrancy Reentrancy-enabled async request messaging with configurable modes and per-call overrides.
Supervision One-for-one/one-for-all strategies, directives, and retry windows for fault tolerance.
Remoting Seamless communication between actors across nodes over TCP.
Context Propagation Pluggable context propagation for request-scoped metadata.
Clustering Multiple discovery backends (Consul, etcd, Kubernetes, NATS, mDNS, static).
Location Transparency Interact with actors without needing to know their physical location.
Relocation Automatic actor relocation on node failure with configurable policies.
Cluster Singletons Run a single instance across the cluster with guardian-based lifecycle.
Grains Virtual actors capabilities.
Passivation Automatically stop idle actors and reclaim resources.
Routers Routing strategies such as round robin, random, and fan-out.
Scheduling Timers and delayed messaging built into the runtime.
Stashing & Mailboxes Stash buffers and customizable mailboxes (bounded/unbounded, priority).
Dependency Injection Attach runtime dependencies to actors at spawn time.
Observability OpenTelemetry metrics, event stream, and dead letters.
Extensions Pluggable APIs for cross-cutting capabilities.
Data Center Multi-datacenter support with DC-transparent messaging, pluggable control plane (NATS JetStream, Etcd), DC-aware placement, and cross-DC actor/grain communication.
Distributed Data Built-in CRDTs (GCounter, PNCounter, LWWRegister, MVRegister, ORSet, ORMap, Flag) with delta-based replication and anti-entropy synchronization. Configurable coordination levels, key subscriptions, tombstone-based deletion, BoltDB snapshots, and role-based replication scoping.
Reactive Streams Actor-backed, backpressure-aware stream processing with a composable DSL. Rich sources, transformations (map, filter, flatMap, batch, throttle, scan, parallel map), sinks, fan-out/fan-in, graph topologies, error/overflow strategies, stage fusion, and built-in metrics/tracing.

Installation

# v3.x.x — stable, used in production
go get github.com/tochemey/goakt/v3

# v4.x.x — production ready
go get github.com/tochemey/goakt/v4

Documentations

Examples

Kindly check out the examples' repository.

Support

GoAkt is free and open source. If you need priority support on complex topics or request new features, please consider sponsorship.

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.

Community

You can join these groups and chat to discuss and ask GoAkt related questions on:

GitHub Discussions GitHub Issues or Pull Requests

Contribution

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 Earthly for builds.

See contributing.md for prerequisites, setup, and the full contribution workflow.

In Production

This framework is used in production by the following projects/companies:

  • Baki Money: AI-powered Expense Tracking platform that turns receipts into stories...
  • Event Processor: Clustered Complex Event Processor (CEP) for IoT data streams.

Feedback

Kindly use this issue to give us your feedback that can help us enhance the framework.

Benchmark

One can find the benchmark tests here: Benchmark

Architecture

One can find the architecture documents here: Architecture

Sponsors

User avatar: Andrew Brown