unirtm

command module
v0.3.11 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 1, 2026 License: MIT Imports: 1 Imported by: 0

README

UniRTM

GitHub GitHub Workflow Status

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 introduces native SBOM generation and security scanning via Trivy & Syft directly into your dev tools installation flow!

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.
  • Zero Shims: UniRTM strictly avoids bash shims. It directly prepends the absolute paths of installed tools to your $PATH, ensuring 100% execution speed and transparency for IDEs.
  • Native Security: Built-in integration with Trivy and Syft to generate SBOMs and scan for vulnerabilities whenever you install a tool.
  • Absolute Locking: Generates a unirtm.lock file that pins the exact checksums and versions of your downloaded tools for reproducible environments.

Quickstart

Install UniRTM

See Getting started for more options.

$ 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)

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 tools specified in .unirtm.toml with automatic SBOM generation
unirtm run deploy # automatically runs validation and audit dependencies first

Full Documentation

See unirtm.snowdream.tech

GitHub Issues & Discussions

For feature requests, bug reports, and community support:

Special Thanks

Inspired by the architecture and developer experience pioneered by mise.

License

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

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
Package cmd contains all the command-line interface definitions and implementations for the unirtm application.
Package cmd contains all the command-line interface definitions and implementations for the unirtm application.
examples
multi-backend command
This example demonstrates how to use the UniRTM multi-backend and provider registry to dynamically route tool installation requests across different ecosystems.
This example demonstrates how to use the UniRTM multi-backend and provider registry to dynamically route tool installation requests across different ecosystems.
plugin-go command
internal
addlicense
Package addlicense is a port of github.com/google/addlicense v1.2.0.
Package addlicense is a port of github.com/google/addlicense v1.2.0.
backend
Package backend provides the GitHub Provenance (SLSA attestation) verifier.
Package backend provides the GitHub Provenance (SLSA attestation) verifier.
cli/output
Package output provides CLI output formatting capabilities including progress indicators, JSON output, and color-coded output.
Package output provides CLI output formatting capabilities including progress indicators, JSON output, and color-coded output.
config
Package config provides configuration management for UniRTM.
Package config provides configuration management for UniRTM.
lockfile
Package lockfile implements the unirtm.lock file format — a multi-platform snapshot of resolved tool versions, download URLs, and checksums.
Package lockfile implements the unirtm.lock file format — a multi-platform snapshot of resolved tool versions, download URLs, and checksums.
service
Package service provides high-level business logic for UniRTM operations.
Package service provides high-level business logic for UniRTM operations.
task
Package task provides multi-modal task routing and execution.
Package task provides multi-modal task routing and execution.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL