IntersectMBO / IntersectMBO/cardano-api

Add +rpc cabal flag to gate gRPC dependencies

Open
#1,167 1 comment 0 reactions 1 assignee Claimed by @carbolymer View on GitHub
Dominant language
Haskell
Stars
40
Forks
30
Avg merge
2d 5h
Merged PRs (30d)
30

Description

## 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](https://github.com/input-output-hk/cardano-node-wiki/pull/96#discussion_r3009619312).

## 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](https://claude.com/claude-code)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.