Comandando seu agente de dentro do trem: um guia de campo para a WebUI da comunidade

Você está no trem voltando para casa quando a dúvida bate: será que aquele cron job rodou hoje de manhã? Sai o celular do bolso. Nada na caixa de entrada. Nenhum bot do Telegram configurado. Então você espera até chegar à mesa — e, a essa altura, o jantar já apagou a pergunta por completo.
O problema não é o Hermes não poder ser usado remotamente. É que “remoto” normalmente significa montar um túnel mais um frontend, e a maioria das pessoas nunca se dá esse trabalho. Um projeto da comunidade comprime tudo isso em três comandos: Hermes WebUI, com cerca de 18 mil estrelas, um backend em Python com JavaScript puro na frente, sem etapa de build, sem bundler, rodando sobre a configuração e os modelos do Hermes que você já tem.
O que é, e por que vale a instalação
Você ganha o layout familiar de três painéis: sessões e navegação à esquerda, chat no meio e um navegador de arquivos do workspace à direita. Os controles de modelo, perfil e workspace ficam no rodapé do composer, para continuarem visíveis enquanto você digita, e um anel circular mostra o uso de contexto num relance. Todo o resto mora no Hermes Control Center, aberto por um botão no fim da barra lateral.
O destaque é a paridade quase 1:1 com a CLI: o que você consegue fazer no terminal, você consegue fazer aqui quase todo. Fixar, arquivar e agrupar sessões em projetos; buscar e pré-visualizar skills, editando-as no lugar; editar MEMORY.md e USER.md; criar, pausar e inspecionar cron jobs com histórico de execuções e alertas de conclusão; trocar e clonar perfis; autocomplete para slash commands como /compress, /model, /new e /theme.
No celular ele é devidamente responsivo: a barra lateral vira uma gaveta deslizante abaixo de 640px, os alvos de toque ficam com pelo menos 44px e o navegador de arquivos passa a ser um painel que desliza a partir da direita. Ele também é distribuído como PWA instalável, o que faz parecer um app em vez de uma página web depois que ele está na sua tela inicial.
Três comandos para instalar — e provar que funciona localmente antes
git clone https://github.com/nesquena/hermes-webui.git hermes-webui
cd hermes-webui
python3 bootstrap.py
O bootstrap.py faz as partes chatas: detecta o Hermes e roda o instalador oficial se ele estiver faltando, encontra ou cria um ambiente Python com as dependências da WebUI, sobe o servidor e espera pelo /health e, em seguida, abre o seu navegador em um assistente de primeira execução. Passe --no-browser se preferir que ele não faça isso.
Se você prefere gerenciar um daemon, o repositório também traz o ctl.sh, que é mais amigável numa VM auto-hospedada porque não precisa de fuser nem de pkill:
./ctl.sh start # daemon em segundo plano, PID em ~/.hermes/webui.pid
./ctl.sh status # PID, uptime, host/porta vinculados, caminho do log, /health
./ctl.sh logs --lines 100 # acompanha ~/.hermes/webui.log
./ctl.sh restart
./ctl.sh stop
O servidor escuta em 127.0.0.1:8787 por padrão — ou seja, faça uma sessão funcionar localmente antes de pensar em acesso remoto. O health check está sempre disponível para você conferir na mão:
curl http://127.0.0.1:8787/health
Remoto e celular: dois caminhos, e nenhum deles precisa de porta aberta
O padrão seguro é um SSH tunnel. O servidor continua no loopback e você o alcança de fora:
ssh -N -L 8787:127.0.0.1:8787 user@your-server
Depois abra http://127.0.0.1:8787 no navegador local. Você nem precisa de um cliente SSH de desktop no celular — vários apps de terminal mobile conseguem manter um túnel aberto.
A opção conveniente é o Tailscale. Coloque o servidor e o celular na mesma tailnet e vincule o serviço a todas as interfaces:
HERMES_WEBUI_HOST=0.0.0.0 HERMES_WEBUI_PASSWORD='pick-your-own' ./ctl.sh start
Depois acesse http://<server-tailscale-ip>:8787 pelo celular. Repare nas duas condições dessa segunda metade: a senha não é opcional, e a porta 8787 deve existir apenas dentro da tailnet — resista à tentação de abri-la num security group da nuvem.
Segurança: sem atrito no localhost, trancada quando você vai para o remoto
O modelo de segurança é honesto sobre a intenção: a autenticação por senha vem desligada por padrão, porque o acesso via localhost nunca precisou dela. Ir para o remoto significa ligar as coisas por conta própria.
HERMES_WEBUI_PASSWORDcomo variável de ambiente, ou uma senha definida no painel Settings;- passkeys / WebAuthn: entre com a senha, registre uma passkey em Settings e, assim que existir pelo menos uma, você pode dispensar a senha e ficar só com passkey (mantendo a senha como caminho de recuperação);
- OIDC nativo, configurado com
webui_oidc.issuer,client_id,allow_claimeallow_values— os quatro são obrigatórios antes de o OIDC ligar, e a inicialização avisa se a configuração estiver incompleta; - depois do login você recebe um cookie HTTP-only assinado com HMAC e TTL de 24 horas, cabeçalhos de segurança nas respostas, limite de 20MB no corpo do POST e assets de CDN fixados com hashes SRI.
Um aviso chama atenção: se você colocá-lo atrás de um reverse proxy, não use o basic auth do proxy. As atualizações de PWA buscam o service worker, e a autenticação do proxy bloqueia essas buscas, deixando um app instalado numa tela em branco depois de uma atualização. A documentação inclui os passos de recuperação — e é por isso que Tailscale ou um túnel são o caminho recomendado.
Se você já está enfiado em encanamento de acesso remoto, o artigo sobre OAuth sobre SSH pode te poupar algumas horas.
Onde ficam os limites
O bootstrap não suporta Windows nativo. Use Linux, macOS ou WSL2. Existe um guia de Windows nativo mantido pela comunidade, mas ali você está por sua conta.
O chat não passa por um servidor de API externo por padrão. A WebUI roda o agente Hermes in-process, lendo diretamente a sua configuração em HERMES_HOME. Se você já tem um endpoint compatível com a OpenAI, existem dois usos suportados: adicioná-lo em Settings como provider customizado, com a base URL e o bearer token, ou rotear o chat por um servidor Hermes Gateway API em execução, com HERMES_WEBUI_CHAT_BACKEND=gateway. O segundo caminho ainda não entrega a delegação completa do agent loop — há uma issue aberta para isso —, então trate esse modo como viável, mas não idêntico a rodar localmente.
As alternativas nativas para celular ainda estão no começo. Um repositório de app para telefone apareceu em 19 de setembro com um PRD e nenhuma implementação, e existem experimentos anteriores para Android. Por ora, a WebUI é a rota mais madura e mais ativamente mantida, e ela tem uma entrada no nosso diretório de ecossistema.
Noventa minutos a partir daqui
De volta ao trem: instale a WebUI, entre no Tailscale, adicione à tela inicial. Na próxima vez em que você se perguntar se aquele cron job rodou, você confere do bolso — e, já que está ali, peça para ele transformar os logs do build que falhou em três conclusões e mandar tudo para você.
Se o próprio Hermes ainda não está configurado, comece pelo guia de instalação; se você quer seu desktop e seus clientes remotos apontados para um único backend, a referência do comando gateway cobre isso. Rodar um agente remotamente deveria ser a parte fácil.