The v0.6.1 release is a major milestone in Built On Envoy, bringing many bugfixes and improvements, an enhanced UX with a brand new web UI to manage extensions, and a couple of shiny new extensions:
🔥 New Extensions
-
DNS Gateway: A new Rust dynamic module that intercepts DNS queries and returns synthetic responses for domains matching configured egress policies. It allocates virtual IPs for matching domains, and a companion network filter resolves destination virtual IPs back to their domain names via Envoy filter state (
io.builtonenvoy.dns_gateway.domain). -
Cluster Router: An extension that routes HTTP requests across a peered Envoy mesh using a path vector protocol inspired by BGP. Each Envoy advertises its locally reachable clusters to its peers and learns transitively reachable clusters back. Connection targeting a remote cluster will be routed to the next hop to achieve the shortest path.
Many thanks to @AntonKanug and @ovadiagal from @palantir for these great contributions!
🚀 New Features
- Web UI:
boe uilaunches a local web interface for configuring and running BOE extensions. The UI is dynamically generated from each extension's JSON config schema, validates configurations before running, and supports single or multiple extensions simultaneously — including local extensions. The easiest way to get started with Envoy extensions!
-
boe logscommand: A new command to tail and follow the BOE logs to make it easier to follow and troubleshoot the Built On Envoy internals. -
Multiple filter types per dynamic module: Extension manifests now declare
filterTypeas a list, allowing a single compiled dynamic module to contain multiple filter types (e.g. HTTP + listener).boe runandboe gen-configgain a new--filter-typeflag to select which type to instantiate. The change is backwards-compatible with existing single-type manifests. -
Automatic UDP listener configuration:
boe gen-confignow automatically creates a UDP listener when UDP filters are present in the configuration, eliminating the need for manual listener setup. -
Rust listener filter scaffolding:
boe createnow generates scaffolding for listener filters in Rust, expanding beyond the existing HTTP filter template. -
Config schema generation:
boe creategenerates a JSON config schema for new extensions, enabling the web UI and future tooling to validate configurations. -
Custom Docker image version:
boe run --dockeraccepts a new flag to explicitly override the Docker image version used, rather than always deriving it from the CLI version. -
Dev Envoy version support:
boe runnatively supports dev/nightly Envoy builds viafunc-e v1.6.0, making it easier to test against pre-release Envoy versions. -
Composer Lite as independent artifact:
composer-liteis now fully decoupled from the maincomposercomponent, preventing shared local cache conflicts between the two. -
Go plugin 📖 as a standalone extension: The Go plugin loader composer module has been promoted as a standalone extension to make it easy to run it with
boe runor theboe uito test and load Go Plugin based extensions. -
Bundle mechanism generalized: The artifact bundling logic previously tied to the composer is now a general-purpose mechanism available across all extension types.
-
--envoy-pathin Docker mode: The--envoy-pathflag (introduced in v0.5.0 for local Envoy binaries) now also works when running extensions in Docker mode.
🐞 Bug Fixes
- Fixed broken paths in the extension Makefile generated by
boe create. - Fixed
golang-loaderDocker image extraction logic. - Fixed local build failure when the
extprocextension package is not found. - Fixed
composer-litebinary panicking when built with-trimpath. - Fixed manifest packaging in composer-based extensions.
- Fixed misleading error message when
--platformis not explicitly set during download.
🚨 Security
- Go updated to 1.26.4 to address several CVEs in the Go standard library.
📖 Documentation
- Added docs for all the new supported filter types.
- Generated reference docs for extension config from their JSON schemas.
- Added a filter-type filter to the extensions catalogue page on the website.
🙌 Acknowledgements
Special thanks to @AntonKanug and @ovadiagal for the awesome new extensions and the work on Envoy upstream and the Rust SDK, and to @codefromthecrypt for the enhancements to developer UX and improvements to Envoy process launch.
📊 Full Changelog
Take a look at the full changelog here: v0.5.0...v0.6.1