Workflows em YAML no Buzz: quais gatilhos existem e para que servem?

Os workflows do Buzz são arquivos YAML com escopo de canal: o gatilho define QUANDO a automação roda e uma lista linear de passos define o que acontece. São cinco gatilhos disponíveis: message_posted, reaction_added, diff_posted, schedule e webhook. As ações vêm de um conjunto fixo (send_message, send_dm, set_channel_topic, add_reaction, call_webhook, request_approval e delay) e os filtros são avaliados com evalexpr. O README lista mensagem, reação, agendamento e webhook como funcionando, e classifica os approval gates como ‘being wired up’, ou seja, a aprovação humana ainda é o pedaço em construção 🙂
Automação que mora em arquivo é automação que dá pra ler, revisar e versionar junto do resto do projeto
E é exatamente essa a aposta do Buzz: o workflow não é um fluxograma arrastado na tela, é um YAML com escopo de canal
O Buzz é uma plataforma de colaboração open source criada pela Block, empresa de Jack Dorsey, onde humanos e agentes de IA trabalham no mesmo espaço
Ele foi anunciado em 21 de julho de 2026, ainda em beta inicial, com licença Apache-2.0 e código aberto em github.com/block/buzz
Neste post o foco é um pedaço específico: quais gatilhos existem nos workflows do Buzz e pra que cada um serve na prática
Formação Claude Code
Domine Claude Code do absoluto zero até o avançado
- 116 aulas
- 4 projetos
- 9h 23min
O que é um workflow em YAML no Buzz e onde ele vive
Um workflow no Buzz é um arquivo YAML com escopo de canal
Ou seja: ele não paira sobre o espaço todo, ele pertence a um canal e reage ao que acontece ali dentro
A estrutura é bem direta: um gatilho define quando aquilo dispara, e uma lista LINEAR de passos define o que acontece depois
Nada de ramificação maluca, é de cima pra baixo
E os passos não são livres, saem de um conjunto fixo de ações:
send_messagesend_dmset_channel_topicadd_reactioncall_webhookrequest_approvaldelay
Se você conhece automação de repositório, é um raciocínio parecido: arquivo declarado, evento que dispara, passos que rodam
E quem executa isso?
A automação YAML é provida pelo crate `buzz-workflow`
Ele usa o evalexpr pra avaliar as condições dos filtros, aquelas expressõezinhas que decidem se o gatilho realmente vale pra aquele evento ou não
Por que cada passo sai assinado:
Esse detalhe é dos mais massa do projeto
O Buzz roda sobre o protocolo Nostr e cada participante, humano ou agente, tem o próprio par de chaves criptográficas
Cada um assina os eventos que produz
Então quando um agente age dentro de um canal, aquilo carrega identidade, não é um robô anônimo postando em nome de ninguém
Os cinco gatilhos lado a lado: o que dispara cada um
Muita gente cita quatro gatilhos (mensagem, reação, agendamento e webhook), mas são CINCO no total
Segue a visão completa:
| Gatilho | Quando roda | Filtro aceito |
|---|---|---|
message_posted |
Quando uma mensagem é postada no canal do workflow | Opcional, em evalexpr, por exemplo str_contains(trigger_text, 'ship it') |
reaction_added |
Quando alguém adiciona uma reação | Opcional, por emoji; omitir o filtro faz casar qualquer reação |
diff_posted |
Quando um diff de código é postado no canal | Opcional, em evalexpr |
schedule |
Por expressão cron ou por intervalo simples | Intervalo simples do tipo 1h ou 30m |
webhook |
Quando uma requisição autenticada chega na URL de webhook daquele workflow | A URL e o secret são gerados pelo Buzz no momento da criação do workflow |
Repare no padrão: os gatilhos de conteúdo (mensagem e diff) filtram por expressão, o de reação filtra por emoji, e os outros dois vêm de fora do canal (relógio e requisição HTTP)
Para que serve cada gatilho na prática
Gatilho sem caso de uso é só nome de campo, né? Bora aterrissar cada um
message_posted: palavra-chave vira comando
Esse é o mais óbvio e o mais usado
O time conversa normal no canal e uma expressão específica dispara a automação
O filtro str_contains(trigger_text, 'ship it') é o exemplo clássico: a automação só acorda quando aquela frase aparece, e não a cada mensagem solta do canal
Sem filtro, todo mundo dando bom dia vira execução de workflow 😛
reaction_added: o dedão como confirmação
A reação é o jeito mais barato de um humano dizer "ok, pode seguir" sem escrever nada
Dá pra filtrar por emoji específico, então o 👍 tem um efeito e o 🚀 tem outro
E se você omitir o filtro, qualquer reação casa
Tome cuidado com isso: sem filtro, um emoji de risada em cima da mensagem errada também dispara o fluxo
diff_posted: código chegando no canal
Esse é o gatilho que amarra conversa com mudança de código
Quando um diff é postado no canal, o workflow acorda, e o filtro em evalexpr permite reagir só a um recorte do que chegou
É o caminho natural pra rotinas que acompanham o que o time (ou o agente) está mudando
schedule: rotina no relógio
Aqui não tem evento nenhum no canal, é o tempo passando
Dá pra usar expressão cron, quando você quer precisão de horário e dia, ou um intervalo simples tipo 1h e 30m, quando você só quer que aquilo rode de tempos em tempos
Resumo do canal, lembrete recorrente, checagem periódica: tudo mora aqui
webhook: o mundo de fora batendo na porta
O Buzz gera uma URL de webhook e um secret no momento em que o workflow é criado
Quando uma requisição autenticada chega nessa URL, o workflow roda
É a ponte com o resto da sua stack: qualquer sistema que saiba fazer um POST consegue acender uma automação dentro do canal
O exemplo que a Block usa pra explicar tudo isso
A própria Block descreveu o cenário que amarra a ideia toda, no anúncio oficial do Buzz
Depois de uma tag de release, um agente lê os PRs mergeados dos canais do projeto
Ele rascunha as release notes
Posta no canal pra revisão humana
Aguarda o 👍
E só ENTÃO publica, com cada passo assinado
Olha como o desenho fecha: um evento inicia, o agente produz, a reação humana libera, e a assinatura deixa rastro de quem fez o quê
O que já funciona e o que ainda está sendo ligado
Agora a parte honesta, porque o Buzz está em beta e isso aparece
O README lista mensagem, reação, agendamento e webhook como funcionando
Mas classifica os approval gates como "being wired up": a infraestrutura existe, a integração ainda não foi concluída
Essa correção entrou na tabela de status do README em 03/08/2026
E olha um detalhe que é fácil passar batido: o diff_posted NÃO aparece nessa lista de status
Ele está documentado como gatilho, isso é certo, mas o README não carimba ele como funcionando junto dos outros quatro, e o motivo dessa ausência não está declarado ali
Ou seja: se o seu fluxo depende do diff_posted, testa ele antes de apostar tudo
As pedras conhecidas hoje:
- Issue #2878: a sintaxe
from:documentada prorequest_approvalé rejeitada no momento da aprovação, e a única sintaxe que funciona acaba aceitando qualquer chave da comunidade - Issue #2981: workflow não escopa pra todos os canais, então capturar reações exige uma cópia do workflow POR canal
- Não existe ação nativa que invoque um agente com um prompt:
invoke_agenté uma proposta em issue aberta (#2702), o conjunto de ações atual não inclui isso
E aí vem a pergunta que interessa: dá pra montar o fluxo de release notes hoje?
A parte de disparo está de pé nos quatro gatilhos que o README dá como funcionando, e o motor de condição também
O pedaço frágil é justamente o portão humano no fim: com os approval gates ainda sendo ligados e o bug do from: em aberto, o "só publica depois do aprovado" é o ponto que merece o seu ceticismo antes de virar produção
Quem quiser brincar agora, brinque sabendo disso
Vídeo: como organizar workflows
Pra começar do zero com o assunto e pegar o raciocínio de organizar automações antes de sair declarando arquivo, este vídeo do canal serve bem de porta de entrada:
Conclusão
A leitura dos workflows do Buzz cabe em uma frase: o gatilho define QUANDO, a lista de passos define O QUÊ, e cada passo sai assinado por causa do Nostr
São cinco gatilhos (message_posted, reaction_added, diff_posted, schedule e webhook), um conjunto fixo de ações e o evalexpr decidindo os filtros
A aprovação humana é o pedaço ainda em construção, e vale acompanhar
Próximo passo concreto? Rodar sua própria instância e olhar de perto
A versão hospedada em buzz.xyz e o self-hosting são gratuitos, sem nenhum plano pago, limite de uso ou preço enterprise publicado até 03/08/2026
Pra deploy próprio, o README passou a apontar um bundle oficial de Docker Compose em 01/08/2026, e a Block publicou um deploy one-click no Railway em 02/08/2026
E se você curte mexer via terminal, dá uma olhada na `buzz-cli`, em `crates/buzz-cli`: é a CLI agent-first do relay, com JSON de entrada e JSON de saída, pensada pra chamada de ferramenta de LLM
até o próximo post! 😀
Perguntas frequentes
Quantos gatilhos de workflow o Buzz suporta hoje?
São cinco: message_posted, reaction_added, diff_posted, schedule e webhook. Muita gente só cita quatro (mensagem, reação, agendamento e webhook) e esquece do diff_posted, que dispara quando um diff de código é postado no canal.
Dá pra disparar um workflow só quando alguém reage com um emoji específico?
Dá sim. O gatilho reaction_added aceita um filtro opcional por emoji, então o 👍 pode acionar um passo e o 🚀 outro completamente diferente. Se você não colocar filtro nenhum, qualquer reação casa e dispara o workflow.
Existe algum jeito de o Buzz chamar um agente de IA direto dentro de um workflow?
Ainda não. Hoje o conjunto de ações é fixo: send_message, send_dm, set_channel_topic, add_reaction, call_webhook, request_approval e delay, sem nenhuma ação nativa de invocar agente. Uma ação invoke_agent existe só como proposta na issue #2702, aberta no repositório block/buzz.
O approval gate (request_approval) já funciona de verdade no Buzz?
Ainda não por completo. O README classifica os approval gates como ‘being wired up’, ou seja, a infraestrutura existe mas a integração não foi concluída, correção que entrou na tabela de status do README em 03/08/2026. Além disso, a issue #2878 registra que a sintaxe from: documentada é rejeitada no momento da aprovação, e só funciona uma sintaxe que aceita qualquer chave da comunidade.
O gatilho diff_posted já aparece como funcionando no README do Buzz?
Ele está documentado como um dos cinco gatilhos, mas a lista de status do README nomeia mensagem, reação, agendamento e webhook como funcionando e não cita o diff_posted. Como o README não explica essa ausência, o mais seguro é testar o diff_posted antes de montar um fluxo inteiro em cima dele.
Dá pra usar o mesmo workflow YAML em vários canais do Buzz ao mesmo tempo?
Não do jeito que existe hoje. A issue #2981 registra que workflows não podem ser escopados para todos os canais, então capturar reações ou mensagens em mais de um canal exige criar uma cópia do workflow por canal.
Qual a diferença entre usar cron e usar um intervalo simples no gatilho schedule?
O gatilho schedule roda por expressão cron quando você precisa de precisão de horário e dia da semana. Pra rotinas mais soltas, dá pra usar um intervalo simples como 1h ou 30m, sem escrever expressão cron nenhuma.
Formações
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Blog | Mais populares
Buzz vale a pena para o seu time? O que a plataforma da Block entrega e quem realmente ganha
Buzz é o workspace open source e gratuito da Block, com humanos e agentes de IA juntos. Veja o que entrega, quem ganha e os limites antes de hospedar.
O que é o Buzz? O workspace open source onde humanos e agentes de IA dividem a mesma sala
O Buzz é o workspace open source da Block onde humanos e agentes de IA trabalham juntos: canais, git, voz e audit log no mesmo lugar. Veja como funciona.
buzz-cli e harness ACP: como o Buzz conversa com Claude Code, Codex e Goose?
O buzz-cli é a CLI agent-first do Buzz que conecta Claude Code, Codex e Goose via protocolo ACP aberto. Veja como funciona essa ponte de agentes locais.
