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

Uploaded Python 3Windows ARM64

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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3Windows x86

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

Uploaded Python 3macOS 11.0+ ARM64

snowdreamtech_unirtm-0.30.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.30.0-py3-none-win_arm64.whl.

File metadata

File hashes

Hashes for snowdreamtech_unirtm-0.30.0-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 23c859c6ac73184c1a2c596e487739dbfbddb2556883c90f65cfdf79cc646849
MD5 0f2b8ce7ea981606874c0bc0b1888f9f
BLAKE2b-256 abf77b4e105552e61f5e6086464f042598573363f485450c7117359b7f58793a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowdreamtech_unirtm-0.30.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 161c98bd11cecc538a480fb4a8cb3155415bc75bec5c6516e8b21f56670eb7cd
MD5 5fe7855646a68850585677e73349a8c3
BLAKE2b-256 27d67b136a4e71e5869dc49bcf015d6b2420e96b3c68ef73de777505e73bf017

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowdreamtech_unirtm-0.30.0-py3-none-win32.whl
Algorithm Hash digest
SHA256 a15e7370209fba58d2262d441c65ae22071406b3d080fad60688960da2e9f82a
MD5 a3bd6a4e397da95a32d0e068c61c1ffd
BLAKE2b-256 e8574659526e2d7e2b34ff2ac84e03895ece8293acbfd4797f679818bfa2a084

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowdreamtech_unirtm-0.30.0-py3-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bc0cbefbd448895537a657e7f7a45f0415bc75d9b4e58a69cec72769088ab6b9
MD5 86d4c28f7814e7e16c341ed961665688
BLAKE2b-256 6e466db1923815c3c9a2e2bb40dbce83cd6c486e5fba4cb45cfd92217edf7d6f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowdreamtech_unirtm-0.30.0-py3-none-manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 ae2d8c4f84ef57f4b2c2343ad8a5d54580b73b2ac1adede19a90354cf4a5b10f
MD5 b1e120086d2f846039e57a20e818fefc
BLAKE2b-256 160fd36cccc0d0701af0383cd1b5bb7eb7fced23d9003ce90b652e575fce9b64

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowdreamtech_unirtm-0.30.0-py3-none-manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 b715e14e6e913588364fd7126ceb38b7d23cb8226ee10e93bcbaeb224634a36d
MD5 f7246bcf8105546126cce84db19a4fb4
BLAKE2b-256 f91452f9c14de0d736cc58ea1536ea8e1d711efcd5e81cac6e978e1b5da9b29d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowdreamtech_unirtm-0.30.0-py3-none-manylinux2014_i686.whl
Algorithm Hash digest
SHA256 9a6045d7592a8ebee1e6ab3318a970185f3dbd4c0af3e1e6f66b8669b3f8cd75
MD5 a39c688b1f386f997c9113942df7da88
BLAKE2b-256 f98b84279f26f4666e5c995cda81c45e97a49356a0e43db88bf628e59bfcf5d8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowdreamtech_unirtm-0.30.0-py3-none-manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 ff50fdbae356ae5edb7d83a27c02f11cf2c93f0fce443eb5840595f580dcb77d
MD5 0b30436bb4c78df6d0c0c3ada4d6108a
BLAKE2b-256 196955e6e6064662ceb529aa774443b6167e95b0e7c23f4c201b9e78812d81a0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowdreamtech_unirtm-0.30.0-py3-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 88310f0f1b70fbc6f63c4fc297128bcd38c5adb1eabee531cf1336c9f1b5eb50
MD5 cc7c7d9d2a5fadc3bae5550f23010643
BLAKE2b-256 6fd4fd314e9c5963a78fb00e37506e05d89d9670f6e842729afedc9fea68b6eb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowdreamtech_unirtm-0.30.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7fc8d1b01cd21d45d5a0d5f0f1d4cf5f063ce101c39a5567c8936690b3ce6e98
MD5 046bbab7ee6fef75abf82f5cee155d6c
BLAKE2b-256 187ce8cacc1908d05c09e219d7c8b1c4d1e52a7dfbda1d05401f1b3ef343cb00

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowdreamtech_unirtm-0.30.0-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 21fc6d69b03de461085ee6eede48f89e8878ad64d4422339cc1d8485346934cb
MD5 cb993c51a9352e3d25d70ee398055018
BLAKE2b-256 d49636d4e98bed14be7f63bb0ffc479a283be940e9446cb8df83a316edf6e13e

See more details on using hashes here.

Release history Release notifications | RSS feed

0.30.1

11 files

This release

0.30.0 This release

11 files

0.29.1

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