Skip to content
CAI
Software that uses CAICheck a score

parapet-io/parapet

65.5

Adequate · 20 September 2026

7.4k

lines of production code

Scala

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

Parapet is a Scala 3 toolkit for building distributed systems using an actor model with isolated, mailbox-driven processes. It provides a structured networking stack supporting TCP and UDP transports via ZeroMQ and Aeron, enabling synchronous request/response patterns and bidirectional communication. The framework offers effect-polymorphic backends, including Cats Effect and a reference ParIO runtime, to manage process lifecycles, scheduling, and persistence.

Features

Added WireCodec type class for serialization

The parapet-protocol module now includes a new WireCodec type class that defines how application-level values are serialized to and deserialized from raw bytes for transport. This abstraction allows transport code to remain polymorphic over payload types, with built-in support for raw byte arrays (using defensive cloning) and UTF-8 encoded strings.

parapet-protocol · high confidence

Introduce core actor runtime with request/response channels and dead-letter handling

The \parapet-core\ module now provides the foundational actor runtime, including the \Process\ trait for defining isolated, mailbox-driven units of behavior and \ProcessRef\ for stable, opaque addressing. A new \Channel\ class enables synchronous-style request/response interactions by managing a strict one-outstanding-call discipline and correlating replies via causation IDs. The runtime also introduces a \DeadLetterProcess\ to capture and log events that cannot be delivered, ensuring failures are surfaced rather than silently dropped. Application bootstrapping is handled by \ParApp\, which wires together the scheduler, DSL interpreter, and optional snapshot/journal storage, while \ParConfig\ allows tuning of mailbox sizes, worker counts, and feature flags like fault injection.

parapet-core/src · high confidence

Introduce structured network transport layer with protocol-agnostic processes

The \parapet-net\ module now provides a complete, structured networking stack built on a process-based architecture. This includes a protobuf-based wire format (\wire.proto\) and a Scala \MessageCodec\ for serializing correlated request/response payloads. The system defines three core transport abstractions—\ClientTransport\ (request/reply), \ServerTransport\ (routed request/reply), and \DuplexTransport\ (bidirectional)—alongside a \DatagramTransport\ for connectionless UDP. These are implemented by specific backends: ZeroMQ (TCP client/server/duplex) and Aeron (UDP datagrams). To manage these transports, new process actors (\ClientProcess\, \ServerProcess\, \DatagramProcess\, \DuplexProcess\) handle lifecycle, correlation ID matching, routing, and error propagation, exposing a unified event-driven interface for application logic.

parapet-net/src · high confidence

New Cats Effect backend for Parapet

The \parapet-cats-effect\ module is now available as the recommended production backend for running Parapet on Cats Effect \IO\. It provides \Effect\[IO\]\ and \Parallel\[IO\]\ instances, an internal \SchedulerRuntime\[IO\]\, and a \CatsEffectParApp\ convenience base class to simplify application setup. This module owns the runtime integration details, allowing the core \parapet-core\ library to remain effect-polymorphic and independent of Cats Effect. The release includes comprehensive integration tests and benchmarks to validate the backend's behavior.

parapet-cats-effect · high confidence

Reference ParIO effect runtime and application entry point

This change introduces the \parapet-pario\ module, providing a reference \ParIO\ effect type and its runtime interpreter (\ParIORuntime\) for the Parapet actor framework. It includes \ParIOApp\, a base class for defining applications using this effect, and a comprehensive test suite validating the runtime's thread-pool scheduling, process recovery, journaling, and snapshotting capabilities.

parapet-pario/src · high confidence

Removals

Removal of core Parapet module and package definitions

The \Parapet.scala\ file, which contained the core actor model implementation including the Flow and Effect ADTs, their interpreters, and the Process trait, has been deleted. Additionally, the \package.scala\ file defining the \catsInstances\ object for implicit type aliases and instances has been removed. This change eliminates the previously defined core concurrency primitives and their associated Cats Effect integrations from the \io.parapet.core\ package.

src/main · high confidence

Test coverage

New backend-agnostic integration test suite for Parapet processes; Removed FlowSpec test suite.

Dependencies

Upgrade to Scala 3 and modernize dependency versions

The project has migrated from Scala 2.12 to Scala 3.3.4, requiring users to update their build environment. This change includes significant version bumps for core dependencies: Cats Effect is upgraded from 1.2.0 to 3.5.7, ScalaTest from 3.0.7 to 3.2.19, and Logback from an unspecified older version to 1.5.6. Additionally, new dependencies for networking and protocol handling have been added, including ZeroMQ (jeromq 0.6.0), Aeron (1.50.3), Avro4s (5.0.13), and ScalaPB. The build structure has also been reorganized into multiple submodules (core, testkit, cats-effect, pario, protocol, net).

(dependencies) · high confidence

Housekeeping

Initial project scaffolding and documentation

The repository has been initialized with the core project structure, including the Apache 2.0 license, a comprehensive README describing the Parapet Scala 3 toolkit for distributed systems, and release instructions. Build and CI configurations have been added, specifically a \.scalafmt.conf\ for Scala 3 formatting and a \.travis.yml\ to run tests and checks on OpenJDK 21 with Scala 3.8.3. A \.gitignore\ file has also been established to exclude standard build artifacts and IDE files.

(repo-wide) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 66.

Lenses

  • Code Health 93
  • Architecture 100
  • Maturity 75
  • Readiness 50
  • Security 75

Changes since last survey

  • 300 commits — 282 feature/other, 18 fixes

By area

  • core/src — 87 commits
  • (root) — 69 commits
  • (repo) — 35 commits
  • intg-tests/src — 27 commits
  • parapet-core/src — 18 commits
  • components/messaging — 11 commits
  • cluster-node/src — 7 commits
  • cluster/src — 6 commits
  • .github/workflows — 4 commits
  • examples/src — 4 commits
  • parapet-net/src — 4 commits
  • site/index.html — 4 commits
  • parapet-testkit/src — 3 commits
  • spark/src — 3 commits
  • components/README.md — 2 commits
  • components/algorithms — 2 commits
  • site/js — 2 commits
  • benchmark/src — 1 commit
  • client/src — 1 commit
  • cluster-cli/src — 1 commit

Notable commits

  • fix: Add Scope metadata; fix Channel stale-reply bug (#68)
  • fix: Fix parapp supervise (#79)
  • fix: Net fixes (#69)
  • fix: fix blocking / channel tests
  • fix: fix blocking / channel tests
  • fix: fix build
  • fix: fix channel event matching and make Failure public
  • fix: fix race in Channel send. disallow process ask if journal is enabled
  • fix: fix send in node process
  • fix: iss17: bug fix
  • fix: iss23: fix compilation errors
  • fix: iss31: fix props path
  • fix: iss31: fix tests
  • fix: iss31: logger and AsyncServer fix
  • fix: iss44: fix compilation errors
  • fix: iss44: fix compilation errors
  • fix: replace fs2 queue with monix queue, fix: iss6, iss7 and iss8
  • fix: site + tests fixes
  • change: 0.0.1-RC5 publish
  • change: Cluster node close (#55)
  • …and 280 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

parapet-io/parapet was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 20 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit ab74562ebb20a90401b2192a1f5f34ce3f290d27 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-b51f968c9b10.