Today Anaconda announces the transformation of the Anaconda CLI from a monolithic codebase into a plugin architecture. This will allow us to more easily maintain anaconda-client, providing stable community package management on anaconda.org, and allow a path for rapid innovation and access to a number of new and exciting features of our platform.
Anaconda-client has been the backbone of the Anaconda Command Line Interface (CLI) since its initial creation in 2013. It is the workhorse responsible for uploading and managing packages on community channels hosted on anaconda.org, such as conda-forge, bioconda, and many others. After more than a decade of development, some of the early features and technical decisions have become technical debt.
With this change, anaconda-client will evolve to become the anaconda.org-specific plugin into a larger Anaconda CLI ecosystem.
Summary of Changes in Upcoming Release
The first phase of this change was released in anaconda-client 1.13.0. This release, while providing a fundamental architectural shift, is intended to have minimal impact on user experience, particularly in automated CI/CD scenarios. Only minor changes to interactive login flows are changed, and only in certain cases.
Some highlights:
While the anaconda CLI entrypoint will be moved to a new package called anaconda-cli-base, the user experience will be nearly 100% backwards compatible
The exception is triggered if another plugin such as anaconda-cloud-auth is also installed in the user’s conda environment, in which case the interactive login and logout commands will add an additional prompt to ask which domain to use
Notably, non-interactive usage via the --token CLI option remains as-is
Library usage as binstar_client has not been modified
All existing subcommands will remain available (e.g. anaconda upload). If additional plugins are installed, all anaconda-client commands will be treated as aliases to nested commands like anaconda org upload.
What you can expect in the future
We will continue evolving anaconda-client to remove legacy features, all while maintaining active support for the package management workflows currently used across the ecosystem. All future deprecations will take place by raising DeprecationWarnings, in a similar way to conda itself.
As a part of this modernization, users can expect to see a more modern CLI interface. Additionally, we will continue to release plugins with features tailored to users across our entire subscription portfolio. (e.g. Anaconda Environment Manager).
Example usage of anaconda-audit CLI plugin:
How to upgrade
Users can upgrade via:
condaupdateanaconda-client
To downgrade or prevent update, users may pin the version:
condainstallanaconda-client=1.12.3
Get in touch
This release has been subject to Anaconda’s thorough QA process and we do not expect any major bugs or regressions. However, in case any unintended regressions or bugs occur in this release, users can revert to `anaconda-client=1.12.3.`