thing

Publique o que seu agente acabou de construir em um link durável, com versões imutáveis, um diff entre quaisquer duas e comentários na própria página.

Documentação

@unravel-tech/thing

CLI para thing: envie, versione e compartilhe artefatos (páginas HTML, documentos Markdown, imagens independentes e PDFs) a partir de agentes de codificação.

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

Esse primeiro envio abre a aprovação no navegador, aguarda o login e, em seguida, retoma e imprime a URL durável. Markdown, imagens e PDFs funcionam da mesma forma. Instale globalmente se você usa com frequência: npm i -g @unravel-tech/thing.

Comandos

ComandoO que faz
thing --version / thing versionMostra a versão da CLI instalada
thing update [--force] [--manager npm|bun]Instala a versão mais recente globalmente; --force executa mesmo quando o servidor informa que esta versão é a atual
thing login [--account name] [--server url] [--no-browser]Adiciona ou atualiza uma conta nomeada com login por código de dispositivo; o nome padrão é o e-mail autenticado
thing accountsLista as contas salvas e mostra qual delas este diretório resolve
thing switch <account> [--local]Altera o padrão global da conta ou vincula uma conta ao repositório Git/diretório de trabalho atual
thing switch --clear-localRemove o vínculo de conta herdado pelo diretório atual
thing logout [--account name] [--all] / thing whoamiRemove as credenciais salvas / mostra a identidade resolvida e para onde os envios vão
thing default [team] [--clear]Mostra ou define seu destino de envio padrão no servidor (usado quando nenhum --team é fornecido, de qualquer máquina)
thing setup claude [--remove] [--dry-run]Permite que o modo automático do Claude Code publique no thing sem recusas: adiciona usething.ai e thing push às entradas de confiança do autoMode em ~/.claude/settings.json, mantendo os padrões do Claude Code. Execute você mesmo (no Claude Code, digite ! npx -y @unravel-tech/thing@latest setup claude); --remove desfaz
thing use <team> [project]Define uma substituição local de equipe/projeto ativo para esta máquina
thing push <file.html|.md|.pdf|.png|.jpg|.gif|.webp> [--name x] [--team t] [--project p] [--visibility v] [--password p]Autentica se necessário e, em seguida, envia uma nova versão imutável e imprime a URL servida. --visibility é private (somente você e as pessoas que você adicionar), team (todos na organização, o padrão) ou public (qualquer pessoa com o link). --password permite que qualquer pessoa que o conheça abra o artefato além do acesso de equipe e pessoas
thing listLista os artefatos que você pode ver; filtre com --label ou --search, ordene com --sort created ou updated e --order asc ou desc, pagine com --limit e --offset
thing comments <name>Puxa comentários e respostas de um artefato visível
thing versions <name>Histórico de versões de um artefato
thing rollback <name> <n>Aponta o "latest" de volta para a versão n
thing open <name>Abre o artefato em um navegador
thing mcpExecuta um servidor Model Context Protocol via stdio (ferramentas: server_info, push_artifact, list_artifacts, list_artifact_comments, whoami)

Todo comando aceita --json para saída legível por máquina. Comandos autenticados também aceitam --account name para usar uma conta salva uma única vez sem alterar o padrão global ou um vínculo de diretório. Um push --json não autenticado emite o status de autenticação separado por novas linhas; o objeto JSON final é sempre o resultado do envio. Use --no-login para falhar rapidamente em vez de iniciar a autenticação interativa, como em CI.

Valores de visibilidade: private, team, anyone-with-link (imprime uma URL de compartilhamento com token), public.

Atualizações

O Thing suporta atualizações consultivas e obrigatórias publicadas pelo servidor Thing. Uma atualização consultiva imprime um aviso com limite de frequência no stderr, mas permite que o comando continue. Uma atualização obrigatória interrompe comandos normais com código de saída 3, mantendo --help, --version e update disponíveis. --json retorna um erro estruturado CLIENT_UPDATE_REQUIRED.

A CLI verifica no máximo uma vez por hora e mostra o mesmo aviso no máximo uma vez por dia. Defina THING_NO_UPDATE_NOTICES=1 para ocultar avisos consultivos; atualizações obrigatórias não podem ser suprimidas. thing update --force reinstala a versão mais recente mesmo quando a versão atual ainda é suportada.

Sessões MCP expõem a versão instalada por meio do handshake de inicialização e da ferramenta server_info. Atualizações consultivas aparecem nas instruções MCP, em uma notificação de log e no primeiro resultado de ferramenta de negócios. Atualizações obrigatórias deixam server_info disponível, mas interrompem as ferramentas de artefato até que o Thing seja atualizado e o cliente MCP seja reiniciado.

O endpoint correspondente do servidor Thing e o middleware de aplicação são especificados em THING_SERVER_UPDATE_POLICY.md.

Resolução de contexto

Contas

O Thing pode manter vários logins em uma única máquina. Dê nomes curtos às contas quando você as adicionar, liste-as e alterne o padrão global:

thing login --account work
thing login --account personal
thing accounts
thing switch work

Para associar o repositório atual a uma conta, execute:

thing switch work --local

Dentro de um repositório Git, isso vincula sua raiz e todos os diretórios abaixo dela. Fora do Git, vincula o diretório de trabalho atual e seus descendentes. O vínculo é armazenado na sua configuração de usuário—não em .thing.json—para que nomes de conta pessoais e credenciais nunca se tornem alterações no repositório. Um vínculo local tem prioridade sobre o padrão global; --account personal tem prioridade sobre ambos para um único comando. Use thing switch --clear-local para remover o vínculo.

Arquivos de configuração existentes de login único migram automaticamente para uma conta chamada default. Novos logins sem --account usam o endereço de e-mail autenticado como nome da conta.

A seleção de conta é resolvida nesta ordem: --account → o vínculo mais próximo de repositório/diretório → a seleção global thing switch → a única conta salva. THING_TOKEN e THING_SERVER ainda substituem as credenciais armazenadas para configurações de CI e MCP.

Equipe e projeto

Em qual equipe um envio é publicado é decidido nesta ordem: flag --team → .thing.json no diretório de trabalho → uma substituição local thing use → seu padrão no servidor (thing default) → seu espaço pessoal. O login não fixa mais uma equipe, então, sem nenhuma das substituições definidas, o servidor escolhe seu padrão (por exemplo, a organização Unravel para membros da Unravel).

MCP

Claude Code, Cursor, Codex e qualquer outra coisa que fale Model Context Protocol podem publicar por meio do thing. Sem necessidade de login no terminal: crie um token em usething.ai em Configurações, depois Tokens, e cole isto na configuração MCP do seu cliente.

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

Em uma máquina que tenha Bun, mas não Node, troque npx por bunx:

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

O servidor expõe quatro ferramentas: server_info para a versão instalada e status de atualização, push_artifact para publicar um arquivo ou conteúdo inline e obter de volta um link, list_artifacts para ver o que você tem e whoami para verificar em qual conta e equipe você está enviando.

Se você já executou thing login, a credencial armazenada é usada e THING_TOKEN pode ser omitido.

Runtimes

Node >= 18 ou Bun, sem dependências de runtime. O executável thing é iniciado sob qualquer um dos dois que estiver no seu PATH (Node primeiro), então uma instalação global funciona em uma máquina que nunca instalou Node:

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