From a very high-level view, there are 3 major components of the system.


The client is a user, powered by go binary with module support. At the moment of writing this document, it is Go v1.12+.


VCS is an external source of data for Athens. Athens scans various VCSs such as and fetches sources from there.


We intend proxies to be deployed primarily inside of enterprises to:

  • Host private modules
  • Exclude access to public modules
  • Store public modules

Importantly, a proxy is not intended to be a complete mirror of an upstream proxy. For public modules, its role is to store and provide access control.

Fork me on GitHub