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 setupe 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ável | Obrigatória | Descrição |
|---|---|---|
SIMPLEX_WS_URL | Sim | URL do WebSocket do daemon |
SIMPLEX_ALLOWED_USERS | Recomendada | Lista 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_USERS | Opcional | true libera todos os contatos (use com cuidado) |
SIMPLEX_AUTO_ACCEPT | Opcional | Aceita pedidos de contato automaticamente (padrão: true) |
SIMPLEX_GROUP_ALLOWED | Opcional | Identificadores 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_CHANNEL | Opcional | Contato ou grupo padrão, para entrega de cron |
SIMPLEX_HOME_CHANNEL_NAME | Opcional | Nome legível do canal principal |
HERMES_SIMPLEX_TEXT_BATCH_DELAY | Opcional | Segundos 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:
- Definir o
SIMPLEX_ALLOWED_USERScom uma lista decontactIds e nomes de exibição, separados por vírgula (SIMPLEX_ALLOWED_USERS=4,alicecasa tanto com o contactId 4 quanto com o contato de nome "alice"); ou - 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→ esperarrcvFileComplete) e aparecem emMessageEvent.media_urls, com oMessageTypeadequado (PHOTO,VOICE,TEXTmais documento). - Saída —
send_image_file,send_voice,send_documentesend_videousam a forma estruturada/_send, comfilePath, 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.