Saltar al contenido
miblo

SDK

Instala el SDK de Miblo (TypeScript y Python) y obtén un token

Instala @miblo/status o miblo-status, obtén el token con miblo sdk token, ejecuta tu primer programa y deja que Miblo lo ejecute por ti con miblo apps add.

Antes de empezar

  • Miblo 1.30.0 o más nuevo instalado en el computador (con Miblo Hub o la línea de comandos), con el comando miblo en tu terminal. Verifícalo con miblo sdk status; miblo update trae el más nuevo. Un Miblo en tu escritorio también necesita 1.30.0 o más nuevo (el computador lo actualiza).

  • Node.js 20+ para el paquete de TypeScript, o Python 3.9+ para el paquete de Python.

  • Tener un Miblo en tu escritorio es opcional. Sin ningún dispositivo emparejado todo funciona, y las acciones responden delivered: 0, que no es un error: las sesiones igual aparecen en Miblo Hub y en Miblo Remote.

Instala el paquete

Los paquetes vienen solo de miblo.ai, versión 2.3.0. No están en npm ni en PyPI: instálalos directo desde la dirección. ¿Vienes de un SDK 1.x? Instala este encima: Miblo 1.30.0 y más nuevos rechazan el 1.x (upgrade). Para actualizar un SDK 2.x, instala el paquete de nuevo desde la misma dirección; lo que trajo cada versión está en Novedades del SDK.

TypeScript / Node.js

@miblo/status: ESM, con tipos (index.d.ts), sin dependencias.

Terminal
npm install https://miblo.ai/dl/sdk/miblo-status-2.3.0.tgz

Python

miblo-status: solo biblioteca estándar.

Terminal
python3 -m venv .venv && . .venv/bin/activate   # a Python from Homebrew or a Linux distribution refuses a global pip install
pip install https://miblo.ai/dl/sdk/miblo_status-2.3.0-py3-none-any.whl

Verifica la descarga

Cada archivo tiene su firma Ed25519 al lado (el mismo nombre con .sig), hecha con la clave de las actualizaciones de Miblo (clave pública LGtuUvDA506N8iD1tolbQzWAJBb9hUerW0OH4C2pBek=), y el SHA256SUMS firmado lista todas las versiones. Primero el checksum, luego la firma (solo Node, sin otra herramienta):

Terminal
curl -fLO https://miblo.ai/dl/sdk/miblo-status-2.3.0.tgz
curl -fsSL https://miblo.ai/dl/sdk/SHA256SUMS | shasum -a 256 -c --ignore-missing
curl -fLO https://miblo.ai/dl/sdk/miblo-status-2.3.0.tgz.sig
node -e 'const c=require("crypto"),fs=require("fs"),f=process.argv[1];const k=c.createPublicKey({key:{kty:"OKP",crv:"Ed25519",x:Buffer.from("LGtuUvDA506N8iD1tolbQzWAJBb9hUerW0OH4C2pBek=","base64").toString("base64url")},format:"jwk"});console.log(c.verify(null,fs.readFileSync(f),k,Buffer.from(fs.readFileSync(f+".sig","utf8").trim(),"base64"))?"signature ok":"BAD signature")' "$(basename https://miblo.ai/dl/sdk/miblo-status-2.3.0.tgz)"

El token

La Status API está apagada hasta que crees su token. En tu propia terminal:

Terminal
export MIBLO_TOKEN=$(miblo sdk token)   # turns the API on; the token goes into the variable, not on screen

¿Prefieres no usar la terminal? En Miblo Hub → Programas (SDK) activas la API, copias el token y lo reemplazas.

  • Los paquetes leen el token de MIBLO_TOKEN (o lo reciben como parámetro: new MibloStatus({ token }), MibloStatus(token=...)). Entrégale el token a tu programa a propósito; un programa no debería ir a buscar los archivos de Miblo.

  • miblo sdk token --rotate reemplaza el token (e imprime el nuevo): quien tuviera el anterior es rechazado desde ese momento (not_authorised), y tus herramientas de IA, la CLI y Miblo Remote no se ven afectados. Los programas que Miblo ejecuta por ti (abajo) reciben el token nuevo cuando vuelven a iniciarse.

  • miblo sdk off elimina el token y apaga la API (sdk_off). miblo sdk status dice si está encendida y dónde está el archivo.

  • El puente debe estar corriendo. Tus herramientas de IA lo inician, y también miblo sdk start.

Primer programa

Diez líneas: el programa aparece como una sesión, trabaja, dice que te necesita y termina.

// first.mjs, in the folder where you ran npm install; run: node first.mjs
import { MibloStatus } from '@miblo/status';

const miblo = new MibloStatus();                          // reads MIBLO_TOKEN
const job = await miblo.session({ tool: 'first.mjs', title: 'Deploy', detail: 'building' });
await new Promise((r) => setTimeout(r, 5000));            // ...your work...
await job.needsYou('confirm the deploy');                 // Miblo alerts
await new Promise((r) => setTimeout(r, 10000));
await job.done('deployed');

Lo que pasa:

  1. session() registra la sesión Deploy en el Miblo Desk, en Miblo Hub y en Miblo Remote, con la línea first.mjs · building.

  2. needsYou() la pasa a te necesita: el Miblo Desk da la alerta de pregunta y el contador de "te necesita" sube. En Miblo Remote, la sesión aparece como Otra herramienta: first.mjs.

  3. done() la muestra como terminada, con la alerta de terminado. Cuando el proceso termina, la sesión se va sola (el paquete envía el pid de su propio proceso).

Deja que Miblo ejecute tu programa

Para un programa que está siempre encendido (una app de pantalla, un vigilante), deja que el supervisor de Miblo lo cuide. En tu propia terminal (un agente de IA no puede hacerlo por ti):

Terminal
miblo apps add "node steps.mjs" --cwd ~/code/steps --id steps
miblo apps enable steps        # starts it now and every time Miblo starts
miblo apps logs steps          # what the program printed
  • Miblo inicia el programa con MIBLO_TOKEN, MIBLO_PORT y MIBLO_APP_ID (el id de la app), más MIBLO_LANG (pt o en) y lo básico del sistema (PATH, HOME, idioma, zona horaria, proxy). Nada más de tu entorno se va con él: las claves de tu shell nunca llegan al programa.

  • Sin --id, el id sale del nombre del archivo (steps.mjs → steps); cuando ese id está tomado, Miblo agrega -2, -3... (miblo apps add imprime el id que eligió). Usa el mismo id que el programa declara en app.declare(). Sin --cwd, corre en la carpeta desde la que lo agregaste.

  • Si el programa termina, Miblo lo inicia de nuevo tras 2 s, 10 s, 30 s, 2 min y luego cada 10 min; un programa que se mantuvo encendido un minuto cuenta como sano y reinicia las esperas. Mientras una app está encendida, el puente se mantiene arriba.

  • El log conserva los últimos 256 KB, y como máximo 64 KB cada 10 segundos (el resto se descarta, con una línea que lo dice).

  • miblo apps show <id> muestra su estado y cuántas veces se reinició; miblo apps disable <id> la apaga; miblo apps remove <id> la apaga, le quita la pantalla y olvida el programa y sus ajustes.

  • miblo apps list las muestra todas (las oficiales, las tuyas y las de la comunidad). En Miblo Hub, la pestaña Apps del Desk hace lo mismo con un interruptor por app.

Empieza una app: dos caminos

Para una app de la tienda (una pantalla, o alertas que la gente activa con un clic), parte de la plantilla lista y mírala en el simulador, con o sin un Miblo en tu escritorio:

  • Con Miblo instalado: miblo apps new "My App" --page (la app del Desk de página de Miblo 1.45, la forma por defecto; sin --page la plantilla es la antigua, de tarjeta), luego miblo apps dev my-app (la pantalla en tu navegador, recargada en cada guardado) y miblo apps check my-app (las reglas de la tienda de apps del Desk).

  • Sin Miblo: descarga el starter https://miblo.ai/dl/extras/miblo-app-starter-1.46.2.zip y usa node sim.mjs new | dev | check (Node 22.15+, 23.5+ o 24+; en otro Node, apunta MIBLO_NODE a uno adecuado).

Los detalles están en Desarrollar sin un Miblo.

Cuando algo sale mal

Cada error es un MibloError con un code estable. Los que te encuentras al configurar:

codeQué significaQué hacer
upgradeEste SDK es más antiguo de lo que Miblo acepta (un SDK 1.x en Miblo 1.30.0 o más nuevo)Instala el SDK de arriba (2.3.0)
bridge_outdatedMiblo en el computador es más antiguo que este SDKmiblo update
no_tokenNo hay token en MIBLO_TOKEN ni en el parámetroexport MIBLO_TOKEN=$(miblo sdk token)
sdk_offLa API está apagada en este computadormiblo sdk token
bridge_unavailableNada responde en el puerto de Miblomiblo sdk start (o abre una herramienta de IA)
not_authorisedToken incorrecto o rotado, o un Miblo de antes de que existiera el SDKObtén el token de nuevo; actualiza Miblo
unverified_answerLa respuesta no estaba firmada por MibloAlgo tomó el puerto de Miblo: reinicia el puente
timeoutEl puente no respondió a tiempoInténtalo de nuevo; revisa miblo status

Los demás códigos están en Sesiones y estado y La pantalla de apps.