Ir para o conteúdo
Voltar

Hermes Desktop no Linux com Bubblewrap

Mantenha a interface oficial em uma janela própria, sem entregar a pasta pessoal, o X11 ou os serviços da sua sessão ao aplicativo.

Rota Nacional · Publicado · Revisado

Isole também o processo da interface

Compilar um aplicativo não torna suas dependências confiáveis. A interface Electron tem processos próprios e pode iniciar outros programas. Isolar só o terminal do agente deixa essa parte fora da proteção.

Bubblewrap cria o ambiente restrito. O conjunto de argumentos define o que o aplicativo enxerga. Nesta instalação, o Hermes Desktop light foi compilado em Docker. O pacote rodou no Bubblewrap e se conectou ao agente em outro container.

Monte um sistema de arquivos mínimo

  • Comece com --unshare-all --die-with-parent --new-session --cap-drop ALL --clearenv. Confira antes se o Linux permite os namespaces de usuário necessários.
  • Monte /usr e o pacote do aplicativo somente para leitura. Crie /proc e /dev privados. Use tmpfs com limite para /tmp e a memória compartilhada.
  • Monte uma pasta vazia e exclusiva como HOME. Defina HOME, XDG_CONFIG_HOME, XDG_CACHE_HOME e XDG_DATA_HOME para caminhos internos. Não monte a pasta pessoal real.
  • Entregue apenas o socket privado do agente e o token daquela sessão. Não entregue sockets de Docker, SSH, GPG ou D-Bus.

Entregue uma janela, sem compartilhar o X11

Em uma sessão X11, compartilhar /tmp/.X11-unix e a autorização do usuário enfraquece o objetivo. O aplicativo passa a falar com o servidor gráfico usado pelas outras janelas. No setup validado, um Weston confiável criou uma janela externa. Só o socket Wayland desse compositor entrou no Bubblewrap.

O Weston usou o backend x11, o renderizador pixman e kiosk-shell.so. O Electron usou --ozone-platform=wayland --disable-gpu --disable-audio-output. O aplicativo não recebeu DISPLAY, XAUTHORITY, dispositivos de GPU ou acesso a áudio. O lançador externo guardou os acessos necessários ao compositor.

O lançador associou a janela externa a um atalho próprio. No X11, WM_CLASS e StartupWMClass permitem que o desktop reconheça o aplicativo no dock. Essa identificação visual não concede acesso ao host.

Separe o canal do agente da rede do computador

Com --unshare-all, o localhost da interface pertence ao ambiente isolado. Um retransmissor interno ligou 127.0.0.1:9119 ao socket Unix privado do agente. HERMES_DESKTOP_REMOTE_URL apontou para esse endereço interno.

O token usou o contrato de sessão do próprio Hermes. A configuração sem token foi recusada. A mesma configuração com o token foi lida. Nenhuma porta do agente precisou ficar aberta no host. O lançador renovou o token e encerrou os processos ao fechar a janela.

Confira a proteção na versão que você vai usar

A prova local de 4 de novembro de 2026 usou cliente e agente 0.22.6. Os 14 testes da interface e os sete do agente passaram. A abertura, a navegação e as configurações foram conferidas. A prova não incluiu resposta de modelo, pois não havia chave cadastrada.

Microfone, captura de tela, notificações e integração com arquivos ficaram reduzidos. Não recupere um recurso compartilhando toda a sessão. Avalie uma permissão específica e repita a prova. Bubblewrap continua compartilhando o kernel; ele não substitui uma máquina virtual.

Perguntas frequentes

O sandbox do Electron já não basta?

O sandbox interno protege partes do Electron. O perfil externo limita também o processo principal e os programas que ele inicia. Confira ambos na versão usada.

Preciso trocar minha sessão X11 por Wayland?

O setup validado manteve a sessão X11. O Weston funcionou como compositor aninhado e entregou um socket Wayland separado ao aplicativo.

Continue a leitura

Procurando outra coisa?AjudaContato