Ir para o conteúdo
Trama

Instalar o core

O que o comando faz, o que dá para mudar nele e como tirar o core da máquina. Conferido no instalador publicado e no código da 0.5.0.

curl -fsSL https://downloads.trama.sh/bootstrap.sh | sh

O que o comando faz, em ordem

  1. Confere o sistema: Linux ou macOS, x86_64 ou arm64. Qualquer outro é recusado pelo nome, antes de baixar qualquer coisa.
  2. Confere se a máquina tem curl ou wget, e minisign. A falta de cada um é recusada com o comando que instala.
  3. Mostra a chave pública que ele traz embutida. Compare com a da página inicial, que chega até você por outro caminho.
  4. Baixa o install.sh e a assinatura dele, e confere. Uma assinatura que não confere para tudo, sem nova tentativa.
  5. Baixa o tramad da sua plataforma e a assinatura dele, e confere. Até aqui nada foi escrito fora de uma pasta temporária, que é apagada em qualquer saída — inclusive numa recusa.
  6. Põe o binário em ~/.local/bin/tramad e o texto da licença ao lado, em tramad.LICENSE.
  7. Registra o core como serviço do usuário — systemd no Linux, launchd no macOS — e só diz que instalou depois de ver o serviço rodando.
  8. Se ~/.local/bin não estiver no PATH, imprime a linha que o põe lá — não edita o seu ~/.profile por você. Ele nunca pede senha.

Toda recusa tem duas linhas: o que está errado, e o que fazer (fix). Uma assinatura que não confere não é falha de download para tentar de novo: pare e nos avise, com a versão e a plataforma.

Opções

Três variáveis de ambiente e uma opção. Sem nenhuma, o instalador põe a versão mais recente em ~/.local/bin.

NomePadrãoO que muda
TRAMA_VERSIONlatestUma versão publicada, como 0.5.0, em vez da mais recente.
TRAMA_PREFIX~/.local/binOnde ficam o binário e a licença. A pasta é criada se não existir.
TRAMA_FORCEnoCom yes, substitui um tramad que já esteja no destino e não veio de uma release publicada — um compilado do código, por exemplo. Sem ele, o instalador para em vez de sobrescrever, porque o que estava lá não tem volta.
--work-root <pasta>work, dentro da pasta de dados do coreOnde o core clona os repositórios dos projetos. Veja abaixo.

As variáveis vão antes do sh; a opção, depois de sh -s --:

curl -fsSL https://downloads.trama.sh/bootstrap.sh | TRAMA_VERSION=0.5.0 shcurl -fsSL https://downloads.trama.sh/bootstrap.sh | sh -s -- --work-root /srv/trama/work

Onde o core clona os repositórios

Num servidor, você costuma querer os repositórios num disco de dados ou numa pasta do usuário que faz o deploy. O core confere a pasta antes de registrar o serviço, e para dizendo qual pasta e por quê se ela:

  • não for um caminho absoluto;
  • não puder ser criada, ou for um arquivo;
  • não aceitar escrita — o core escreve um arquivo lá e o apaga, porque permissão não diz nada de um disco cheio ou montado só para leitura;
  • ficar dentro da pasta de credenciais ou de configuração do core.

Cada projeto ganha a sua cópia em <pasta>/<cliente>/<projeto>-<hash>. O hash vem da identidade do projeto, então dois projetos com o mesmo nome nunca dividem uma cópia. Uma opção que o instalador não conhece é recusada, e não ignorada.

Depois de instalar

Com ~/.local/bin no PATH. Sem ele, use o caminho inteiro, ~/.local/bin/tramad.

tramad health
O estado do core, no formato que o painel lê.
tramad service status
Se o serviço está instalado, rodando, ou se não dá para saber — que é uma terceira resposta, e não um silêncio.
tramad service log --lines 200
As últimas linhas do log, dizendo de onde vieram.
tramad service restart
Para e sobe de novo. Também há stop e start.

A instalação não agenda backup. tramad backup run faz um na hora, e tramad backup schedule imprime o agendamento desta máquina para você instalar; os backups automáticos começam quando ele estiver instalado.

Lembre o que o core precisa para trabalhar, além do que o instalador confere: o Claude Code autenticado na máquina e, no Linux, bubblewrap. Para o serviço continuar rodando sem sessão aberta no Linux, um administrador precisa rodar loginctl enable-linger para o seu usuário.

Desinstalar

Primeiro o serviço, que o próprio core sabe tirar — ele para o processo e apaga o registro (a unit do systemd ou o plist do launchd). Depois o binário e a licença:

tramad service uninstallrm ~/.local/bin/tramad ~/.local/bin/tramad.LICENSE

O que fica

Os dados do core não são apagados: o banco, as credenciais, os decisores, os backups, se houver, e — sem --work-root — as cópias dos repositórios. Nos caminhos padrão:

Linux

  • ~/.local/share/trama
  • ~/.config/trama
  • ~/.local/state/trama
  • ~/.cache/trama

macOS

  • ~/Library/Application Support/trama
  • ~/Library/Logs/trama
  • ~/Library/Caches/trama

No Linux, XDG_DATA_HOME, XDG_CONFIG_HOME e XDG_STATE_HOME mudam esses lugares, se estiverem definidas. Com --work-root, as cópias estão na pasta que você escolheu.

Apagar essas pastas apaga o banco, as credenciais e os backups, e não tem volta. Uma cópia de repositório pode guardar trabalho que nenhum turno entregou: olhe antes de apagar.

Atualizar

Não use o tramad update na 0.5.0, mesmo que ele apareça no tramad --help: o binário publicado saiu sem a chave com que ele confere a versão nova, e ele recusa antes de trocar qualquer coisa. Não é defeito da sua instalação. O caminho de atualização está sendo corrigido para a próxima versão, e entra aqui quando tiver sido provado numa máquina.

O que há na 0.5.0

A versão que o comando instala hoje. Das notas da release, para quem usa.

Um core, vários projetos
Cada projeto com o seu board, repositório, agentes, agendas e cliente. Um core com a configuração antiga continua lendo-a como está.
Coluna de entrada
O projeto pode nomear a coluna que admite trabalho, e só os cards que uma pessoa moveu para lá são trabalhados. Cada card que ficou de fora diz por quê.
Onde clonar é escolha sua
--work-root na instalação, e cada projeto com a sua cópia.
Agendas e loops por cliente
Configurados uma vez, valem para todos os projetos do cliente.
Um teto para todas as tarefas
O número de tarefas ao mesmo tempo conta todo tipo de turno, e o painel pode ajustá-lo. Baixar o número nunca interrompe o que já está rodando.
Prompt assinado
O prompt do agente pode ser texto, assinado junto com o agente, e o core só roda um turno com o texto que um decisor assinou.
Subagentes com modelo próprio
Uma política por agente — por exemplo, o Sonnet escreve e o Opus revisa.
Modelo conferido ao assinar
Um modelo que não é do provedor do agente é recusado na hora, e não quando um turno roda.
Loops pausam e retomam
De onde pararam, no mesmo branch, com tudo o que já tinham gastado e feito.
Credencial por site
Dois Jira, ou um GitLab auto-hospedado ao lado do gitlab.com, no mesmo core.
O merge request sai da entrega
A entrega abre o merge request do commit, e o comentário no card traz o link. Ele nunca decide o veredito: quem decide é o build.
Board em português
Os comentários que o core deixa no card saem em português, se o projeto pedir; sem isso, em inglês, como antes.
Sprint e ciclo ativos
Um board do Jira pode ser trabalhado só a partir das sprints ativas, e um do Linear a partir do ciclo ativo.

Corrigido

  • O Jira Cloud voltou a ser lido: a Atlassian removeu a busca que o core usava.
  • Boards do GitHub, do GitLab e do Linear com mais de uma página são lidos até o mesmo teto do Jira, mil cards, e dizem quando param nele.
  • O core não pega de novo, a cada ciclo, um card que espera a resposta ou a aprovação de uma pessoa.
  • Um card que chegou a um veredito de build ganha um comentário dizendo qual.
  • No macOS, a saída de um turno não fica mais presa por outro processo que o core abriu no mesmo instante.