awesome-repositories.com
Blog
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectAboutHow we rankPressMCP server
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
·
asdf-vm avatar

asdf-vm/asdf

0
View on GitHub↗
25,086 stars·918 forks·Go·mit·11 viewsasdf-vm.com↗

Asdf

This project is a command-line tool designed to manage multiple versions of programming language runtimes and development tools on a single machine. It provides a unified interface for installing and switching between different versions of software, ensuring that specific tool versions are consistently applied across various development environments.

The system distinguishes itself through a modular, plugin-driven architecture that allows for the integration of new languages and tools via external scripts. It utilizes a shim-based execution mechanism that intercepts command calls, automatically routing them to the correct runtime version based on the current directory. This directory-aware approach enables users to pin specific tool versions to individual projects, which are then resolved through a hierarchical configuration system that traverses the directory tree to apply the appropriate settings.

Beyond its core versioning capabilities, the tool supports the standardization of development toolchains across teams and facilitates the migration of legacy configurations from other management systems. It offers extensive configuration options, including environment variable overrides, global settings for caching and synchronization, and custom lifecycle hooks for plugin operations.

Features

  • Version Managers - Manages multiple versions of different programming languages through a unified interface.
  • Version Managers - Facilitates the download and installation of specific tool and language runtime versions to ensure consistent project environments.
  • Version Pinning Systems - Enables directory-specific version pinning for consistent tool environments.
  • Version Switchers - The version manager uses a shim-based system to automatically execute the correct version of a tool based on the local configuration and current directory.
  • Command Interception Shims - Intercepts command calls to dynamically route execution to the correct runtime version.
  • Execution Environments - A runtime mechanism that intercepts command calls to automatically route execution to the specific version of a tool configured for the current directory.
  • Environment Orchestrators - A directory-aware system that enforces consistent tool versions across different projects by reading local configuration files to set the active runtime environment.
  • Runtime Management Plugins - Uses modular plugins to automate the download, installation, and verification of language runtimes.
  • Package Managers - Extendable version manager for multiple programming languages.
  • Version Selection Interfaces - Allows users to define active tool versions for specific directories or globally.
  • Development Environment Standardization - Standardizes compiler and runtime versions across teams to prevent environment-related issues.
  • Plugin Managers - The version manager provides a unified interface to install and manage language-specific plugins, simplifying the setup and maintenance of diverse programming language runtimes.
  • Configuration Resolution Systems - Traverses directory trees to resolve project-specific settings and override global defaults.
  • Plugin Systems - A modular design that allows users to integrate support for new languages and tools by adding external scripts to the core management engine.
  • Version Manager Compatibility Layers - The version manager enables compatibility with version files from other managers to allow seamless migration and maintain consistency with existing project configurations.

Star history

Star history chart for asdf-vm/asdfStar history chart for asdf-vm/asdf

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Open-source alternatives to Asdf

Similar open-source projects, ranked by how many features they share with Asdf.
  • sstephenson/rbenvsstephenson avatar

    sstephenson/rbenv

    16,711View on GitHub↗

    rbenv is a Ruby version manager and shell shim environment manager. It allows for the installation of multiple Ruby versions on a single machine and coordinates the selection of the active version based on the current directory or shell session. The tool functions as an extensible command line framework that intercepts executable calls using shell shims. These shims route requests to the selected language version, ensuring environment isolation by storing binaries in independent directories. The system includes capabilities for language runtime administration, including the ability to downlo

    Shell
    View on GitHub↗16,711
  • jdx/misejdx avatar

    jdx/mise

    29,929View on GitHub↗

    Mise is a development environment orchestrator that manages software runtimes, environment variables, and task execution. It functions as a version manager and task runner, providing a unified interface to synchronize project-specific configurations and dependencies across different machines. By automating the installation and switching of tools, it ensures that development environments remain consistent and reproducible. The project distinguishes itself through a hierarchical configuration system that automatically discovers settings by traversing the directory tree. It uses shim-based comma

    Rust
    View on GitHub↗29,929
  • yyuu/pyenvyyuu avatar

    yyuu/pyenv

    44,899View on GitHub↗

    pyenv is a Python version manager and runtime orchestrator that allows for the installation and switching of multiple Python versions on a single machine without affecting the system installation. It functions as a shell-based version controller that manages binaries through shims to redirect executable calls to specific versions. The tool is a plugin-extensible system, allowing users to add custom subcommands and logic via shell script plugins. This architecture enables the extension of the command line interface through a dedicated plugins directory. It provides capabilities for side-by-si

    Shell
    View on GitHub↗44,899
  • python-poetry/poetrypython-poetry avatar

    python-poetry/poetry

    34,282View on GitHub↗

    Poetry is a comprehensive dependency manager and packaging tool for Python projects. It functions as a configuration engine that resolves complex dependency graphs, manages isolated virtual environments, and ensures reproducible builds through deterministic lock file generation. By centralizing project metadata and build requirements into a single configuration file, it provides a unified workflow for managing the entire lifecycle of a Python codebase. The project distinguishes itself through its constraint-based solver, which evaluates environment markers and version requirements to maintain

    Pythondependency-managerpackage-managerpackaging
    View on GitHub↗34,282
See all 30 alternatives to Asdf→

Frequently asked questions

What does asdf-vm/asdf do?

This project is a command-line tool designed to manage multiple versions of programming language runtimes and development tools on a single machine. It provides a unified interface for installing and switching between different versions of software, ensuring that specific tool versions are consistently applied across various development environments.

What are the main features of asdf-vm/asdf?

The main features of asdf-vm/asdf are: Version Managers, Version Pinning Systems, Version Switchers, Command Interception Shims, Execution Environments, Environment Orchestrators, Runtime Management Plugins, Package Managers.

What are some open-source alternatives to asdf-vm/asdf?

Open-source alternatives to asdf-vm/asdf include: sstephenson/rbenv — rbenv is a Ruby version manager and shell shim environment manager. It allows for the installation of multiple Ruby… jdx/mise — Mise is a development environment orchestrator that manages software runtimes, environment variables, and task… yyuu/pyenv — pyenv is a Python version manager and runtime orchestrator that allows for the installation and switching of multiple… python-poetry/poetry — Poetry is a comprehensive dependency manager and packaging tool for Python projects. It functions as a configuration… rbenv/rbenv — rbenv is a Ruby version manager and shell environment manager designed to install, switch between, and manage multiple… volta-cli/volta — Volta is a cross-platform toolchain orchestrator and JavaScript toolchain manager. It functions as a version manager…