thing

Publica lo que tu agente acaba de construir en un enlace duradero, con versiones inmutables, un diff entre cualquiera de ellas y comentarios en la propia página.

Documentación

@unravel-tech/thing

CLI para thing: publica, versiona y comparte artefactos (páginas HTML, documentos Markdown, imágenes independientes y PDFs) desde agentes de codificación.

npx -y @unravel-tech/thing push report.html

Ese primer push abre la aprobación en el navegador, espera el inicio de sesión, luego se reanuda e imprime la URL duradera. Markdown, imágenes y PDFs funcionan de la misma manera. Instálalo globalmente si lo usas con frecuencia: npm i -g @unravel-tech/thing.

Comandos

ComandoQué hace
thing --version / thing versionMuestra la versión del CLI instalado
thing update [--force] [--manager npm|bun]Instala la última versión globalmente; --force se ejecuta incluso cuando el servidor reporta esta versión como actual
thing login [--server url] [--no-browser]Inicio de sesión explícito con código de dispositivo; abre la aprobación en el navegador y almacena un token
thing logout / thing whoamiLimpia / muestra la identidad actual y dónde aterrizan los pushes
thing default [team] [--clear]Muestra o establece tu destino de push predeterminado del lado del servidor (se usa cuando no se proporciona --team, desde cualquier máquina)
thing use <team> [project]Establece una anulación local de equipo/proyecto activo para esta máquina
thing push <file.html|.md|.pdf|.png|.jpg|.gif|.webp> [--name x] [--team t] [--project p] [--visibility v]Autentica si es necesario, luego publica una nueva versión inmutable e imprime la URL servida
thing listLista los artefactos que puedes ver
thing versions <name>Historial de versiones de un artefacto
thing rollback <name> <n>Apunta la última versión de nuevo a la versión n
thing open <name>Abre el artefacto en un navegador
thing mcpEjecuta un servidor de Protocolo de Contexto de Modelo sobre stdio (herramientas: server_info, push_artifact, list_artifacts, whoami)

Cada comando acepta --json para salida legible por máquina. Un push --json no autenticado emite el estado de autenticación delimitado por nuevas líneas; el objeto JSON final es siempre el resultado del push. Usa --no-login para fallar rápidamente en lugar de iniciar la autenticación interactiva, como en CI.

Valores de visibilidad: private, team, anyone-with-link (imprime una URL de compartir con token), public.

Actualizaciones

Thing admite actualizaciones informativas y obligatorias publicadas por el servidor de Thing. Una actualización informativa imprime un aviso con límite de frecuencia a stderr pero permite que el comando continúe. Una actualización obligatoria detiene los comandos normales con código de salida 3 mientras mantiene disponibles --help, --version y update. --json devuelve un error estructurado CLIENT_UPDATE_REQUIRED.

El CLI verifica como máximo una vez por hora y muestra el mismo aviso como máximo una vez por día. Establece THING_NO_UPDATE_NOTICES=1 para ocultar los avisos informativos; las actualizaciones obligatorias no se pueden suprimir. thing update --force reinstala la última versión incluso cuando la versión actual aún es compatible.

Las sesiones MCP exponen la versión instalada a través del apretón de manos de inicialización y la herramienta server_info. Las actualizaciones informativas aparecen en las instrucciones de MCP, una notificación de registro y el primer resultado de herramienta de negocio. Las actualizaciones obligatorias dejan server_info disponible pero detienen las herramientas de artefactos hasta que Thing se actualice y el cliente MCP se reinicie.

El endpoint correspondiente del servidor de Thing y el middleware de aplicación se especifican en THING_SERVER_UPDATE_POLICY.md.

Resolución de contexto

En qué equipo aterriza un push se decide en orden: bandera --team.thing.json en el directorio de trabajo → una anulación local thing use → tu predeterminado del lado del servidor (thing default) → tu espacio personal. El inicio de sesión ya no fija un equipo, así que sin ninguna de las anulaciones establecidas, el servidor elige tu predeterminado (por ejemplo, la organización Unravel para miembros de Unravel).

MCP

Claude Code, Cursor, Codex y cualquier otra cosa que hable Protocolo de Contexto de Modelo pueden publicar a través de thing. No se necesita inicio de sesión en terminal: crea un token en usething.ai en Configuración, luego Tokens, y pega esto en la configuración MCP de tu cliente.

{
  "mcpServers": {
    "thing": {
      "command": "npx",
      "args": ["-y", "@unravel-tech/thing@latest", "mcp"],
      "env": { "THING_TOKEN": "paste-your-token-here" }
    }
  }
}

En una máquina que tiene Bun pero no Node, intercambia npx por bunx:

{
  "mcpServers": {
    "thing": {
      "command": "bunx",
      "args": ["-y", "@unravel-tech/thing@latest", "mcp"],
      "env": { "THING_TOKEN": "paste-your-token-here" }
    }
  }
}

El servidor expone cuatro herramientas: server_info para la versión instalada y el estado de actualización, push_artifact para publicar un archivo o contenido en línea y obtener un enlace, list_artifacts para ver lo que tienes, y whoami para verificar qué cuenta y equipo estás usando para publicar.

Si ya ejecutaste thing login, la credencial almacenada se usa y THING_TOKEN se puede omitir.

Entornos de ejecución

Node >= 18 o Bun, sin dependencias de ejecución. El ejecutable thing se lanza bajo cualquiera de los dos que esté en tu PATH (Node primero), así que una instalación global funciona en una máquina que nunca ha instalado Node:

bun i -g @unravel-tech/thing
thing login