Pular para o conteúdo principal

Documentação oficial desta página · v0.20.6

SimpleX Chat

O SimpleX Chat é uma plataforma de mensagem privada e descentralizada, em que cada pessoa é dona dos próprios contatos e grupos. Diferente das outras, o SimpleX não atribui identificador de usuário persistente — cada contato é identificado por um identificador interno opaco, gerado no momento da conexão, o que faz dele um dos mensageiros mais privados que existem.

Rode hermes gateway setup e escolha SimpleX para um passo a passo guiado.

Pré-requisitos​

  • A CLI simplex-chat instalada e rodando como daemon
  • O pacote Python websockets (pip install websockets)

Instalar o simplex-chat​

Baixe a versão mais recente na página de releases do simplex-chat:

# binário para Linux e macOS
curl -L https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex-chat-ubuntu-22_04-x86_64 -o simplex-chat
chmod +x simplex-chat

O projeto SimpleX Chat não publica imagem Docker pronta do cliente; para rodar em Docker, compile a partir do repositório.

Subir o daemon​

simplex-chat -p 5225

Por padrão, o daemon escuta em WebSocket, em ws://127.0.0.1:5225.

Configurar o Hermes​

Pelo assistente​

hermes gateway setup

Escolha SimpleX Chat e siga as perguntas.

Por variáveis de ambiente​

Acrescente em ~/.hermes/.env:

SIMPLEX_WS_URL=ws://127.0.0.1:5225
SIMPLEX_ALLOWED_USERS=<id-do-contato-1>,<id-do-contato-2>
SIMPLEX_HOME_CHANNEL=<id-do-contato>
VariávelObrigatóriaDescrição
SIMPLEX_WS_URLSimURL do WebSocket do daemon
SIMPLEX_ALLOWED_USERSRecomendadaLista de permissão, separada por vírgula. Cada item pode ser um contactId numérico ou um nome de exibição — as duas formas funcionam.
SIMPLEX_ALLOW_ALL_USERSOpcionaltrue libera todos os contatos (use com cuidado)
SIMPLEX_AUTO_ACCEPTOpcionalAceita pedidos de contato automaticamente (padrão: true)
SIMPLEX_GROUP_ALLOWEDOpcionalIdentificadores de grupo em que o bot participa, separados por vírgula, ou * para qualquer grupo. Omita para ignorar mensagens de grupo por completo
SIMPLEX_HOME_CHANNELOpcionalContato ou grupo padrão, para entrega de cron
SIMPLEX_HOME_CHANNEL_NAMEOpcionalNome legível do canal principal
HERMES_SIMPLEX_TEXT_BATCH_DELAYOpcionalSegundos de silêncio (padrão: 0.8) usados para juntar mensagens de texto em sequência num evento só

Achar o identificador ou o nome do contato​

Depois de subir o daemon, abra uma conversa com o contato do agente. O contactId numérico aparece nos logs da sessão. Se preferir usar o nome de exibição que aparece na interface do SimpleX, também funciona — o SIMPLEX_ALLOWED_USERS aceita as duas formas.

Autorização​

Por padrão, todos os contatos são negados. Você precisa:

  1. Definir o SIMPLEX_ALLOWED_USERS com uma lista de contactIds e nomes de exibição, separados por vírgula (SIMPLEX_ALLOWED_USERS=4,alice casa tanto com o contactId 4 quanto com o contato de nome "alice"); ou
  2. Usar o pareamento por mensagem direta — mande qualquer mensagem ao bot e ele responde com um código. Aprove com hermes pairing approve simplex <CÓDIGO>.

Conversas em grupo​

Por padrão o adaptador ignora mensagens de grupo — um bot num grupo processaria o tráfego de todos os membros. Habilite explicitamente:

SIMPLEX_GROUP_ALLOWED=12,34 # identificadores específicos
# ou
SIMPLEX_GROUP_ALLOWED=* # qualquer grupo em que o bot esteja

Enderece grupos prefixando o identificador com group: — por exemplo, simplex:group:12 como destino de deliver= numa tarefa de cron, ou numa chamada de hermes send.

Enviar com o hermes send​

O SimpleX funciona como destino avulso de envio — o daemon precisa estar rodando, mas um gateway ativo não é necessário para texto simples:

hermes send --to simplex:alice "olá" # mensagem direta, pelo nome de exibição
hermes send --to simplex:group:12 "olá" # grupo, pelo identificador numérico
hermes send --to simplex "olá" # usa o SIMPLEX_HOME_CHANNEL

Com o gateway rodando, o adaptador enumera seus contatos e os grupos permitidos no diretório de canais (atualizado a cada 5 minutos), então o hermes send --list mostra todos pelo nome. Antes da primeira execução do gateway, a plataforma ainda aparece no --list, com a dica de que nenhum canal foi descoberto ainda — destinos diretos como os acima funcionam de qualquer forma.

Anexos​

O adaptador suporta anexos nativos do SimpleX nas duas direções:

  • Entrada — imagens, notas de voz e arquivos são aceitos pelo fluxo XFTP do daemon (rcvFileDescrReady → /freceive → esperar rcvFileComplete) e aparecem em MessageEvent.media_urls, com o MessageType adequado (PHOTO, VOICE, TEXT mais documento).
  • Saída — send_image_file, send_voice, send_document e send_video usam a forma estruturada /_send, com filePath, então o cliente que recebe mostra as imagens embutidas e toca as notas de voz ali mesmo, em vez de oferecer como download.

As respostas do agente também podem trazer marcações MEDIA:/caminho/do/arquivo no texto — o adaptador tira a marcação do corpo e envia o arquivo como nota de voz (para extensões de áudio) ou como documento.

Usar o SimpleX com tarefas de cron​

cronjob(
action="create",
schedule="every 1h",
deliver="simplex", # usa o SIMPLEX_HOME_CHANNEL
prompt="Check for alerts and summarise."
)

Ou aponte um contato específico pelo campo deliver: da tarefa, ou de um script de shell com a CLI hermes send:

hermes send simplex:<id-do-contato> "Pronto!"

Sobre privacidade​

  • O SimpleX nunca revela número de telefone nem e-mail — os contatos usam identificadores opacos
  • A conexão entre o Hermes e o daemon é WebSocket local (ws://127.0.0.1:5225) — nenhum dado sai da sua máquina
  • As mensagens são criptografadas de ponta a ponta pelo protocolo do SimpleX antes de chegarem ao daemon

Resolução de problemas​

"Cannot reach daemon" — confira se o simplex-chat -p 5225 está rodando e se a porta bate com o SIMPLEX_WS_URL.

"websockets not installed" — rode pip install websockets.

Mensagens não chegam — confira se o identificador do contato está no SIMPLEX_ALLOWED_USERS, ou aprove pelo pareamento por mensagem direta.