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.1-py3-none-win_arm64.whl (29.3 MB view details)

Uploaded Python 3Windows ARM64

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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3Windows x86

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

Uploaded Python 3macOS 11.0+ ARM64

snowdreamtech_unirtm-0.29.1-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.1-py3-none-win_arm64.whl.

File metadata

File hashes

Hashes for snowdreamtech_unirtm-0.29.1-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 70fed00cc0f7891e93e263d29a53d587332c78ac1fb678e6a4ece520c54cd63b
MD5 486ae44ef9d5d36de3d0b66fd01d5714
BLAKE2b-256 154b0f8631adcd4fcfe366d5f39dc25cb533bc174e31f857a256b08a97ba0812

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowdreamtech_unirtm-0.29.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 b378f71f918ea2585646cc3c137acd344fd574fb92576d9f3c8a008334462893
MD5 99c005b4580793fe341d2207d572f113
BLAKE2b-256 5255af1dd41f5c405073a30c037b21ad06ba63b52d25013e2bc84da56760dac6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowdreamtech_unirtm-0.29.1-py3-none-win32.whl
Algorithm Hash digest
SHA256 736537fcdf8fae40f0e94649577f3d168535873503bc6f62e85699f034d195a0
MD5 c0d709d3ca0b778b5215a423e1e71a13
BLAKE2b-256 9677e35a63f3c1787fea60dd8775616ec7a414dfb94d9d06668179ab93f58d41

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowdreamtech_unirtm-0.29.1-py3-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 020d42736d80a279d218d0ea073de7f560e6da2e7c4177c40bf9fc1710dac742
MD5 4e19d14b27e8a3682b6e49bd8b115b01
BLAKE2b-256 ef8eba544d609cc05b8d7b89a1110ab7587fbf172ae1f62f6c0f2653cb749722

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowdreamtech_unirtm-0.29.1-py3-none-manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 c2b2abaf7004a910b63db930378fcbafb6b1903c718689354e1e96fd8910eb6e
MD5 e5b7264d2aeba9c473d35227f1fe4d3f
BLAKE2b-256 d4dd1bd3f27dc0c98b319e44ccb97ec85506f6a4e7d0c9f7086d2f2d918da88e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowdreamtech_unirtm-0.29.1-py3-none-manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 140e7eaa0d8c7274ee85219f8eda4517bc6bad19f7eb226ee18d1e0c1627388c
MD5 83d804693ea0a6496a5055af14cd5b17
BLAKE2b-256 8288b18e9c53533793e8fb547e5070e02324c7f1e2b55c7a44e87ddc5c3d3a09

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowdreamtech_unirtm-0.29.1-py3-none-manylinux2014_i686.whl
Algorithm Hash digest
SHA256 63da27d46a996d7dfcaf28105df3b6072d34a517a61e591a2a8e94c3bef0d82b
MD5 854537d5fad2bc527fc1c0aa6e6b06ab
BLAKE2b-256 366a822cd82117065b0ddb4d798fdc26915e9975783cced45dc465cb4c809054

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowdreamtech_unirtm-0.29.1-py3-none-manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 2073892c89bbf2cb8ce3d89422713a438e3f47938151f53c8794cdad282b5325
MD5 f5a0efa29278dfd471d9c04e6a3d2c5d
BLAKE2b-256 48e6a06c166a2bc3642326d398c0667e88f95c10d907ae9047ccd7a1956ff237

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowdreamtech_unirtm-0.29.1-py3-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6ded1914a59d0bfafea84f3be660c6ecc40e71f3b6bbe9b53513ca1abc318439
MD5 ed46641776baf027cd690223d474de02
BLAKE2b-256 a871050becd7130ca267df23ed5064ab579a4fa41285324a479162ae220ba5a6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowdreamtech_unirtm-0.29.1-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7c13e30bf436392cd243ed1219667820f0b96f21de1e034a8253eb2eab82d1da
MD5 79b4dcef39da58bea91a9c988e27544a
BLAKE2b-256 a378737317bcbd4a120229fab59ae3f7429dd2a7c1ba999c5840ed6ee85528a2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowdreamtech_unirtm-0.29.1-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 5dbfc885f5b344c3dce927bf6355ffe9c00851d9a980a4eef38c76eb6a9b5c52
MD5 2e5b64615a1474d70ed7347bb7231dc6
BLAKE2b-256 574a751e833ef3f277603cec72b6974b16b81458875325216154b2ab4508d0c5

See more details on using hashes here.

Release history Release notifications | RSS feed

0.30.1

11 files

0.30.0

11 files

This release

0.29.1 This release

11 files

0.29.0

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