Skip to content
Choose a tag to compare

Welcome Athenians! v0.11.0 has a few features and several internal & infrastructural changes to improve stability and robustness:

  • In #1656, #1652, and #1655, we improved tests and log output. These changes should make it slighty easier for Athens developers and operators
  • In #1659, #1672, and #1677, we upgraded the Helm charts:
    • #1659 uses the new apiVersion value for Kubernetes Ingress objects
    • #1672 allows you to set annontations on the service account, if you have one present
    • #1677 allows you to use an existing service account in your Kubernetes cluster, rather than having the Helm chart create a new one for you
  • In #1673, we added configuration to support IAM Roles for Service Accounts for Athens configured with S3. This means that Athens can now use the default credentials for an S3 bucket when it's running in AWS, rather than having to hard-code them in configuration
  • In #1681, we added the Content-Length header to .zip requests, which means that Athens can now integrate with pkgsite
  • And last, but not least in #1623, we started using goreleaser to publish Athens binaries to each release page (starting with this one!). We only publish amd64 bit binaries for Linux and (Intel) Mac machines. Please submit an issue to request other builds/architectures if you would like them

Thanks to all of the contributors for the above PRs and everything else in this release!

Much ❤️ from the Athens maintainers 😄

Choose a tag to compare

Hi Athenians 👋

This release brings about a few exciting changes. For the full list of commits see v0.9.0...v0.10.0

  • We changed our main branch from master to main 🎉

  • Athens support for the /index endpoint 🗂️. This makes Athens behave not only similarly to but also to To turn it on and configure a backend for storing indexes, check out our configuration. This makes Athens integrate well with the newly open source Package Discovery Site. We will write more documentation on how to set everything up once things get more stable 🎉 (but feel free to reach out on GitHub Discussions or Slack if you want help setting it up)

  • Fixed a bug where users running Athens behind a path prefix were not able to proxy to the checksum db correctly: #1620

  • Fixed a bug where the Download File was not redirecting to URLs that had a path suffix: #1640

As always THANK YOU to our first time and recurring contributors. Athens is developed fully freely by the open source community so hope you like this release!

Don't hesitate to file issues or reach out to us at #athens on the Gohper Slack.

Open source contributors since v0.9.0:

🎉 @elliotmr @stamm @sidprak @GodsBoss @WillAbides 🎉

Choose a tag to compare

Hi there, Athenians! Lately our releases have had bugfixes and medium sized features. Not today! This release has a big new feature. We've heard you want more storage backends, so we added an HTTP-based way you can build your own storage backends, without forking or recompiling Athens

We're calling it External Storage 😄 🚀 🎉

If you're interested in building your own external storage drivers, see the docs for details.

Other Changes 🔬

A lot of work went into external storage, but we still had a chance to fix bugs and add other features.

  • If you're hacking on a built-in storage driver, you no longer have to implement storage.Checker - the storage system figures it out for you (0bb95c7)
  • You can now set the Kubernetes deployment strategy right from the Helm chart values.yaml file (cb286fb)
  • If you build your own Athens Docker images, you can specify the version of the base Alpine image (a846766)
  • Athens is now built with Go version 1.14 by default (af0e699)

For the full list of changes, see here

Thanks To The Community 💚

As always, we couldn't have done this release without all the bug reports, feature requests, PRs, questions, and discussion from everyone in the community. This project exists because of you all

Thanks especially to @BradErz, @xytan0056, and @bclermont for their contributions in this release. Thanks folks!

Finally, if you'd like to contribute and see your GitHub name here next release, please talk to us in the #athens channel on Gophers Slack. We would love to have you join us, and absolutely everybody is welcome.

Choose a tag to compare

In this release, we fixed a bug that the v0.8.0 release introduced. Looking back to our last release, we added redis-sentinel support for single-flight, but we introduced a bug in the file. In this release, we have fixed that bug by cherry-picking b2b384b (merged from #1581) into the release-v0.8.0 and creating a new tag.

Thanks @twexler for finding the bug and fixing it!

Choose a tag to compare

👋 Hello Athenians! 👋

v0.8.0 is here! With it, we're now building with Go 1.14, we've got a bunch of great new features
in the redis single flight distributed lock, and some other minor updates to documentation

Big changes:

  • #1514: We revamped our end-to-end testing, making it easier to contribute changes and know if something is broken!
  • #1535: We now have documentation on how to deploy Athens with BOSH
  • #1545: You can now specify passwords for Redis single flight setups
  • #1554: Athens now supports using redis-sentinel as a single flight backend

We'd also love to give a shout out to Netlify. We recently switched to their open-source plan for our documentation site, and couldn't be happier!

For a full list of changes, click here

👏 Last, and certainly not least: We've love to give a huge round of applause to our contributors for this release:

Choose a tag to compare

👋 there 🏛s

This release brings a few important bug fixes when it comes to environment variables.


If you were using v0.7.1 and set the following env: GO_ENV=production and saw a build failure, this is now fixed. (#1529)


The GoBinaryEnvVars can be used to pass environment variables to the go command that Athens uses. This is important for setting things like GOPRIVATE, GOPROXY, GODEBUG and more.

Initially, we used the comma , to separate values as such* , GOPROXY=direct -- However, this broke because sometimes you need the comma itself to be part of the value such as*,*

Therefore, this release changes the separator for this env var from comma , to a semi colon ; as such:


For more information, see #1404

Also, for thorough information on how to use this and other config values please see

As always, THANK YOU to all the contributors and users -- if you have any issues or would like any help, don't hesitate to reach out to us on the Gopher Slack (#athens) or open an issue on GitHub.


Choose a tag to compare

👋 Waves to everybody 👋

This release makes pattern matching in the Download File behave the same way as GOPROXY and friends. In other words, you can set a path to *.my_company/go/* to match both a sub domain and a path suffix. For more info see #1408

The GO_ENV=production line was removed from the Dockerfile, this was done because the Env Var always overrode whatever the user has put in the Config TOML file.

If you were relying on the Dockerfile having this set automatically, you must now explicitly pass it either through an Env Var or through the Config TOML file.

There was also a lot of documentation updates since the last release and if you see there's anything missing, don't hesitate to open an issue!

As always, THANK YOU to all of the users and contributors. Athens is purely developed and maintained by the Go community so give it up to yourselves 👏

Choose a tag to compare

Hi Athenians!

This release brings 🤞more stability 🤞 to Athens through documentation and bug fixes.

Most notably, the DownloadFile will follow the same exact rules as our NoSumPatterns config which follows the same exact rules for GONOSUMDB and friends: matches will be based on path.Match based on path prefixes.

In other words, having NoSumPatterns=["*"] will match all repositories, sub-packages, and sub-modules such as "" and "". This is especially important if you run a vanity import server so you can match the whole organization such as

For more info see here

For a list of what has changed since the last release, check out v0.6.1...v0.7.0

As always, thank you to all of the contributors and the users that have reported issues and kept us on our toes to bring fixes and better documentation.

Athens is fully built and maintained by the open source and seeing individuals as well as companies large and small use it is a huge reward for all of us. Speaking of which, if you use Athens feel free to drop a note here: #1323

Thank you!

Choose a tag to compare

Hi Athenians,
The v0.6.0 had an important bug (#1390) where all private modules that were not already in storage failed to be downloaded.

This release fixes that bug. Please give it a try and let us know!

On a similar note, if you have private import paths make sure you tell Athens that through the NoSumPatterns config. Otherwise, go mod download will fail!

Furthermore, you can now pass any GO* environment variable to go mod download that Athens runs through the GoBinaryEnvVars config such as GOPROXY and GOPRIVATE

For more, see our example config file here:

Choose a tag to compare

Hi Athenians!

This release brings better compatibility with the newly released Go 1.13 ✌️

Athens now uses Go 1.13 under the hood to list/download Go Modules. Furthermore, you can specify the GOPROXY option from within Athens when a module is not found in storage.

Athens now also returns 404 on all list/download errors so that comma-separated GOPROXY clients can function correctly.

For all of the changes between v0.5.0 and v0.6.0 please take a look at: v0.5.0...v0.6.0

As always, a huge THANK YOU to everyone who used, contributed to, and improved on Athens and its community :)