Releases: flashbots/builder-playground
v0.3.2-alpha.1
builder-playground v0.3.2-alpha.1
Highlights
- Introducing Docker container based rbuilder component (works only on arm64 currently)
portsubcommand for querying service host ports
What's Changed
- Add port subcommand for querying service host ports by @dvush in #336
- Fix base-overlay entrypoint path: base-reth-node → base-client by @niran in #348
- CI: Restrict Claude Code triggers to users with write-access by @metachris in #349
- Integration tests for Rbuilder by @ferranbt in #335
Full Changelog: v0.3.1...v0.3.2-alpha.1
v0.3.1
builder-playground v0.3.1
Our biggest release yet — v0.3.1 brings faster startup times, new integrations across the Flashbots stack, improved observability, and an experimental recipe system that lets you customize your local environment without forking the repo. ⚡ 🤖
Highlights
- 🔌 New Integrations — Flashblocks RPC, mev-boost, contender, and bproxy support out of the box
- 🏗️ BuilderHub Support — Run the full BuilderNet stack locally (coming soon)
- ⚡ Faster Startup — Cached validator keys, preloaded BLS keystores, and improved restart handling
- 🔍 Better Observability — Custom health monitors for EL/CL, improved readiness checks, and structured logging with slog
- 🎮 Session Management — Friendly pet names for sessions, commands to browse services and tail logs
- 🤖 GitHub Claude Integration — AI-assisted development workflow
- 🧪 Custom Recipes (Experimental) — New YAML-based recipe overrides let you modify base recipes, change parameters, and add external components from a single definition file
🧪 Custom Recipes (Experimental)
This release introduces a new YAML-based recipe override system. Define your customizations in a single file and run any recipe with modified parameters or additional components:
builder-playground start my-custom-recipe.yamlCheck out the Custom Recipes documentation to get started.
Note: This feature is experimental. We're actively improving it based on feedback — please open an issue if you run into problems or have feature requests!
🔌 New Integrations
| Component | Description |
|---|---|
| Flashblocks RPC | Stream pre-confirmation blocks |
| mev-boost | PBS relay integration for local testing |
| contender | Load testing and benchmarking |
| bproxy | WebSocket proxy support |
⚡ Performance & Reliability
- Faster startup — Validator keys and BLS keystores are now cached and preloaded
- Improved restarts — Signal-aware context handling and cleaner Docker cleanup
- Better readiness — Custom health monitors for execution and beacon clients with timeout handling
- Graceful shutdown — Proper cleanup of Docker resources across all session types
🎮 Developer Experience
- Friendly session names — Sessions now get memorable pet names instead of UUIDs
- Service browsing —
builder-playground serviceslists running components - Log streaming —
builder-playground logs <service>tails logs for any component - Debug graphs —
--debuggenerates a dot graph of your recipe architecture - Detached mode — Run playground in the background with
--detached - Prefunded accounts — Configure additional prefunded accounts for testing
- Custom L2 contracts —
--use-predeploysflag for custom L2 genesis contracts
📚 Documentation
- Auto-generated documentation for all recipes
- Guide for running rbuilder with playground
- Improved README with telemetry info and contender instructions
- Better inline help — running
builder-playgroundwithout args now shows help
Breaking Changes
None — this release is backwards compatible with v0.2.x configurations.
Get Started
Install one of the binary distributions from the release or do:
# Clone the repo
git clone https://github.com/flashbots/builder-playground.git
# Build and install playground
cd builder-playground
go install .
# Run it
builder-playground helpThen
# See available recipes
builder-playground recipes
# Run a recipe e.g. L1
builder-playground start l1Make sure to check out the README for more details!
Full Changelog (90+ PRs)
What's Changed
- Create LICENSE by @ferranbt in #171
- Enable revert protection on op-rbuilder by @ferranbt in #178
- Add bootnode by @ferranbt in #147
- Add Flashblocks rpc by @ferranbt in #179
- Add flashblocks url to cli by @SozinM in #180
- add mev-boost support by @faheelsattar in #184
- run contender by @zeroXbrock in #185
- add docs related to flag by @faheelsattar in #190
- feat: enable ws on native reth by @diyahir in #187
- Add bproxy and websocket proxy by @SozinM in #193
- add --contender.arg flag by @zeroXbrock in #195
- variable contender targets by @zeroXbrock in #196
- add contender flag info to readme by @zeroXbrock in #197
- feat: update services, closes #203 by @gpevnev in #207
- Update the chain configuration to match the keys in use so safe head can advance by @niran in #201
- chore: update images / base overlay by @danyalprout in #208
- feat: add network readiness by @gpevnev in #210
- ignore .DS_Store by @zeroXbrock in #209
- Make el client listens on all interfaces for P2P (instead of
127.0.0.1) by @maoueh in #220 - fix(ci/cd): use
macos-latestfor osx artifacts by @julio4 in #226 - refactor: use maps.Copy for cleaner map handling by @jishudashu in #189
- Unify components and recipes by @ferranbt in #227
- Add detached mode by @ferranbt in #214
- Add BuilderHub logical unit component by @ferranbt in #233
- Use context cancel in complete ready by @ferranbt in #237
- CI: use faster warpbuild runners by @metachris in #240
- chore: codeowners by @metachris in #242
- Add a signal-aware main context by @canercidam in #248
- Pull images in playground itself instead of docker-compose to have visibility on pull actions by @ferranbt in #232
- Update readme with telemetry info by @ferranbt in #249
- 'playground version' command, and better Makefile by @metachris in #245
- Add unit test for BuilderHub component by @ferranbt in #238
- docs: improved readme introduction paragraph by @metachris in #241
- Add unit tests for the rest of recipes by @ferranbt in #239
- format code, 'make lint' works now, and is run in CI by @metachris in #250
- Use config directly on runtime by @ferranbt in #251
- Do not return docker-compose output on ctx cancelled by @ferranbt in #252
- feat: add
chain-monitorby @julio4 in #225 - Improve restarts by @canercidam in #247
- Clean the docker runtime by @ferranbt in #254
- Enable changing l1 recipe default block time by @maoueh in #222
- add contender instructions to readme by @zeroXbrock in #253
- docs/contender instructions 2 by @zeroXbrock in #255
- Use human friendly random pet names for session ID by @canercidam in #256
- Generate debug dot graph before the validation by @ferranbt in #212
- Added possibility to have a secondary el on the host by @maoueh in #219
- Cleaning all or specific playground sessions by @canercidam in #258
- Commands to list services and output logs by @canercidam in #257
- Add trace timer by @ferranbt in #261
- Adding possibility to add more prefunded accounts by @maoueh in #221
- Move logic to functions in artifact generation by @ferranbt in #262
- A...
v0.3.0
builder-playground v0.3.0
Our biggest release yet — v0.3.0 brings faster startup times, new integrations across the Flashbots stack, improved observability, and an experimental recipe system that lets you customize your local environment without forking the repo. ⚡ 🤖
Highlights
- 🔌 New Integrations — Flashblocks RPC, mev-boost, contender, and bproxy support out of the box
- 🏗️ BuilderHub Support — Run the full BuilderNet stack locally (coming soon)
- ⚡ Faster Startup — Cached validator keys, preloaded BLS keystores, and improved restart handling
- 🔍 Better Observability — Custom health monitors for EL/CL, improved readiness checks, and structured logging with slog
- 🎮 Session Management — Friendly pet names for sessions, commands to browse services and tail logs
- 🤖 GitHub Claude Integration — AI-assisted development workflow
- 🧪 Custom Recipes (Experimental) — New YAML-based recipe overrides let you modify base recipes, change parameters, and add external components from a single definition file
🧪 Custom Recipes (Experimental)
This release introduces a new YAML-based recipe override system. Define your customizations in a single file and run any recipe with modified parameters or additional components:
builder-playground start my-custom-recipe.yamlCheck out the Custom Recipes documentation to get started.
Note: This feature is experimental. We're actively improving it based on feedback — please open an issue if you run into problems or have feature requests!
🔌 New Integrations
| Component | Description |
|---|---|
| Flashblocks RPC | Stream pre-confirmation blocks |
| mev-boost | PBS relay integration for local testing |
| contender | Load testing and benchmarking |
| bproxy | WebSocket proxy support |
⚡ Performance & Reliability
- Faster startup — Validator keys and BLS keystores are now cached and preloaded
- Improved restarts — Signal-aware context handling and cleaner Docker cleanup
- Better readiness — Custom health monitors for execution and beacon clients with timeout handling
- Graceful shutdown — Proper cleanup of Docker resources across all session types
🎮 Developer Experience
- Friendly session names — Sessions now get memorable pet names instead of UUIDs
- Service browsing —
builder-playground serviceslists running components - Log streaming —
builder-playground logs <service>tails logs for any component - Debug graphs —
--debuggenerates a dot graph of your recipe architecture - Detached mode — Run playground in the background with
--detached - Prefunded accounts — Configure additional prefunded accounts for testing
- Custom L2 contracts —
--use-predeploysflag for custom L2 genesis contracts
📚 Documentation
- Auto-generated documentation for all recipes
- Guide for running rbuilder with playground
- Improved README with telemetry info and contender instructions
- Better inline help — running
builder-playgroundwithout args now shows help
Breaking Changes
None — this release is backwards compatible with v0.2.x configurations.
Get Started
Install one of the binary distributions from the release or do:
# Clone the repo
git clone https://github.com/flashbots/builder-playground.git
# Build and install playground
cd builder-playground
go install .
# Run it
builder-playground help
Then
# See available recipes
builder-playground recipes
# Run a recipe e.g. L1
builder-playground start l1Make sure to check out the README for more details!
Full Changelog (90+ PRs)
What's Changed
- Create LICENSE by @ferranbt in #171
- Enable revert protection on op-rbuilder by @ferranbt in #178
- Add bootnode by @ferranbt in #147
- Add Flashblocks rpc by @ferranbt in #179
- Add flashblocks url to cli by @SozinM in #180
- add mev-boost support by @faheelsattar in #184
- run contender by @zeroXbrock in #185
- add docs related to flag by @faheelsattar in #190
- feat: enable ws on native reth by @diyahir in #187
- Add bproxy and websocket proxy by @SozinM in #193
- add --contender.arg flag by @zeroXbrock in #195
- variable contender targets by @zeroXbrock in #196
- add contender flag info to readme by @zeroXbrock in #197
- feat: update services, closes #203 by @gpevnev in #207
- Update the chain configuration to match the keys in use so safe head can advance by @niran in #201
- chore: update images / base overlay by @danyalprout in #208
- feat: add network readiness by @gpevnev in #210
- ignore .DS_Store by @zeroXbrock in #209
- Make el client listens on all interfaces for P2P (instead of
127.0.0.1) by @maoueh in #220 - fix(ci/cd): use
macos-latestfor osx artifacts by @julio4 in #226 - refactor: use maps.Copy for cleaner map handling by @jishudashu in #189
- Unify components and recipes by @ferranbt in #227
- Add detached mode by @ferranbt in #214
- Add BuilderHub logical unit component by @ferranbt in #233
- Use context cancel in complete ready by @ferranbt in #237
- CI: use faster warpbuild runners by @metachris in #240
- chore: codeowners by @metachris in #242
- Add a signal-aware main context by @canercidam in #248
- Pull images in playground itself instead of docker-compose to have visibility on pull actions by @ferranbt in #232
- Update readme with telemetry info by @ferranbt in #249
- 'playground version' command, and better Makefile by @metachris in #245
- Add unit test for BuilderHub component by @ferranbt in #238
- docs: improved readme introduction paragraph by @metachris in #241
- Add unit tests for the rest of recipes by @ferranbt in #239
- format code, 'make lint' works now, and is run in CI by @metachris in #250
- Use config directly on runtime by @ferranbt in #251
- Do not return docker-compose output on ctx cancelled by @ferranbt in #252
- feat: add
chain-monitorby @julio4 in #225 - Improve restarts by @canercidam in #247
- Clean the docker runtime by @ferranbt in #254
- Enable changing l1 recipe default block time by @maoueh in #222
- add contender instructions to readme by @zeroXbrock in #253
- docs/contender instructions 2 by @zeroXbrock in #255
- Use human friendly random pet names for session ID by @canercidam in #256
- Generate debug dot graph before the validation by @ferranbt in #212
- Added possibility to have a secondary el on the host by @maoueh in #219
- Cleaning all or specific playground sessions by @canercidam in #258
- Commands to list services and output logs by @canercidam in #257
- Add trace timer by @ferranbt in #261
- Adding possibility to add more prefunded accounts by @maoueh in #221
- Move logic to functions in artifact generation by @ferranbt in #262
- Add i...
v0.1.3-reth-1.4.8
Full Changelog: v0.1.3...v0.1.3-reth-1.4.8
v0.2.1
v0.2.0
Changelog
- df0f215 Update Prysm dependency to other org (#161)
- 3f3c34d Add read function for the manifest (#153)
- a8bbb28 Make playground module non internal (#150)
- 456e71a Generate deterministic enode addresses (#146)
- 4eb2e87 Use custom protocol and user for Connections (#144)
- 0db74a5 Use custom protocol and user for Connections (#141)
- 463e8c8 Add option to disable logs (#140)
- a718398 Clean go.mod (#137)
- 87c9109 Expose ready check to manifest (#130)
- 9cc6639 A few fixes for Prometheus service (#129)
- 12e5597 Add a new flag to add custom labels (#128)
- 87eaeec Rename git module (#126)
- 17a0bdc Deprecate the Dir template function (#124)
- 6993055 Add manifest JSON (#123)
- 1b36788 Introduce the concept of instance (#122)
- e910983 Use concrete artifacts on services (#121)
- 9973d99 Add batcher max channel duration (#118)
- a9447a1 Parametrise Op block time (#116)
- 10a0f50 Feat/two chains support (#115)
- 242d8ec Fix/reserve port (#114)
- 49e3782 Add playground session id (#113)
- 26259ff Track metrics ports with prometheus (#111)
- 9b64868 chore: fix mev-boost container with multi beacon nodes (#112)
- 4dc2150 Fix (#110)
- a397ee4 Build playground utils docker container only if the relevant files have changed (#98)
- 0b35867 fix: set an authrpc address for the opstack (#109)
- cc825c1 Update opstack docs (#102)
- 6ed42e9 Bind UDP ports (#107)
- 0b28efe Docker-compose host port on localhost (#106)
- 0b1dc97 chore: fund accounts in L2 genesis (#103)
- d314a26 Merge pull request #100 from flashbots/mm-fix-dependencies
- 3e0afbc chore: fix dependencies versions of go-boost-utils
v0.1.3
Changelog
- 56db5d5 Enable cancellations
- 6652477 fix(pectra): Support ELECTRA_FORK_VERSION in mev-boost-relay (#34)
- 2462499 Delay 10 seconds start + update watch command (#33)
- 74d333a Watch payloads by default (#31)
- 73d41fd Add a CL proxy to allow multiple EL nodes (#29)
- 62ad77a feat(lighthouse): Support lighthouse 5.3.0+ (#22)
- 55b0d8d feat(WithReplacementArgs): fix --use-reth-for-validation by replacing existing args (#24)