Skip to content
CAI
Software that uses CAICheck a score

tsloughter/grpcbox_plugin

41.6

Weak · 17 September 2026

244

lines of production code

Erlang

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is a Rebar3 plugin designed to generate Erlang code from Protocol Buffer definitions. It supports both unary and streaming gRPC RPCs by producing distinct client and server behavior modules. The tool allows for per-application configuration, enabling users to selectively generate client or server code within umbrella projects.

Behavioural changes

Rebar3 plugin now supports per-app proto generation with client/server selection

The rebar3 plugin has been refactored to generate gRPC behaviors on a per-application basis, allowing it to correctly handle projects with multiple apps or umbrella structures. Users can now specify multiple proto directories and choose to generate only client, only server, or all behaviors via the new 'type' option. The plugin also improves build efficiency by checking file timestamps to avoid unnecessary recompilation and provides more detailed error reporting for proto compilation failures.

src · high confidence

Refactored gRPC code generation to support client modules and streaming RPCs

The code generation templates have been restructured to produce both server behavior modules (renamed from \\_behaviour\ to \\_bhvr\) and new client modules. This change introduces support for client-side gRPC calls, including unary and streaming RPCs, with updated function signatures that allow optional context arguments and return \{error, any()}\ alongside standard success tuples. The generated server behavior modules now use snake\_case naming conventions and have removed build date stamps to ensure deterministic builds.

priv · high confidence

Dependencies

Upgrade gpb dependency and update build configuration

The plugin now depends on gpb version 4.21.1 (upgraded from 4.0.2) and introduces new dependencies on erlware\_commons (\~\> 1.9.1) and providers (\~\> 1.9). This upgrade aligns the plugin with newer gpb capabilities, including the use of type\_specs and strings\_as\_binaries in generated code, and updates the default proto directory from priv/protos to proto in the configuration examples.

(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 42.

Lenses

  • Code Health 100
  • Architecture 69
  • Maturity 43
  • Readiness 17
  • Security 100

Changes since last survey

  • 50 commits — 41 feature/other, 9 fixes

By area

  • (root) — 16 commits
  • src/grpcbox_plugin_prv.erl — 10 commits
  • (repo) — 6 commits
  • src/grpcbox_plugin.app.src — 6 commits
  • priv/grpcbox_service_bhvr.erl — 4 commits
  • priv/grpcbox_service_client.erl — 4 commits
  • priv/grpcbox.template — 2 commits
  • priv/grpcbox_service.erl — 2 commits

Notable commits

  • fix: Fix template doc tags
  • fix: Fix template types
  • fix: Merge pull request #20 from tomas-abrahamsson/template-doc-type-fixes
  • fix: Quick fix for files not being generated when they should
  • fix: fix description
  • fix: fix include of grpcbox.hrl in client generation
  • fix: fix license for hex restrictions
  • fix: fix template spec
  • fix: fix the *_pb.beam output directory
  • change: Auto-create the output directories.
  • change: Do not recompile everything on each rebar3 invocation.
  • change: Merge pull request #10 from HJianBo/master
  • change: Merge pull request #16 from fenollp/patch-1
  • change: Merge pull request #18 from fenollp/issue12
  • change: Merge pull request #6 from f355/master
  • change: Merge pull request #8 from tsloughter/mergeit
  • change: add error_response type return
  • change: allow generating only the server behaviour.
  • change: better support apps under an umbrella
  • change: change compile attribute to just atom arg
  • …and 30 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

tsloughter/grpcbox_plugin 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 17 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 dfb940e2a5759a60b479896a194a8b5b71a45b9c — the exact code this score is about.
  • Scored under rubric-2026.09.13 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-d1ef6c0bd534.