Getting Started
Welcome to UniRTM! UniRTM is a universal runtime manager written in pure Go. It serves as a polyglot tool manager, an environment variable loader, and a task runner.
If you have used tools like asdf, mise, nvm, pyenv, or rbenv, you will feel right at home—but with significantly better performance and built-in security features.
Why UniRTM?
- 100% Native (Lightning Fast): Written purely in Go. No external bash plugins, no python dependencies. It avoids the slow startup times and brittleness of Bash/Ruby-based tools.
- Zero Shell Pollution: Keep your
.bashrcand.zshrcclean. UniRTM can dynamically inject environments without running arbitrary shell scripts on every directory change. - Security via Ecosystem Integrations: UniRTM connects with industry-standard external tools like Trivy, Syft, and Gitleaks. While UniRTM manages your environments, you can easily plug in these external scanners to secure your supply chain without bloating the core runtime manager.
- Cross-Platform: Windows, macOS, and Linux are all treated as first-class citizens with pre-compiled native binaries.
- All-in-One: Replaces your tool manager,
.envloaders (likedirenv), and task runners (likemake), while exposing a built-in MCP server for AI Agents.
1. Install UniRTM
The easiest way to install UniRTM is via our installation script:
curl -sL https://raw.githubusercontent.com/snowdreamtech/UniRTM/main/install.sh | bashFor more installation methods (Homebrew, Cargo, APT), see Installing UniRTM.
2. Hook into your Shell
For UniRTM to magically switch your tools and environments when you cd into a directory, it needs to hook into your shell.
# For Zsh
echo 'eval "$(unirtm env --shell zsh)"' >> ~/.zshrc
# For Bash
echo 'eval "$(unirtm env --shell bash)"' >> ~/.bashrcRestart your terminal for the changes to take effect.
3. Install your first tools
Navigate to your project directory and declare the tools you need.
$ unirtm use node@20 python@3.11 go@1.22
✓ wrote .unirtm.toml
$ unirtm install
✓ installed 3 toolsYou can verify they are active:
$ node -v
v20.x.x
$ go version
go version go1.22.x4. Setup Environment Variables
Create a .env file in your project:
echo "DATABASE_URL=postgres://localhost:5432/mydb" > .envUniRTM automatically loads these variables when you enter the directory and unloads them when you leave.
5. Define Tasks
Open your .unirtm.toml and add a task:
[tasks.test]
description = "Run the test suite"
run = "go test ./..."Run it with:
unirtm run testNext Steps
- Take the Full Walkthrough to explore advanced features.
- Learn about The
.unirtm.tomlFile. - Dive into Tasks.
