{"id":20465735,"url":"https://github.com/tochemey/goakt","last_synced_at":"2026-04-02T15:40:14.270Z","repository":{"id":63087579,"uuid":"562602746","full_name":"Tochemey/goakt","owner":"Tochemey","description":"[Go] Fast and Distributed Actor framework using protocol buffers as message for Golang","archived":false,"fork":false,"pushed_at":"2025-04-01T07:55:36.000Z","size":3392,"stargazers_count":231,"open_issues_count":1,"forks_count":17,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-04-01T12:54:58.505Z","etag":null,"topics":["actor-framework","actor-model","actor-system","actors","actorsystem","cloud-computing","concurrent-programming","distributed","distributed-system","distributed-systems","erlang-otp","event-sourcing","framework","go","go-actor","golang","golang-library","high-performance","proto","protocol-buffers"],"latest_commit_sha":null,"homepage":"https://tochemey.gitbook.io/goakt","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Tochemey.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"contributing.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"code_of_conduct.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"tochemey"}},"created_at":"2022-11-06T20:54:14.000Z","updated_at":"2025-04-01T07:55:40.000Z","dependencies_parsed_at":"2023-10-16T08:38:11.571Z","dependency_job_id":"eda77060-409b-44e7-aa07-427651e13efc","html_url":"https://github.com/Tochemey/goakt","commit_stats":{"total_commits":129,"total_committers":1,"mean_commits":129.0,"dds":0.0,"last_synced_commit":"a2ccf9cd1bb317b5e1b9fcbcd10b32915abe6bd6"},"previous_names":[],"tags_count":81,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tochemey%2Fgoakt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tochemey%2Fgoakt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tochemey%2Fgoakt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tochemey%2Fgoakt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Tochemey","download_url":"https://codeload.github.com/Tochemey/goakt/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247149500,"owners_count":20891954,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["actor-framework","actor-model","actor-system","actors","actorsystem","cloud-computing","concurrent-programming","distributed","distributed-system","distributed-systems","erlang-otp","event-sourcing","framework","go","go-actor","golang","golang-library","high-performance","proto","protocol-buffers"],"created_at":"2024-11-15T13:19:35.805Z","updated_at":"2026-04-02T15:40:14.261Z","avatar_url":"https://github.com/Tochemey.png","language":"Go","funding_links":["https://github.com/sponsors/tochemey","https://github.com/sponsors/Tochemey"],"categories":[],"sub_categories":[],"readme":"\u003ch2 align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/goakt-messaging-distributed-go.png\" alt=\"GoAkt - Distributed Actor framework for Go\" width=\"800\"/\u003e\u003cbr /\u003e\n  Distributed Actor framework for Go\n\u003c/h2\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/Tochemey/goakt/actions/workflows/build.yml\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/Tochemey/goakt/build.yml?branch=main\" alt=\"build\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://pkg.go.dev/github.com/tochemey/goakt\"\u003e\u003cimg src=\"https://pkg.go.dev/badge/github.com/tochemey/goakt.svg\" alt=\"Go Reference\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://goreportcard.com/report/github.com/tochemey/goakt\"\u003e\u003cimg src=\"https://goreportcard.com/badge/github.com/tochemey/goakt\" alt=\"Go Report Card\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://codecov.io/gh/Tochemey/goakt\"\u003e\u003cimg src=\"https://codecov.io/gh/Tochemey/goakt/graph/badge.svg?token=J0p9MzwSRH\" alt=\"codecov\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://go.dev/doc/install\"\u003e\u003cimg src=\"https://img.shields.io/github/go-mod/go-version/Tochemey/goakt\" alt=\"GitHub go.mod Go version\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/avelino/awesome-go\"\u003e\u003cimg src=\"https://awesome.re/badge.svg\" alt=\"Awesome\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.bestpractices.dev/projects/9248\"\u003e\u003cimg src=\"https://www.bestpractices.dev/projects/9248/badge\" alt=\"OpenSSF Best Practices\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nDistributed [Go](https://go.dev/) actor framework to build a reactive and distributed system in Go with typed actor messages.\nGoAkt is highly scalable and available when running in cluster mode. It comes with the necessary features require to\nbuild a distributed actor-based system without sacrificing performance and reliability. With GoAkt, you can instantly create a fast, scalable, distributed system\nacross a cluster of computers.\n\nIf you are not familiar with the actor model, the blog post from Brian Storti [here](https://www.brianstorti.com/the-actor-model/) is an excellent and short introduction to the actor model.\nAlso, check the reference section at the end of the post for more material regarding the actor model.\n\n\u003e **Version \u0026 branches**\n\u003e\n\u003e - **v3** — Protocol buffers for actor messages. Branch: [`release/3.14`](https://github.com/Tochemey/goakt/tree/release/3.14).\n\u003e - **v4** — Typed messages with `any`, unified APIs, pluggable serializers (Proto/CBOR), and config-only remoting. See [CHANGELOG.md](./CHANGELOG.md) for migration; [Docs](https://docs.goakt.dev/) for API reference.\n\n## Features\n\n| Feature                   | Description                                                                                                                                                                                                                                                                           |\n|---------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| **Actor Model**           | Build concurrent and distributed systems using the actor model with typed messages.                                                                                                                                                                                                   |\n| **Messaging**             | Tell/Ask APIs for fire-and-forget or request/response flows.                                                                                                                                                                                                                          |\n| **Reentrancy**            | Reentrancy-enabled async request messaging with configurable modes and per-call overrides.                                                                                                                                                                                            |\n| **Supervision**           | One-for-one/one-for-all strategies, directives, and retry windows for fault tolerance.                                                                                                                                                                                                |\n| **Remoting**              | Seamless communication between actors across nodes over TCP.                                                                                                                                                                                                                          |\n| **Context Propagation**   | Pluggable context propagation for request-scoped metadata.                                                                                                                                                                                                                            |\n| **Clustering**            | Multiple discovery backends (Consul, etcd, Kubernetes, NATS, mDNS, static).                                                                                                                                                                                                           |\n| **Location Transparency** | Interact with actors without needing to know their physical location.                                                                                                                                                                                                                 |\n| **Relocation**            | Automatic actor relocation on node failure with configurable policies.                                                                                                                                                                                                                |\n| **Cluster Singletons**    | Run a single instance across the cluster with guardian-based lifecycle.                                                                                                                                                                                                               |\n| **Grains**                | Virtual actors capabilities.                                                                                                                                                                                                                                                          |\n| **Passivation**           | Automatically stop idle actors and reclaim resources.                                                                                                                                                                                                                                 |\n| **Routers**               | Routing strategies such as round robin, random, and fan-out.                                                                                                                                                                                                                          |\n| **Scheduling**            | Timers and delayed messaging built into the runtime.                                                                                                                                                                                                                                  |\n| **Stashing \u0026 Mailboxes**  | Stash buffers and customizable mailboxes (bounded/unbounded, priority).                                                                                                                                                                                                               |\n| **Dependency Injection**  | Attach runtime dependencies to actors at spawn time.                                                                                                                                                                                                                                  |\n| **Observability**         | OpenTelemetry metrics, event stream, and dead letters.                                                                                                                                                                                                                                |\n| **Extensions**            | Pluggable APIs for cross-cutting capabilities.                                                                                                                                                                                                                                        |\n| **Data Center**           | Multi-datacenter support with DC-transparent messaging, pluggable control plane (NATS JetStream, Etcd), DC-aware placement, and cross-DC actor/grain communication.                                                                                                                   |\n| **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. |\n| **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.  |\n\n## Installation\n\n```bash\n# v3.x.x — stable, used in production\ngo get github.com/tochemey/goakt/v3\n\n# v4.x.x — production ready\ngo get github.com/tochemey/goakt/v4\n```\n\n## Documentations\n\n- **v4**: [v4](https://docs.goakt.dev)\n- **v3**: [v3](https://tochemey.gitbook.io/goakt)\n\n## Examples\n\nKindly check out the [examples](https://github.com/Tochemey/goakt-examples)' repository.\n\n## Support\n\nGoAkt is free and open source. If you need priority support on complex topics or request new features, please consider [sponsorship](https://github.com/sponsors/Tochemey).\n\n## Security\n\nApplications 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.\n\n## Community\n\nYou can join these groups and chat to discuss and ask GoAkt related questions on:\n\n[![GitHub Discussions](https://img.shields.io/github/discussions/Tochemey/goakt)](https://github.com/Tochemey/goakt/discussions)\n[![GitHub Issues or Pull Requests](https://img.shields.io/github/issues/Tochemey/goakt)](https://github.com/Tochemey/goakt/issues)\n\n## Contribution\n\nWe welcome contributions—bug fixes, new features, and documentation improvements. Before diving in, read the [Architecture Document](./arch/ARCHITECTURE.md) to understand the codebase. We use [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) and [Earthly](https://earthly.dev/get-earthly) for builds.\n\nSee [contributing.md](./CONTRIBUTING.md) for prerequisites, setup, and the full contribution workflow.\n\n## In Production\n\nThis framework is used in production by the following projects/companies:\n\n- [Baki Money](https://www.baki.money/): AI-powered Expense Tracking platform that turns receipts into stories...\n- [Event Processor](https://www.v-app.io/iot-builder-3/): Clustered Complex Event Processor (CEP) for IoT data streams.\n\n## Feedback\n\nKindly use this [issue](https://github.com/Tochemey/goakt/issues/948) to give us your feedback that can help us enhance the framework.\n\n## Benchmark\n\nOne can find the benchmark tests here: [Benchmark](./benchmark/)\n\n## Architecture\n\nOne can find the architecture documents here: [Architecture](./architecture/)\n\n## Sponsors\n\n\u003c!-- sponsors --\u003e\u003ca href=\"https://github.com/andrew-werdna\"\u003e\u003cimg src=\"https:\u0026#x2F;\u0026#x2F;github.com\u0026#x2F;andrew-werdna.png\" width=\"60px\" alt=\"User avatar: Andrew Brown\" /\u003e\u003c/a\u003e\u003c!-- sponsors --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftochemey%2Fgoakt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftochemey%2Fgoakt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftochemey%2Fgoakt/lists"}