Skip to content

Add +rpc cabal flag to gate gRPC dependencies #1167

@carbolymer

Description

@carbolymer

Summary

The cardano-rpc package introduces new dependencies (grapesy, grpc-spec, proto-lens) that are currently linked into all cardano-node builds, including block producers that will never enable the RPC feature.

A cabal flag (+rpc, off by default) should gate these dependencies so that builds without the flag exclude them entirely.

Motivation

  • Block producer builds should not carry unnecessary dependencies that increase the attack surface and binary size.
  • Operators who want the RPC interface opt in explicitly at build time.
  • This was requested during ADR-018 review.

Proposed approach

  • Add a flag rpc (default: False, manual: True) to cardano-node.cabal.
  • Make build-depends: cardano-rpc conditional on flag(rpc).
  • Guard RPC server startup code in cardano-node behind a CPP conditional (e.g. #ifdef RPC).
  • Document the flag in the README and in ADR-018.

Acceptance criteria

  • cabal build cardano-node (without the flag) does not pull in grapesy, grpc-spec, proto-lens, or cardano-rpc.
  • cabal build cardano-node -f +rpc builds with full RPC support.
  • CI runs builds with and without the flag.

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions