En este módulo aprenderás:
- Descubre backends aqua, ubi, vfox, asdf y crea tus propios plugins en mise para cualquier binario.
- Comandos y configuraciones clave para 09. Backends Locos y Plugins Propios
- Ejercicios prácticos listos para probar en tu terminal local
Habla causa: Más allá de Node y Python con Backends Avanzados
Habla causita, si pensabas que mise solo servía para instalar Node, Python y Go, te estás perdiendo la mitad de la fiesta. Mientras otros están renegando gratis compilando herramientas a mano o metiendo scripts raros a su ~/.local/bin, en mise puedes jalar cualquier binario de GitHub o registro global usando sus backends políglotas.
En tu chamba diaria no solo necesitas lenguajes; necesitas CLIs de infraestructura, linters, herramientas de formateo y utilidades que normalmente instalas con brew, apt o compilando en tu jato.
1. El Universo de Backends en mise
mise cuenta con un sistema modular que sabe cómo descargar binarios de múltiples orígenes sin que tengas que configurar nada extra:
| Backend | Prefijo | Ejemplo de Uso | ¿Cuándo usarlo, mano? |
|---|---|---|---|
| Core | core: o directo |
mise use node@24 |
Lenguajes soportados nativamente en Rust |
| Aqua | aqua: |
mise use aqua:cli/cli |
Binarios multiplataforma empaquetados por el registro Aqua |
| UBI (Universal Binary Installer) | ubi: |
mise use ubi:astral-sh/ruff |
Descarga directa de releases de GitHub sin intermediarios |
| vfox | vfox: |
mise use vfox:version-fox/vfox-nodejs |
Plugins del ecosistema Version Fox |
| asdf | asdf: |
mise use asdf:owner/repo |
Los miles de plugins heredados de la comunidad asdf |
| Cargo / npm / Go / pipx | cargo:, npm:, go:, pipx: |
mise use npm:prettier |
Paquetes de gestores de dependencias |
2. Backends en Acción: Aqua y UBI
¿Quieres instalar el CLI de GitHub (gh) o el linter ultrarrápido de Python (ruff) sin tocar apt, brew ni ensuciar tu sistema operativo? Jálalos de frente:
# Usando el backend de Aqua
mise use aqua:cli/cli@latest
# Usando el backend UBI (descarga binarios de GitHub releases al instante)
mise use ubi:astral-sh/ruff@latest
mise use ubi:BurntSushi/ripgrep@latest
En tu mise.toml queda así de limpio, bacán y versionado:
[tools]
node = "24.15.0"
"aqua:cli/cli" = "2.65.0"
"ubi:astral-sh/ruff" = "0.9.6"
"ubi:jesseduffield/lazygit" = "0.44.1"
"npm:typescript" = "5.7.3"
Tip de Oro: UBI es la salvación para CI/CD
Con el backend ubi: no dependes de que alguien mantenga un plugin de asdf desactualizado. Si el proyecto publica binarios en GitHub Releases (como Ruff, Lazygit o Fzf), mise lo descarga, descomprime y mete al PATH en 200 milisegundos.
3. Creando tus Propios Plugins para mise
¿Tu empresa tiene un binario interno o una herramienta privada que no está en ningún registro público? Puedes crear tu propio plugin compatible con la especificación de mise / asdf.
La estructura estándar de un plugin consta de una carpeta con tres scripts ejecutables en bash:
mi-plugin-mise/
├── bin/
│ ├── list-all # Lista las versiones disponibles
│ ├── download # Descarga el archivo comprimido (tar.gz/zip)
│ └── install # Extrae y coloca el binario en la carpeta destino
└── metadata.lua # (Opcional) Metadatos rápidos
Script 1: bin/list-all
Debe imprimir una lista de versiones separadas por espacios o saltos de línea:
#!/usr/bin/env bash
set -euo pipefail
# Ejemplo: obtener tags de tu repo privado o API
echo "1.0.0"
echo "1.1.0"
echo "2.0.0"
Script 2: bin/download
Recibe $MISE_DOWNLOAD_PATH y $MISE_INSTALL_VERSION:
#!/usr/bin/env bash
set -euo pipefail
VERSION="$MISE_INSTALL_VERSION"
DEST="$MISE_DOWNLOAD_PATH"
OS="$(uname -s | tr '[:upper:]' '[:lower:]')"
ARCH="$(uname -m)"
if [ "$ARCH" = "x86_64" ]; then ARCH="amd64"; fi
if [ "$ARCH" = "aarch64" ]; then ARCH="arm64"; fi
URL="https://mi-empresa.pe/releases/v${VERSION}/mi-cli-${OS}-${ARCH}.tar.gz"
mkdir -p "$DEST"
curl -sSL "$URL" -o "$DEST/archive.tar.gz"
tar -xzf "$DEST/archive.tar.gz" -C "$DEST"
rm "$DEST/archive.tar.gz"
Script 3: bin/install
Recibe $MISE_INSTALL_PATH:
#!/usr/bin/env bash
set -euo pipefail
mkdir -p "$MISE_INSTALL_PATH/bin"
cp "$MISE_DOWNLOAD_PATH/mi-cli" "$MISE_INSTALL_PATH/bin/mi-cli"
chmod +x "$MISE_INSTALL_PATH/bin/mi-cli"
Para usar tu plugin local o desde un repositorio privado de Git:
# Registrar tu plugin custom
mise plugins install mi-cli https://github.com/mi-empresa/mise-mi-cli.git
# O instalarlo directamente en tu mise.toml
mise use asdf:mi-cli@1.1.0
Cuidado con la feria patronal de scripts
No inventes scripts lentazos con bucles infinitos en bin/list-all. Recuerda que mise los ejecuta para resolver autocompletado y validación de versiones. Mantenlos atómicos y en Rust o Bash optimizado.
Reto Ninja de la Lección 🥷
Demuestra que dominas los Backends y Plugins de mise respondiendo este test rápido:
¿Qué backend de mise te permite descargar binarios directamente desde GitHub Releases sin intermediarios?
Ejercicio Práctico Ninja 🥷
- Instala el CLI de GitHub usando el backend de Aqua:
mise use aqua:cli/cli@latest - Instala el formateador de Python Ruff con el backend UBI:
mise use ubi:astral-sh/ruff@latest - Verifica que ambos binarios funcionen de frente sin reiniciar tu terminal:
gh --version && ruff --version - Revisa cómo tu
mise.tomlahora gestiona herramientas sin importar de dónde provengan. ¡Un golazo para tu chamba!
¿Terminaste esta lección?
Marca tu progreso para sincronizar el avance en tu navegador.