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
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions