Skip to main content
UniRTM Logo

UniRTM

GitHub GitHub Workflow Status Continuous Integration Continuous Delivery

Dev tools, env vars, and tasks in one CLI with built-in security.
Inspired by and paying tribute to mise.

Getting StartedDocumentationDev ToolsEnvironmentsTasks


[!TIP] UniRTM's powerful task runner empowers you to orchestrate deep security scans (like Trivy & Syft) perfectly alongside your environments.

What is it?

UniRTM (Universal Runtime Manager) prepares your development environment before each command runs. It keeps project tools, environment variables, and tasks in one .unirtm.toml file so new shells, checkouts, and CI jobs all start from the exact same setup.

  • Install and switch between dev tools like node, python, go, and more.
  • Load environment variables per project directory, including values from .env files and secure secret managers like SOPS.
  • Define and run tasks for building, testing, linting, and deploying projects.

While taking heavy inspiration from the brilliant tool mise (dev tools, env vars, and tasks in one CLI), UniRTM introduces several distinct architectural choices:

  • Pure Go Engine: Extreme parallel downloading capabilities leveraging goroutines.
  • Lightweight Native Shims: Replaces sluggish bash shims with a unified, high-performance Go router. This prevents $PATH explosion while maintaining near-native execution speeds.
  • Unifying Security via Tasks: While keeping the core engine minimal, UniRTM allows you to perfectly integrate external security scanners like Trivy or Syft into your reproducible task workflows.
  • Absolute Locking: Generates a unirtm.lock file that pins the exact checksums and versions of your downloaded tools for reproducible environments.

Supported Platforms

Fully supported on macOS (Apple Silicon / Intel), Linux (glibc & musl/Alpine), and Windows.

Demo

The following demo shows how to use UniRTM to install a specific version of go globally. Notice the speed and the built-in vulnerability scanning!

demo

Quickstart

Install UniRTM

See Getting started for more options.

Via Script (Linux/macOS):

$ curl -sL https://raw.githubusercontent.com/snowdreamtech/UniRTM/main/install.sh | bash
$ ~/.local/bin/unirtm --version
UniRTM v0.1.0 macos-arm64 (2026-05-28)

Via NPM:

npm install -g @snowdreamtech/unirtm

Via PyPI:

pip install snowdreamtech-unirtm

Hook UniRTM into your shell (pick the right one for your shell):

# note this assumes unirtm is located at ~/.local/bin/unirtm
echo 'eval "$(~/.local/bin/unirtm env)"' >> ~/.bashrc
echo 'eval "$(~/.local/bin/unirtm env)"' >> ~/.zshrc
echo '~/.local/bin/unirtm env | source' >> ~/.config/fish/config.fish

Execute commands with specific tools

$ unirtm exec node@20 -- node -v
unirtm node@20.x.x ✓ installed
v20.x.x

Install tools

$ unirtm use --global node@22 go@1.22
$ node -v
v22.x.x
$ go version
go version go1.22.x macos/arm64

See dev tools for more examples.

Manage environment variables

# .unirtm.toml
[env]
SOME_VAR = "foo"
$ unirtm set SOME_VAR=bar
$ echo $SOME_VAR
bar

Note that UniRTM can also load .env files.

Run tasks

# .unirtm.toml
[tasks.build]
description = "build the project"
run = "echo building..."
$ unirtm run build
building...

See tasks for more information.

Example UniRTM project

Here is a combined example to give you an idea of how you can use UniRTM to manage your a project's tools, environment, and tasks with security baked in.

# .unirtm.toml
[tools]
terraform = "1"
aws-cli = "2"
node = "20"

[env]
TF_WORKSPACE = "development"
AWS_REGION = "us-west-2"
NODE_ENV = "production"

[tasks.plan]
description = "Run terraform plan with configured workspace"
run = """
terraform init
terraform workspace select $TF_WORKSPACE
terraform plan
"""

[tasks.validate]
description = "Validate AWS credentials and terraform config"
run = """
aws sts get-caller-identity
terraform validate
"""

[tasks.audit]
description = "Run deep security scans using Trivy and Gitleaks"
run = """
trivy fs --format cyclonedx --output sbom.json .
gitleaks detect --source . --no-banner
"""

[tasks.deploy]
description = "Deploy infrastructure after validation and audit"
depends = ["validate", "audit", "plan"]
run = "terraform apply -auto-approve"

Run it with:

unirtm install # install all required tools specified in .unirtm.toml
unirtm run deploy # automatically runs validation and audit dependencies first

Full Documentation

See snowdreamtech.github.io/UniRTM

Architecture & Environments Comparison

We believe in making deliberate architectural choices to support modern enterprise environments. Here is how UniRTM compares to ecosystem pioneers like mise and asdf across multiple dimensions:

1. Core Architecture & Execution

Dimension asdf (Bash) mise (Rust) UniRTM (Go) Why it matters
Execution Path Bash Shims Rust Shims / PATH Lightweight Go Shims Uses a single compiled Go binary as a router to perfectly solve the performance issues of Bash shims and ensure cross-platform compatibility.
Concurrency Model None OS Threads Goroutines Go's ultra-lightweight goroutines provide extreme parallel throughput during massive toolchain downloads.
Config Hierarchy .tool-versions mise.toml .unirtm.toml Standardized, unified TOML configs across your entire project.

2. Environment & Context

Feature asdf mise UniRTM Details
Scope Management Tools only Tools + Env + Tasks Tools + Env + Tasks Seamlessly manage environments contextually per directory.
.env Parsing Native Native Reads traditional .env files automatically without external loaders.
Secrets Engine Plugins / Integrations Native SOPS Treats secure secret management as a first-class citizen using native SOPS integration.

3. Cross-Platform & Resilience

Feature asdf mise UniRTM Details
Windows Support WSL/MSYS Dependent Supported Native (Ground-up) Engineered natively for a flawless Windows and Cygdrive experience.
Alpine/Musl Partial Supported Hardcore Supported Runs flawlessly in minimal musl/Alpine containers without glibc overhead.
Reproducibility Versions mise.lock (Supported) unirtm.lock (Default) Strictly pins exact checksums to ensure reproducible team environments.

4. Ecosystem Affinity & Minimalism

Feature asdf mise UniRTM Details
Hybrid Path Resolution Partial Deeply Supported Dedicated optimizations for translating paths seamlessly across Windows Git Bash / Cygdrive environments.
External Dependencies Bash Ecosystem Minimal Absolute Zero Core plugins are compiled directly into the binary. Drop it into any minimal OS and it runs out of the box.
Shim Overhead Standard (Bash script) Optimized (Rust binary) Lightning Fast (Go) All tools symlink back to the unirtm engine for instant routing, perfectly preventing $PATH explosion.
DevOps Integration Custom Scripts Good Native Synergy Go-based architecture naturally aligns with cloud-native infrastructure, making custom integrations frictionless.

Special Thanks

Inspired by the architecture and developer experience pioneered by mise.

License

MIT License. Copyright (c) 2026-present SnowdreamTech Inc.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

snowdreamtech_unirtm-0.29.0-py3-none-win_arm64.whl (29.3 MB view details)

Uploaded Python 3Windows ARM64

snowdreamtech_unirtm-0.29.0-py3-none-win_amd64.whl (30.9 MB view details)

Uploaded Python 3Windows x86-64

snowdreamtech_unirtm-0.29.0-py3-none-win32.whl (30.4 MB view details)

Uploaded Python 3Windows x86

snowdreamtech_unirtm-0.29.0-py3-none-macosx_11_0_arm64.whl (14.6 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

snowdreamtech_unirtm-0.29.0-py3-none-macosx_10_9_x86_64.whl (15.7 MB view details)

Uploaded Python 3macOS 10.9+ x86-64

File details

Details for the file snowdreamtech_unirtm-0.29.0-py3-none-win_arm64.whl.

File metadata

File hashes

Hashes for snowdreamtech_unirtm-0.29.0-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 4815009512ef29cdbce7f7073dd4ac3c4455c9f010cc8b8d82f7fb2100fde120
MD5 bde9333b6d7687834de11360ba9f5997
BLAKE2b-256 36bda6bde17473f31df304daecbc80367a01f5727040b9461106cc7cf0837549

See more details on using hashes here.

File details

Details for the file snowdreamtech_unirtm-0.29.0-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for snowdreamtech_unirtm-0.29.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 d2b3c07d14cd4a0eabdf02f7162e4c58ce70a45d52e3e40b2b4babff88065c58
MD5 3bcb97d7e5fc6f59548259677cb5d7a6
BLAKE2b-256 ec844c503d908b24a71c80b239c20633b17d4e100b772d5e9a00cac577d2982c

See more details on using hashes here.

File details

Details for the file snowdreamtech_unirtm-0.29.0-py3-none-win32.whl.

File metadata

File hashes

Hashes for snowdreamtech_unirtm-0.29.0-py3-none-win32.whl
Algorithm Hash digest
SHA256 77172933e17a44b4ee3a69a33f20430446265eb028043fbd427e318691c08829
MD5 afa81a899ce5409cebe0ea5ce23e9bb5
BLAKE2b-256 8bab6a514897fdd14b9c2bbb17be01d65327bbdafc7d89078f0ea6c73df69a84

See more details on using hashes here.

File details

Details for the file snowdreamtech_unirtm-0.29.0-py3-none-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for snowdreamtech_unirtm-0.29.0-py3-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 63f3a29abd7959c04c20cbe417cf344dc26dbb60e2992a288c11e5ff4ebf192b
MD5 cad18ff36a5ec3024f8f1dd5e943d341
BLAKE2b-256 15bf6a8e801f43fa6eb1634038560621b3b2363edbae35f54d8c0d32f57b0956

See more details on using hashes here.

File details

Details for the file snowdreamtech_unirtm-0.29.0-py3-none-manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for snowdreamtech_unirtm-0.29.0-py3-none-manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 c10ff5707c95b160f03b6a7a18ebc250366a44c0108d2fae1e8d27a109689782
MD5 b23592f782ab6475daeef359770a9527
BLAKE2b-256 ed5f8e78ba6a48f09162df9a6dc80a5600b762da88799047d757a3b7fcdca0f0

See more details on using hashes here.

File details

Details for the file snowdreamtech_unirtm-0.29.0-py3-none-manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for snowdreamtech_unirtm-0.29.0-py3-none-manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 b219b64679ec7e36d93a4a64ce1a6bdfdf161ae7162c36455c89456b59f721d4
MD5 1f5094b0452f6e74aa5d9d6f15ca49a5
BLAKE2b-256 2a7d3d0d7a8696694ab529ab64d94d1fe5b29e128af4969b150ad1fcd57fc6be

See more details on using hashes here.

File details

Details for the file snowdreamtech_unirtm-0.29.0-py3-none-manylinux2014_i686.whl.

File metadata

File hashes

Hashes for snowdreamtech_unirtm-0.29.0-py3-none-manylinux2014_i686.whl
Algorithm Hash digest
SHA256 1f79183491845429a3b5e7e731fff0ec57b9ed493c97da15fa8427a5ff4d06a2
MD5 45d323b070441a628cbe142b1f3446d0
BLAKE2b-256 fc7f070b6f51dc8df9ce44f0614df0ec0fef51ab4f929877975a3a3c08469db2

See more details on using hashes here.

File details

Details for the file snowdreamtech_unirtm-0.29.0-py3-none-manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for snowdreamtech_unirtm-0.29.0-py3-none-manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 ca7f26610db43371a2763d8f661e769e3b657145005a5c74f1d138a51dc4bd05
MD5 70c21dd92c1bf7e2905ed79c8531c70b
BLAKE2b-256 56d67ef7e8abe830bb0180f1bcce508dc063412c06b78e19479ddd8a7b32b6e0

See more details on using hashes here.

File details

Details for the file snowdreamtech_unirtm-0.29.0-py3-none-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for snowdreamtech_unirtm-0.29.0-py3-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 83618b4a26e8d1a8578dc76fb058aec79e90337c50659b1bf60bd4df7fbbd077
MD5 991ddacab498db59a6ed7757863ffe57
BLAKE2b-256 a46492101f6de64b806e145f3eddbcc2a7c5ef6004512a92fe5045c2d13cf06a

See more details on using hashes here.

File details

Details for the file snowdreamtech_unirtm-0.29.0-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for snowdreamtech_unirtm-0.29.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bddc8ea7d7a8c7b66063771e7c9038cd2574d75dc2672b9880ee6f63e42d87d5
MD5 1beea44ef00661f2395fa2c8974314d4
BLAKE2b-256 ac1dd13f33825852d2201c07c40ce98596b8ce0d6d27e8f2867197877f8b6f1b

See more details on using hashes here.

File details

Details for the file snowdreamtech_unirtm-0.29.0-py3-none-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for snowdreamtech_unirtm-0.29.0-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4d445b89d121fee6d36e61b8a322f3510c184d8a9ff030513f0a5d879ec0af7d
MD5 7a4765fd2b60362b4bd208918ffab412
BLAKE2b-256 2f7b7ff660ae4c8ce12a3dde14a4fe707d23ca10ca35675cc4db125415ea10a4

See more details on using hashes here.

Release history Release notifications | RSS feed

0.30.1

11 files

0.30.0

11 files

0.29.1

11 files

This release

0.29.0 This release

11 files

0.25.8

11 files

0.25.7

11 files

0.25.6

8 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page