Important: This is yet an experimental feature and sometimes might not always work as intended. Please submit issues with your use cases if you find any problems.
Custom recipes let you build on top of existing base recipes (like l1, opstack, or buildernet) by adding, removing, or modifying components and services. Instead of duplicating entire configurations, you write a small YAML file that describes only the changes you want to make.
A custom recipe is a YAML file with two main parts:
base: The name of the base recipe to extend (e.g.,l1)recipe: A map of components and services to add, modify, or remove
The playground merges your customizations with the base recipe at runtime. You can:
- Change container images and versions
- Add new services or components
- Remove existing services or components
- Override arguments, environment variables, and configuration files
Let's create a custom recipe that uses a specific version of reth. Create a file called playground.yaml:
base: l1
recipe:
reth:
services:
el:
tag: v1.9.0This tells the playground to start with the l1 recipe but override the el service in the reth component to use tag v1.9.0.
You can also change the image entirely:
base: l1
recipe:
reth:
services:
el:
image: ghcr.io/my-org/my-reth-fork-image
tag: v1.9.0Once you have a playground.yaml file, run it with:
playground start playground.yamlThe playground will load the base recipe, apply your modifications, and start all the services.
To see all available base recipes and pre-built custom recipes:
playground recipesThis shows:
- Base Recipes: Core recipes like
l1,opstack,buildernet - Custom Recipes: Pre-built configurations like
rbuilder/binandrbuilder/custom
Each recipe displays a description and the components it includes.
You can run any custom recipe directly by name:
playground start rbuilder/binThis is equivalent to generating the custom recipe files and running them when you don't need to modify the recipe.
If you want to inspect or modify a pre-built custom recipe, generate it to your current directory:
playground generate rbuilder/binThis creates:
playground.yaml- The recipe configuration- Any additional files the recipe needs (e.g.,
rbuilder.toml)
You can then edit these files and run:
playground start playground.yamlSometimes you want to see the complete configuration of a base recipe, modify it extensively, and run your own version. You can generate the full YAML representation of any base recipe:
playground generate l1This creates a playground.yaml file with the complete l1 recipe, showing all components, services, images, arguments, and configuration.
Then edit playground.yaml to make any changes you need, and run it:
playground start playground.yamlThis approach gives you full control over every aspect of the recipe while still benefiting from the playground's orchestration.