Build highly concurrent, distributed, and resilient message-driven applications using Java/Scala https://pekko.apache.org/
  • Scala 68.2%
  • Java 31.7%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-11-03 19:19:43 +01:00
.github Run typed cluster tests with classic remoting in PR validation (#3745) 2026-11-02 15:06:40 +01:00
actor/src/main Revert "fix: preserve Runnable hash codes in PekkoForkJoinTask (#3668)" (#3681) 2026-10-24 20:31:15 +08:00
actor-testkit-typed/src Widen typed Java DSL function parameters with wildcard bounds (#3720) 2026-10-28 13:36:31 +00:00
actor-tests/src/test test: remove obsolete SameThreadExecutionContextSpec (#3679) 2026-10-25 09:53:03 +00:00
actor-typed/src/main Widen typed Java DSL function parameters with wildcard bounds (#3720) 2026-10-28 13:36:31 +00:00
actor-typed-tests/src/test Widen typed Java DSL function parameters with wildcard bounds (#3720) 2026-10-28 13:36:31 +00:00
bench-jmh Avoid quadratic cursor scans in fanout publishers (#3730) 2026-10-30 15:36:14 +08:00
cluster chore: remove @ApiMayChange from APIs that have proven stable (#3607) 2026-10-09 16:59:56 +01:00
cluster-metrics/src ci: pin site-link-validator to 0.2.5 and fix broken doc links (#3604) 2026-10-09 13:52:25 +01:00
cluster-sharding/src Log failed lease releases when a Shard stops #3705 (#3733) 2026-10-30 13:24:02 +08:00
cluster-sharding-typed/src Widen typed Java DSL function parameters with wildcard bounds (#3720) 2026-10-28 13:36:31 +00:00
cluster-tools/src Update Lightbend notices to 2023 for code ported from Akka 2.9.0 (#3670) 2026-10-23 13:07:34 +01:00
cluster-typed/src Run typed cluster tests with classic remoting in PR validation (#3745) 2026-11-02 15:06:40 +01:00
coordination/src Log failed lease releases when a Shard stops #3705 (#3733) 2026-10-30 13:24:02 +08:00
discovery/src chore: remove leftover Scala 2.12 idioms (#3539) 2026-10-02 10:35:23 +01:00
distributed-data/src protoc 4.36.0 (#3514) 2026-09-06 11:36:04 +01:00
docs/src Report TLS truncation on transport-output cancellation #3739 (#3740) 2026-11-01 16:13:54 +08:00
kubernetes chore: add Apache license headers to logback configs, shell scripts and benchmark template (#3545) 2026-09-17 21:59:19 +01:00
legal
multi-node-testkit/src/main fix: answer conductor socket address queries asynchronously (#3693) (#3707) 2026-10-26 17:53:52 +08:00
osgi/src chore: remove leftover Scala 2.12 idioms (#3539) 2026-10-02 10:35:23 +01:00
persistence/src feat: improve EventWriter: fill sequence number gaps, handle lookup failures and snapshot events, bypass the circuit breaker (#3653) 2026-10-23 21:31:08 +08:00
persistence-query/src Mark established shard allocation and persistence query APIs as stable (#3656) 2026-10-23 20:18:40 +08:00
persistence-shared/src/test/scala/org/apache/pekko/persistence fix: bound persistence event replay batches (#3325) 2026-07-16 23:01:56 +08:00
persistence-tck/src chore: remove leftover Scala 2.12 idioms (#3539) 2026-10-02 10:35:23 +01:00
persistence-testkit/src Widen typed Java DSL function parameters with wildcard bounds (#3720) 2026-10-28 13:36:31 +00:00
persistence-typed/src Widen typed Java DSL function parameters with wildcard bounds (#3720) 2026-10-28 13:36:31 +00:00
persistence-typed-tests/src/test Widen typed Java DSL function parameters with wildcard bounds (#3720) 2026-10-28 13:36:31 +00:00
pki/src refactor: convert org.apache.pekko.X imports to pekko.X style (#3348) 2026-07-19 04:19:53 +08:00
project Update netty-handler, netty-transport to 4.2.20.Final (#3748) 2026-11-03 19:19:43 +01:00
remote/src Avoid fixed ports in ActorsLeakSpec #3730 (#3736) 2026-10-30 07:29:43 +00:00
remote-tests/src fix: answer conductor socket address queries asynchronously (#3693) (#3707) 2026-10-26 17:53:52 +08:00
scripts ci: pin site-link-validator to 0.2.5 and fix broken doc links (#3604) 2026-10-09 13:52:25 +01:00
serialization-jackson/src fix: fail fast when both Jackson serializer modules are on the classpath (#3673) 2026-10-23 13:51:43 +01:00
serialization-jackson3/src fix: fail fast when both Jackson serializer modules are on the classpath (#3673) 2026-10-23 13:51:43 +01:00
slf4j/src fix: handle Artery uid collisions gracefully and make system uids more unique (#3652) 2026-10-23 16:13:48 +01:00
stream/src/main docs: fix broken zstd manual links (#3746) 2026-11-02 14:17:08 +01:00
stream-testkit/src chore: remove leftover Scala 2.12 idioms (#3539) 2026-10-02 10:35:23 +01:00
stream-tests/src/test Report TLS truncation on transport-output cancellation #3739 (#3740) 2026-11-01 16:13:54 +08:00
stream-tests-tck/src/test/scala/org/apache/pekko/stream/tck refactor: convert org.apache.pekko.X imports to pekko.X style (#3348) 2026-07-19 04:19:53 +08:00
stream-typed/src Widen stream-typed Java DSL function parameters with wildcard bounds (#3718) 2026-10-27 19:47:44 +00:00
stream-typed-tests/src/test/scala/org/apache/pekko/stream chore: remove leftover Scala 2.12 idioms (#3539) 2026-10-02 10:35:23 +01:00
testkit/src chore: remove leftover Scala 2.12 idioms (#3539) 2026-10-02 10:35:23 +01:00
.asf.yaml protect 1.8.x branch (#3623) 2026-10-13 10:34:48 +01:00
.git-blame-ignore-revs
.gitattributes
.gitignore
.jvmopts-ci build: stop CI switching the default SecureRandom away from NativePRNG (#3482) 2026-08-28 07:28:45 +01:00
.sbt-java-formatter.conf
.sbtopts
.scala-steward.conf agrona 2.7.0 (#3726) 2026-10-28 21:36:43 +00:00
.scalafix.conf
.scalafmt.conf Update scalafmt-core to 3.11.5 (#3396) 2026-07-28 18:51:00 +02:00
AGENTS.md Add a draft threat model and wire it for discoverability (#3478) 2026-09-07 18:12:13 +01:00
build.sbt build: update Scala 3 to 3.3.9 (#3538) 2026-10-28 19:06:15 +00:00
CHANGELOG.md
CLAUDE.md chore: disable additional Scala 3 specific syntax in scalafmt (#3198) 2026-07-19 00:51:22 +01:00
CONTRIBUTING.md refactor: rename Jdk9 sbt plugin to Jdk21 to reflect actual purpose (#3075) 2026-06-16 10:39:05 +08:00
COPYING.protobuf
KEYS
LICENSE
NOTICE
README.md
SECURITY.md Add a draft threat model and wire it for discoverability (#3478) 2026-09-07 18:12:13 +01:00
THREAT_MODEL.md Add a draft threat model and wire it for discoverability (#3478) 2026-09-07 18:12:13 +01:00

Apache Pekko

Nightly Builds Nightly Aeron Tests OpenSSF Best Practices

Apache Pekko is an open-source framework for building applications that are concurrent, distributed, resilient and elastic. Pekko uses the Actor Model to provide more intuitive high-level abstractions for concurrency. Using these abstractions, Pekko also provides libraries for persistence, streams, HTTP, and more.

Pekko is a fork of Akka 2.6.x, prior to the Akka project's adoption of the Business Source License. Pekko now contains some features from Akka 2.7.0 (Apache 2.0 Licensed now)

Reference Documentation

See https://pekko.apache.org for the documentation including the API docs. The docs for all the Apache Pekko modules can be found there.

Building from Source

The CI build is Linux based (Ubuntu) and most Pekko developers use Macs or Linux machines. There have been reports of issues when building with Windows (#829).

Using IntelliJ IDEA

To use IntelliJ IDEA, you need to configure your project to use JDK 17. For a visual guide, refer to this Q&A.

  • File > Project Structure > Project Settings > Project > Set your JDK to version 17
  • Settings > ... > Scala Compiler Server > Set your JDK to version 17
  • Settings > ... > sbt > Set your JRE to version 17

Prerequisites

  • Make sure you have installed a Java Development Kit (JDK) version 17 or later.
  • Make sure you have sbt installed and using this JDK.
  • Graphviz is needed for the scaladoc generation build task, which is part of the release.

Running the Build

  • Open a command window and change directory to your preferred base directory
  • Use git to clone the repo or download a source release from https://pekko.apache.org (and unzip or untar it, as appropriate)
  • Change directory to the directory where you installed the source (you should have a file called build.sbt in this directory)
  • sbt compile compiles the main source for project default version of Scala (2.13)
    • sbt +compile will compile for all supported versions of Scala
  • sbt test will compile the code and run the unit tests
  • sbt testQuick similar to test but when repeated in shell mode will only run failing tests
  • sbt testQuickUntilPassed similar to testQuick but will loop until tests pass.
  • sbt package will build the jars
    • the jars will be built into target dirs of the various modules
    • for the 'actor' module, the jar will be built to actor/target/scala-2.13/
  • sbt publishLocal will push the jars to your local Apache Ivy repository
  • sbt publishM2 will push the jars to your local Apache Maven repository
  • sbt docs/paradox will build the docs (the ones describing the module features)
    • sbt docs/paradoxBrowse does the same but will open the docs in your browser when complete
    • the index.html file will appear in target/paradox/site/main/
  • sbt unidoc will build the Javadocs for all the modules and load them to one place (may require Graphviz, see Prerequisites above)
    • the index.html file will appear in target/scala-2.13/unidoc/
  • sbt sourceDistGenerate will generate source release to target/dist/
  • The version number that appears in filenames and docs is derived, by default. The derived version contains the most git commit id or the date/time (if the directory is not under git control).
    • You can set the version number explicitly when running sbt commands
      • eg sbt "set ThisBuild / version := \"1.0.0\"; sourceDistGenerate"
    • Or you can add a file called version.sbt to the same directory that has the build.sbt containing something like
      • ThisBuild / version := "1.0.0"

Community

There are several ways to interact with the Pekko community:

  • GitHub discussions: for questions and general discussion.
  • Pekko dev mailing list: for Pekko development discussions.
  • Pekko users mailing list: for Pekko user discussions.
  • GitHub issues: for bug reports and feature requests. Please search the existing issues before creating new ones. If you are unsure whether you have found a bug, consider asking in GitHub discussions or the mailing list first.

Contributing

Contributions are very welcome. If you have an idea on how to improve Pekko, don't hesitate to create an issue or submit a pull request.

See CONTRIBUTING.md for details on the development workflow and how to create your pull request.

Code of Conduct

Apache Pekko is governed by the Apache code of conduct. By participating in this project you agree to abide by its terms.

License

Apache Pekko is available under the Apache License, version 2.0. See LICENSE file for details.