Skip to content

Commit fc3bba8

Browse files
authored
feat(dora): auto-configure buildoor inventory when mev_type: buildoor (#1413)
<img width="1043" height="346" alt="Screenshot 2026-06-05 at 16 29 05" src="https://github.com/user-attachments/assets/c44fba32-6841-416d-aa62-af7aebbea5e3" /> ## Summary When `mev_type: buildoor` is set, dora's generated config now includes a `buildoorUrls` list pointing at the launched buildoor service's API port (8080), so dora can resolve builder names + external links via `/api/buildoor/overview` automatically — no manual config tweaks needed. **Blocked on** ethpandaops/dora#728, which introduces the `buildoorUrls` frontend config knob this template targets. Merge dora's PR first (or wait for a release), otherwise dora will ignore the unknown key. ## Changes - **`src/mev/buildoor/buildoor_launcher.star`** — `launch_buildoor` now returns `{mev_endpoint, api_url}`. `mev_endpoint` (port 9000, the mev-boost-style URL) keeps feeding `mev_endpoints` as before; `api_url` (port 8080, the general API) is the new endpoint dora needs. - **`main.star`** — accumulates `buildoor_api_urls` alongside `mev_endpoints` and threads them into `launch_dora`. - **`src/dora/dora_launcher.star`** — accepts `buildoor_api_urls` (default `[]` for backward compat) and exposes them as `BuildoorAPIURLs` in the template data. - **`static_files/dora-config/config.yaml.tmpl`** — renders a `buildoorUrls: [...]` block under `frontend:` when `BuildoorAPIURLs` is non-empty. ## Generated config diff Before (mev_type: buildoor): ```yaml frontend: enabled: true ... rainbowkitProjectId: "..." ``` After: ```yaml frontend: enabled: true ... buildoorUrls: - "http://buildoor:8080" buildoorRefreshInterval: 5m rainbowkitProjectId: "..." ``` ## Test plan - [ ] `kurtosis lint --format` clean (verified locally — 108 files unchanged) - [ ] Stand up a devnet with `mev_type: buildoor` + `additional_services: [dora]`, inspect `dora-config.yaml`, confirm `buildoorUrls` is populated. - [ ] Stand up without `mev_type: buildoor`, confirm `buildoorUrls` block is absent (template gated on `.BuildoorAPIURLs`). - [ ] With both PRs merged: dora UI shows builder names + external-link icons on the slot bids page.
1 parent debdfe4 commit fc3bba8

4 files changed

Lines changed: 33 additions & 6 deletions

File tree

main.star

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -635,6 +635,7 @@ def run(plan, args={}):
635635

636636
mev_endpoints = []
637637
mev_endpoint_names = []
638+
buildoor_api_urls = []
638639
# passed external relays get priority
639640
# perhaps add mev_type External or remove this
640641
if (
@@ -688,7 +689,7 @@ def run(plan, args={}):
688689
all_el_contexts[0].dns_name,
689690
all_el_contexts[0].engine_rpc_port_num,
690691
)
691-
endpoint = buildoor.launch_buildoor(
692+
buildoor_endpoints = buildoor.launch_buildoor(
692693
plan,
693694
beacon_uri,
694695
el_rpc_uri,
@@ -701,8 +702,9 @@ def run(plan, args={}):
701702
builder_bls_secret_key,
702703
ranges,
703704
)
704-
mev_endpoints.append(endpoint)
705+
mev_endpoints.append(buildoor_endpoints["mev_endpoint"])
705706
mev_endpoint_names.append(constants.BUILDOOR_MEV_TYPE)
707+
buildoor_api_urls.append(buildoor_endpoints["api_url"])
706708
elif args_with_right_defaults.mev_type and (
707709
args_with_right_defaults.mev_type == constants.FLASHBOTS_MEV_TYPE
708710
or args_with_right_defaults.mev_type == constants.MEV_RS_MEV_TYPE
@@ -1007,6 +1009,7 @@ def run(plan, args={}):
10071009
index,
10081010
args_with_right_defaults.docker_cache_params,
10091011
el_cl_data_files_artifact_uuid,
1012+
buildoor_api_urls,
10101013
)
10111014
plan.print("Successfully launched dora")
10121015
elif additional_service == "checkpointz":

src/dora/dora_launcher.star

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ def launch_dora(
4242
additional_service_index,
4343
docker_cache_params,
4444
el_cl_data_files_artifact_uuid,
45+
buildoor_api_urls=[],
4546
):
4647
tolerations = shared_utils.get_tolerations(global_tolerations=global_tolerations)
4748

@@ -100,6 +101,7 @@ def launch_dora(
100101
all_cl_client_info,
101102
all_el_client_info,
102103
mev_endpoint_info,
104+
buildoor_api_urls,
103105
)
104106

105107
template_and_data = shared_utils.new_template_and_data(
@@ -173,7 +175,12 @@ def get_config(
173175

174176

175177
def new_config_template_data(
176-
network, listen_port_num, cl_client_info, el_client_info, mev_endpoint_info
178+
network,
179+
listen_port_num,
180+
cl_client_info,
181+
el_client_info,
182+
mev_endpoint_info,
183+
buildoor_api_urls,
177184
):
178185
public_rpc = ""
179186
if len(el_client_info) > 0:
@@ -186,6 +193,7 @@ def new_config_template_data(
186193
"CLClientInfo": cl_client_info,
187194
"ELClientInfo": el_client_info,
188195
"MEVRelayInfo": mev_endpoint_info,
196+
"BuildoorAPIURLs": buildoor_api_urls,
189197
"PublicNetwork": True if network in constants.PUBLIC_NETWORKS else False,
190198
"IsDevnet": True if "devnet" in network else False,
191199
}

src/mev/buildoor/buildoor_launcher.star

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,14 @@ def launch_buildoor(
9999
tolerations=tolerations,
100100
),
101101
)
102-
return "http://{0}@{1}:{2}".format(
103-
constants.DEFAULT_MEV_PUBKEY, BUILDOOR_SERVICE_NAME, BUILDOOR_BUILDER_API_PORT
104-
)
102+
return {
103+
"mev_endpoint": "http://{0}@{1}:{2}".format(
104+
constants.DEFAULT_MEV_PUBKEY,
105+
BUILDOOR_SERVICE_NAME,
106+
BUILDOOR_BUILDER_API_PORT,
107+
),
108+
"api_url": "http://{0}:{1}".format(
109+
BUILDOOR_SERVICE_NAME,
110+
BUILDOOR_API_PORT,
111+
),
112+
}

static_files/dora-config/config.yaml.tmpl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,14 @@ frontend:
3232
validatorNamesYaml: "/validator-ranges/validator-ranges.yaml"
3333
{{- end }}
3434

35+
{{- if .BuildoorAPIURLs }}
36+
buildoorUrls:
37+
{{- range $url := .BuildoorAPIURLs }}
38+
- "{{ $url }}"
39+
{{- end }}
40+
buildoorRefreshInterval: 5m
41+
{{- end }}
42+
3543
rainbowkitProjectId: "15fe4ab4d5c0bcb6f0dc7c398301ff0e"
3644
showSubmitDeposit: true
3745
showSubmitElRequests: true

0 commit comments

Comments
 (0)