Skip to content

Releases: tetratelabs/func-e


06 Jan 03:00
Choose a tag to compare

func-e 1.1.4 is a maintenance release built with Go 1.19.

Note: Recent versions of Envoy no longer run on the default build of CentOS 8, and attempts will result in the following error /lib64/ version 'GLIBC_2.29' not found. This is not an issue func-e can resolve, so please contact Envoy with platform support concerns.


08 May 05:21
Choose a tag to compare

func-e 1.1.3 is a maintenance release that was built with Go 1.18


22 Jan 01:55
Choose a tag to compare

func-e 1.1.2 contains only version updates. This release is only to inform people that Envoy 1.21 is out, and that is the first version that allows M1 Macs to run without emulation.

Many thanks to @XuehaiPan who stuck in there several weeks until Envoy 1.21 could build on Homebrew.

FYI: You don't need to upgrade func-e to use Envoy 1.21, but since you are looking anyway, why not!


01 Dec 23:39
Choose a tag to compare

func-e 1.1.1 includes no user facing changes, but you should still read this!

Envoy 1.20.1 works on macOS 12

If you aren't running OS/x aka macOS aka Darwin, you can skip this part.

Shortly after macOS 12 (Monterey) released in late October, users complained Envoy no longer works, resulting in a fix shortly after. However, this fix wasn't released until over a month later (yesterday) in 1.20.1. Anyone who upgraded to macOS 12 was out of commission for over a month, regardless of if they used homebrew or func-e to run envoy. While that period was regrettable, it is over now. Envoy 1.20.1 is available and that works on macOS 12. Note that 1.20.1 is the only version that works, as the patch wasn't made to other versions (such as 1.19.x).

Note: you do not have to upgrade func-e to use Envoy 1.20.1. That said, while you are here, you might as well upgrade!

Minor changes

The actual func-e release is only patches and minor maintenance. Thanks to @codefromthecrypt and @tranngoclam for the help on this.


02 Nov 09:21
Choose a tag to compare

func-e 1.1.0 adds man pages and has a more resilient first time experience on OS/x.

Man pages

Users installing func-e using Debian or RPM packages now can enter man func-e to see similar output to func-e help. Thanks very much to @ginglis13 who added man page generation and integration tests!

Less first time failures on OS/x

Some unlucky users could fail a first-time install on OS/x, if they tried func-e right after an Envoy release. A version not found error would raise, and they'd have to use the last manually.

The culprit was the Envoy release process. While Linux and Windows are guaranteed by the project team, MacOS is not. Until official tarballs exist, MacOS Envoy binaries come from homebrew. Release updates are subject to build drift and community support, and have in practice taken over a week to resolve. First timers wouldn't expect MacOS to be unavailable, so the experience of having a failed download lets them down.

To bullet-proof first time installs, we no longer assume Envoy releases will be coherent. Instead of reading latestVersion from envoy-versions.json, we scan all available versions and pick the semantically highest release for the current platform. Note that this only effects users who don't choose an Envoy version via func-e use or otherwise.

Thanks very much to @codefromthecrypt from leading this as well @carlocab and @mathetake for feedback.

Minor changes

  • edge case fixes when a minor version is chosen (ex. func-e use 1.19)
  • end-to-end tests now execute on arm64 on both Ubuntu and CentOS


11 Oct 01:53
Choose a tag to compare

func-e 1.0.0 adds latest patch syntax and adds Linux packages.

We chose to call this 1.0 as things work pretty well. func-e has been downloaded over 50k times since it was relaunched 3 months ago. While we know things aren't perfect and new features will arise, 1.0 means stability. We won't delete commands or make them incompatible intentionally. If you notice otherwise, please raise an issue!

Check out our issues labeled hacktoberfest. You can join other newcomers, such as @clavinjune, who helped the project though hacking.

Also, if you are interested in learning more about Envoy with func-e, check out Tetrate's new Envoy Fundamentals class.

Finally, if you are enjoying func-e please star the repo as contributors like seeing them. Now, on to the changes!

Latest patch syntax

Before, you could leave out an Envoy version or choose a one, like func-e use 1.19.1. You can now choose a minor version, like func-e use 1.19. If there's ever a new patch, it will be downloaded automatically. This is helpful for matrix testing where you want to ensure your configuration is likely work, yet run with the latest fixes.

This was a lot of work! Thanks @clavinjune, @codefromthecrypt, @dio and @mathetake for developing various aspects of this.

Linux packages

Before, you could only install func-e on Linux using curl or homebrew. We added RPM and Debian packages which you can download below and use on CentOS or Ubuntu. Thanks to @codefromthecrypt for leading this, @dio for helping with the integration tests and @mathetake for review.


Notably, our end-to-end tests run on more realistic images, and edge cases like kill -9 are now tested. Our build is more coherent, moving a lot of logic from workflows and 3rd party tools into native Makefile. This makes it easier to test distributions without publishing them, and also makes GOROOT selection more portable. Re-runs are faster as most targets use file prerequisites to eliminate redundant runs. Even the skeleton release notes are now generated. Thanks a lot to @codefromthecrypt, @dio and @mathetake for the hard work here. Better infrastructure means smoother and more reliable improvements.

Minor changes

  • Release dates in func-e versions are now timezone safe. Thanks @dio
  • Fixes file permissions extracting from tarballs. Thanks @dio


13 Aug 06:32
Choose a tag to compare

func-e v0.7.0 improves the Windows installation experience and adds a new which
command used in scripting. We also now automatically test CentOS 8 on each change.

Thanks very much to @codefromthecrypt and @mathetake for the work researching, reviewing and implementing these improvements!

Signed Windows installer

func-e is available as an MSI download. Before, this wasn't
signed, so there would be scary messages when you click it.

Thanks a lot to Jeff Moon from Tetrate, we now have a Digicert code signing
. We
setup our release job to automatically sign each release, and remove those
scary banners!

winget packages

winget is the default package manager for Windows 11 and is scheduled for a Windows 10 service release

Each release automatically raises a pull request to update winget!

Installing this way is as easy as this:

C:\> winget install func-e
C:\> func-e run -c envoy.yaml
:: If you don't have a configuration file, you can start the admin port like this
C:\> func-e run --config-yaml "admin: {address: {socket_address: {address: '', port_value: 9901}}}"

func-e which

This adds a which command that prints the path to the Envoy binary
that would be run. This allows func-e to install, but not run envoy for
scenarios such as building other images.

Ex. the following are equivalent:

$ $(func-e which) --version
$ func-e run --version


26 Jul 01:03
Choose a tag to compare

func-e v0.6.0 introduces Windows support! This means you can run Envoy on Windows without using Docker.

func-e is available as an MSI download or via winget.

winget is the default package manager for Windows 11 and is scheduled for a Windows 10 service release

Installing this way is as easy as this:

C:\> winget install func-e
C:\> func-e run -c envoy.yaml
:: If you don't have a configuration file, you can start the admin port like this
C:\> func-e run --config-yaml "admin: {address: {socket_address: {address: '', port_value: 9901}}}"


The Envoy project supported Windows via Docker since version 1.18.3. However, this is a little harder than it sounds for first time users.

For example, Docker in Windows has compatibility rules that imply knowing details about how the images were built. Those using Windows 10 Home probably won't get it to work at all. The first step was repackaging envoy binaries into the Tetrate Labs archive so that you don't need Docker to run them.

The rest of the work was in the func-e codebase itself. While golang has a decent amount of portability, there are many details left out before you can control the process and erase differences like newline consistency (\r\n). It was more work than the go code, as we prioritize maintenance experience as much as user experience.

For example, we needed to setup CI and reorganize doc generation so that maintainers don't need to run windows in order to fix glitches or perform releases. All of the above, making things work, and not add risk into our build.. ended up as 2 months of small changes.

The primary thanks here goes to the Envoy team who of course make Windows possible via publishing images. The func-e team on this effort were @codefromthecrypt and @mathetake. Of course, we also have the users to thank, especially their patience in waiting for us. We hope this helps you try Envoy!


10 Jul 03:20
Choose a tag to compare

func-e v0.5.1 does a couple things that will impact advanced users.

@karl-cardenas-coding made it possible to override the platform used to run Envoy. This is mainly helpful for folks waiting for Envoy to support Apple Silicon. If you have Apple Silicon and can install Rosetta 2, setting FUNC_E_PLATFORM=darwin/amd64 will get you going.

Those building func-e on their own can now use simpler ldflags to assign the version. Ex. go build -ldflags "-s -w -X main.version=override_here"

In other news, if you haven't seen our new website,, check it out! Gophers may like to know everything in this repo builds with go, even our website. We don't have any dependencies on npm or anything. Have a peek!


06 Jul 01:01
Choose a tag to compare

func-e 0.5 carries on where getenvoy left off. We chose this name to avoid trademark problems raised to us by the Envoy® team.

Take note that this effects the binary name func-e and, its home directory default
~/.func-e and the variable to override it $FUNC_E_HOME. The versions list of
Envoy remains the same:

This release has the same code as the archived getenvoy
v0.4.1 and will continue development according to the original plan. This means windows is still next!

Envoy® is a registered trademark of The Linux Foundation in the United States and/or other countries