The stack
A current stack, on purpose. Scala 3 LTS, current JDK LTS, RocksDB, maintained to the latest stable across the board. Production infrastructure runs on supported foundations, not frozen ones. This is what active engineering looks like in a dependency manifest.
| Component | What it is | Why it matters |
|---|---|---|
| Scala 3 LTS · current JDK LTS | Language and runtime | A current, maintained foundation, not a frozen one. |
| Apache Pekko | Actor runtime | Open Apache license; no commercial subscription, no vendor lock. |
| RocksDB | Storage engine | The same proven embedded store the EVM client world relies on. |
| Cats Effect 3 · fs2 | Concurrency | Pure-functional effects; correctness extended into the runtime. |
| Bouncy Castle · BLS12-381 · KZG | Cryptography | The same primitives used across the wider Ethereum ecosystem. |
| Netty · Micrometer · Prometheus | Networking and observability | The JVM operational toolchain, the part that matters at 3 a.m. |
| Layer | Library | Track |
|---|---|---|
| Language | Scala 3 LTS | Current LTS patch |
| JDK | OpenJDK | Current LTS |
| Actor system | Apache Pekko (actor + typed + streams) | Latest stable |
| HTTP / WebSocket / GraphQL | Apache Pekko HTTP | Latest stable |
| GraphQL engine | Sangria (EIP-1767) | Latest stable |
| Storage | RocksDB JNI | Latest stable |
| In-memory cache | Caffeine / Scaffeine | Latest stable |
| Crypto | Bouncy Castle | Latest stable |
| BLS12-381 | Hyperledger Besu BLS | Latest stable |
| KZG / EIP-4844 | jc-kzg-4844 | Latest stable |
| Effects | Cats Effect 3 | Latest stable |
| Streaming | fs2 | Latest stable |
| FP core | Cats | Latest stable |
| Codec / RLP | scodec-core / scodec-bits | Latest stable |
| Networking | Netty | Latest stable |
| Network discovery | UPnP via JUPnP | Latest stable |
| Serialization | json4s / circe | Latest stable |
| Metrics | Prometheus Java client | Latest stable |
| Metrics | Micrometer (JMX + Prometheus) | Latest stable |
| Observability | Kamon | Latest stable |
| Logging | Logback / scala-logging / log4cats | Latest stable |
| Compression | snappy-java | Latest stable |
- RocksDB: tracked to the latest stable release, not pinned to an old baseline.
- Apache Pekko: the actor system, under Apache Software Foundation governance and Apache 2.0 throughout. It forked from Akka before that project moved to the Business Source License, so nothing here carries a source-available or commercial-use restriction.
- BouncyCastle: cryptography from a library with a long audit history, rather than a reimplementation.
- Scala 3 LTS: kept current with each LTS patch release.
- JDK: tracked to the LTS line, upgraded as each LTS is published.
- Cats Effect 3 + fs2: the effect system, tracked on its stable line.
Why the list is short
Every library above is a version to track, an advisory feed to watch, and code that runs with the node's privileges. That makes the length of this list a decision rather than an accumulation. A dependency earns its place by doing something that would otherwise have to be written and maintained here, and something that does not clear that bar is left out even when it would save an afternoon.
The release track column says how each one is followed. A library held to a stable line takes the latest patch on that line and goes no further; one tracked to latest moves with upstream. The distinction earns itself the day a fix and a breaking change arrive in the same release, which is when a track chosen in advance stops being an opinion and starts doing work.
How a change to this list happens
A dependency change is reviewed on its own terms rather than as part of whatever needed it. That is deliberate. A bump riding inside a feature branch gets the attention the feature gets, which is not the attention the bump needs, so adds, removals and version changes travel separately and are read on their own.
Automated update proposals are also held for a cooldown before they are raised at all, so a release withdrawn or superseded within its first week never becomes a pull request anyone has to evaluate. Security advisories are exempt from that hold and arrive immediately, which is the one case where waiting is the more expensive option.
