# Move an asdf project to OMG

Try OMG with your existing .tool-versions, compare the selected runtime and command path, and keep asdf until your project tests pass.

Canonical: https://getomg.xyz/guides/migrate-from-asdf/
Updated: 2026-09-22
Author: OMG maintainers

## Start with one project, not your whole asdf setup

You have a project with .tool-versions and want to try OMG's package commands or task runner without losing a working asdf setup. Keep asdf installed while you test one runtime and one project task.

Current asdf is a Go binary and still uses shims to select executables. OMG reads supported .tool-versions pins and adds its installed runtime directories to PATH through a shell hook. The two tools keep separate runtime installations.

### Record what asdf selects in this project

```sh
cat .tool-versions
asdf current
asdf which node
```

> Use asdf which node only if this project has a Node.js pin. Save the version and executable path so you can compare them after switching shells.

## Install one pinned runtime with OMG

For a project with one supported Node.js version in .tool-versions, omg use node reads the pin and installs or selects that version in OMG's own data directory. OMG recognizes the common asdf nodejs name as node. It does not reuse files in asdf's installs directory.

### Check the pin and install the matching Node.js version

```sh
omg which node
omg use node
omg list node
```

> Review .tool-versions before going further. OMG reads the first version for each tool and supports its own runtime names, not every asdf plugin or multi-version request. omg which node shows the selected version, not an executable path.

## Check which Node.js your shell runs

In a separate Bash session, activate OMG's hook and inspect the command path and version inside the project. The hook selects installed runtimes when you change directories. Use the shell integration guide for Zsh or Fish.

### Activate OMG in a separate Bash session

```sh
eval "$(omg hook bash)"
```

At the next shell prompt, check where node resolves and which version runs. The hook updates the path when Bash displays a prompt.

### Compare the active Node.js command with your asdf baseline

```sh
command -v node
node --version
```

If the version and path match the OMG installation you selected, run your project's usual tests. If you decide to keep OMG, remove the asdf shims directory from this shell's PATH setup and keep the OMG hook in the shell profile. Keep .tool-versions and the asdf installation until your projects pass their own checks.

## Keep asdf where its plugins matter

asdf remains the better fit for a project that needs one of its plugins or shim behavior outside an interactive shell. OMG is useful when its supported runtimes can share a CLI with OS package commands and project tasks. The migration does not require changing .tool-versions, deleting asdf, or running omg migrate.

Start with the OMG installation guide if you have not installed it. The runtime reference lists supported tools, and the installation guide explains the hook before you change your profile.

## Sources and verification

Source-reviewed guidance; not a claim of execution on every supported platform.

- [Install OMG](https://getomg.xyz/docs/installation/)

- [OMG runtimes](https://getomg.xyz/docs/runtimes/)

- [asdf 0.16 migration and Go rewrite](https://asdf-vm.com/guide/upgrading-to-v0-16.html)

- [asdf version and shim commands](https://asdf-vm.com/manage/versions.html)

- [asdf getting started](https://asdf-vm.com/guide/getting-started.html)

## Related pages

- https://getomg.xyz/compare/omg-vs-asdf/

- https://getomg.xyz/guides/migrate-from-nvm/

- https://getomg.xyz/guides/reproducible-dev-environments/

- https://getomg.xyz/runtimes/node/

