Skip to content

Commit f1c29ce

Browse files
committed
docs: document external BN/EL (el-none/cl-none) pattern in CLAUDE.md
1 parent 9d30994 commit f1c29ce

1 file changed

Lines changed: 25 additions & 0 deletions

File tree

CLAUDE.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,31 @@ docker compose up -d
8888
### Switching a client
8989
Same as CDVN: `docker compose down`, edit the `EL`/`CL`/`VC`/`MEV` line in `.env`, `docker compose up -d`. For commit-boost, also update `commit-boost/config.toml`.
9090

91+
### Use an external beacon node + execution client (skip the local EL/CL stack)
92+
93+
When the operator already runs a BN/EL elsewhere and doesn't want Docker Compose to start its own, set both clients to the `-none` sentinel and point Charon + validator-ejector at the external endpoints:
94+
95+
```bash
96+
EL=el-none
97+
CL=cl-none
98+
99+
# Charon → external BN / EL
100+
CHARON_BEACON_NODE_ENDPOINTS=https://your-bn.example:5052
101+
CHARON_EXECUTION_CLIENT_RPC_ENDPOINT=https://your-el.example:8545
102+
103+
# Lido-specific: validator-ejector has its own endpoint vars (see gotcha below)
104+
VE_BEACON_NODE_URL=https://your-bn.example:5052
105+
VE_EXECUTION_NODE_URL=https://your-el.example:8545
106+
```
107+
108+
`el-none` / `cl-none` don't match any Compose profile, so nothing local gets started for those layers. The VC still runs locally and talks to Charon as usual — no VC-side changes needed.
109+
110+
**Lido gotcha (validator-ejector):** `VE_BEACON_NODE_URL` and `VE_EXECUTION_NODE_URL` default to `http://${CL}:5052` and `http://${EL}:8545` in the env samples. If `CL`/`EL` are set to `cl-none`/`el-none` and these two vars aren't overridden, they resolve to `http://cl-none:5052` / `http://el-none:8545` — hostnames that don't exist — and validator-ejector fails to start. CDVN doesn't have this trap; it's specific to this repo. (The defaults could be reworked so this isn't needed — tracked as a future fix, leaving as-is for now.)
111+
112+
**Auth to hosted providers:** Charon supports optional HTTP headers on BN requests via `CHARON_BEACON_NODE_HEADERS` (see the env sample). Use it to pass API keys when the external BN requires auth. The env sample warns the headers are sent to primary and fallback endpoints alike, so only wire in BNs you trust.
113+
114+
**Mixed cases** (local CL + external EL, or vice versa) aren't covered explicitly — same pattern, but only set the one `-none` sentinel and only override the endpoint var(s) for the external side. Don't forget the matching `VE_*` override.
115+
91116
## Monitoring & alerts
92117

93118
Same stack as CDVN: Prometheus + Grafana + Loki + Alloy. Remote-write and Loki push target Obol's hosted monitoring; Discord alerts via `ALERT_DISCORD_IDS`. See the `obol-monitoring` skill for deep diagnostics.

0 commit comments

Comments
 (0)