Pular para o conteúdo principal

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

Computer Use

O Hermes Agent controla o seu desktop — clicando, digitando, rolando, arrastando — em segundo plano no macOS, Windows e Linux. Seu cursor não se mexe, o foco do teclado não muda e seus desktops virtuais / Spaces não trocam sozinhos. Você e o agente trabalham juntos na mesma máquina.

Diferente da maioria das integrações de computer use, isso funciona com qualquer modelo capaz de usar ferramentas — Claude, GPT, Gemini ou um modelo aberto em um endpoint local compatível com OpenAI. Não existe esquema nativo da Anthropic com que se preocupar.

Como funciona​

O toolset embutido computer_use é a integração recomendada do Hermes. Ele fala MCP por stdio com o cua-driver, um driver de computer use em segundo plano de código aberto. Cada plataforma usa a pilha de acessibilidade + entrada apropriada por baixo dos panos:

PlataformaÁrvore de acessibilidadeEnvio de entrada
macOSAX (SPIs privadas do SkyLight)SLPSPostEventRecordTo — escopo por pid, sem teletransporte do cursor
WindowsUIAutomationSendInput + PostMessage — sem roubo de foco
LinuxAT-SPI (X11 + Wayland)XTest (X11) / virtual-keyboard (Wayland)

O resultado é o mesmo em todas as plataformas: o agente consegue ler a árvore de acessibilidade de qualquer janela visível E enviar eventos sintetizados sem trazê-la para a frente, trocar de desktop virtual ou mover o cursor real do sistema.

Para entender o contrato por baixo — por que o modo em segundo plano importa, a invariante de não-primeiro-plano, os detalhes do envio de cliques — veja cua.ai/docs/explanation/the-no-foreground-contract.

Como ativar​

Instalações novas já vêm com o driver. O instalador do Hermes (install.sh / install.ps1) pré-instala o cua-driver (na medida do possível; passe --skip-computer-use / -SkipComputerUse para recusar), então ativar o Computer Use é só virar uma chave de configuração:

  • hermes tools → escolha 🖱️ Computer Use — instala o driver automaticamente se ele ainda estiver faltando.
  • Dashboard / aplicativo desktop → ligue o toolset Computer Use — se o driver estiver faltando, o botão dispara a instalação em segundo plano automaticamente (acompanhe o progresso no painel de toolsets).

Alternativa manual (instalações antigas, etapa do instalador pulada):

hermes computer-use install

Isso baixa e roda o instalador oficial do cua-driver — install.sh no macOS/Linux, install.ps1 no Windows. Use hermes computer-use status para conferir a instalação.

Já tem o cua-driver? O Hermes reaproveita ele quando suporta o contrato de runtime 0.20. Durante a configuração, a ativação do toolset, o hermes update e a primeira chamada computer_use de uma sessão, o Hermes verifica a versão e o manifesto locais. Ele conserta uma instalação padrão antiga ou incompleta pelo instalador oficial (no máximo uma vez por sessão em tempo de execução). Um binário escolhido com HERMES_CUA_DRIVER_CMD continua sob o seu controle, então o Hermes relata a incompatibilidade e não mexe nele.

Se você instalar o Cua Driver primeiro, cua-driver skills install instala o pacote de skills da Cua em ~/.cua-driver/skills/cua-driver. A autodetecção pelo Hermes é uma melhoria planejada do cua-driver, então por enquanto aponte o Hermes para esse diretório ou crie um symlink dele no seu espaço de skills. Você também pode registrar as ferramentas MCP cruas da Cua como um servidor MCP personalizado, mas essa é uma alternativa para quem precisa da interface de baixo nível. O toolset embutido oferece as ações, a configuração, as aprovações e os diagnósticos do Hermes.

Depois de instalar, seja qual for o caminho escolhido, conceda os pré-requisitos da sua plataforma:

PlataformaPré-requisitos
macOSAjustes do Sistema → Privacidade e Segurança → Acessibilidade + Gravação de Tela. Conceda para a identidade que o hermes computer-use doctor indicar. O modo standard usa o CuaDriver.app; os modos bounded e unrestricted usam a identidade do host do Hermes.
WindowsNenhum na hora da instalação. Se você estiver controlando por SSH (e não RDP / console), precisa do padrão de autostart — veja cua.ai/docs/how-to-guides/driver/windows-ssh para o proxy Sessão 0 ↔ Sessão 1+.
LinuxUm servidor gráfico acessível: DISPLAY definido para X11, ou XDG_SESSION_TYPE=wayland. Sessões Wayland precisam de uma ponte XWayland para captura. O AT-SPI precisa estar ligado (padrão no GNOME/KDE/Xfce).

Depois inicie uma sessão com o toolset ativado:

hermes -t computer_use chat

ou adicione computer_use aos seus toolsets ativos em ~/.hermes/config.yaml.

Modos de permissão e perfis de navegador logados​

O Hermes mapeia sua UX de aprovação existente sobre os modos de runtime imutáveis do cua-driver. Modo de permissão, aprovação do manifesto de capacidades e a permissão de perfil existente são configurações de inicialização. Elas não mudam depois que o runtime começa:

Sessão do HermesModo do cua-driverIntervenção humanaexisting_profile
Aprovações manuais ou smart (padrão)standardAprovações normais do Hermes; a Cua para no seu limite protegidoRecusa a menos que computer_use.grant_existing_profile: true (opt-in único na configuração)
computer_use.permission_mode: bounded + manifesto revisadodaemon bounded privadoVocê revisa e aprova o manifesto de capacidades uma vez, na inicializaçãoPermitido somente dentro dos perfis/origens/ferramentas declarados no manifesto; todo o resto falha fechado
--yolo, /yolo ou approvals.mode: offdaemon unrestricted privadoUma aceitação de risco explícita no Hermes; sem prompts da Cua em tempo de execuçãoRecusa a menos que computer_use.grant_existing_profile: true; o YOLO não substitui essa permissão

Conectando ao seu navegador já logado​

O agente consegue controlar uma janela do Chrome/Edge que você já tem aberta — inclusive um perfil logado — sem reiniciar o navegador, copiar o perfil ou mexer nas suas abas. Como o acesso via DevTools expõe as páginas ativas, os cookies e o armazenamento desse perfil, o cua-driver exige uma permissão humana explícita que a aprovação comum de ferramenta não substitui. Você opta por isso uma vez, no config.yaml:

computer_use:
grant_existing_profile: true

O Hermes então inicia o runtime do cua-driver com a permissão de launcher confiável (--grant existing-profile), e o cua_browser_prepare com um perfil existente funciona contra exatamente o (pid, window_id) que o agente comprova. Deixe em false (o padrão) e a conexão a perfil existente falha fechada; perfis isolados de propriedade do driver funcionam de qualquer jeito e são o que o agente prefere.

Modo bounded para automação repetível​

Para automação de navegador recorrente (jobs de cron, pesquisa agendada contra um app autenticado), o modo bounded usa um manifesto de capacidades que você revisa uma única vez:

# config.yaml
computer_use:
permission_mode: bounded
capability_manifest: ~/.hermes/cua-manifest.yaml

O manifesto nomeia os aplicativos, os tipos de perfil de navegador, as origens permitidas e as ferramentas tipadas que a sessão pode usar (veja a referência de modos de permissão do cua-driver para o formato). O Hermes inicia um runtime privado com --capability-manifest ... --approve-capability-manifest; qualquer coisa fora do manifesto falha fechado dentro do cua-driver. Um manifesto ausente ou ilegível falha de forma barulhenta no início da sessão, em vez de rebaixar silenciosamente. O YOLO de sessão ainda sobrepõe o bounded naquela sessão.

No macOS, os daemons de sessão privada sobem pelo bundle CuaDriver.app instalado (para que as permissões concedidas fiquem atribuídas à identidade do próprio driver em vez de zerar a cada build do Hermes), e o Hermes verifica a assinatura de código do bundle — identificador com.trycua.driver exato e o time de assinatura oficial — antes de iniciá-lo. Se você compilar o cua-driver do código-fonte (sem assinatura), opte por isso explicitamente:

# config.yaml
computer_use:
allow_unsigned_driver: true # apenas para desenvolvimento local do driver

Cada transporte MCP é dono de uma sessão de ciclo de vida privada dentro do seu runtime. Um nome público de sessão é só um rótulo para a identidade do cursor e para o estado com escopo de sessão. Ele não seleciona, não compartilha nem mantém um runtime vivo. Desligar o /yolo, resetar ou fechar a sessão do Hermes, a limpeza de cancelamento ou a saída do processo fecham essa sessão de transporte. O Hermes também para os runtimes privados que ele mesmo iniciou para acesso bounded, unrestricted ou a perfil existente. Uma conversa do Hermes não consegue mudar o modo nem as permissões do runtime de outra. No macOS, um runtime standard com permissão de perfil existente usa um daemon CuaDriver.app novo em um socket privado. Os modos bounded e unrestricted usam um serviço embutido privado sob a identidade do host do Hermes.

A aprovação smart continua sendo standard: uma classificação feita por LLM não pode ocupar o lugar de um manifesto revisado ou de uma permissão dada na inicialização.

O modo YOLO/unrestricted não protege contra prompt injection nem contra entrada não intencional. Use somente em uma VM descartável ou com contas e dados cujo comprometimento total você aceita.

hermes computer-use doctor — sua primeira parada de triagem​

O hermes computer-use doctor roda a ferramenta MCP estruturada health_report do cua-driver e imprime uma matriz de verificações. É o jeito mais rápido de descobrir por que uma ação não está funcionando.

$ hermes computer-use doctor
⚠️ cua-driver VERSION on darwin: degraded
✅ binary_version: cua-driver VERSION
✅ platform_supported: macOS 26.4.1 (arm64)
✅ session_active: MCP session is active.
❌ bundle_identity: Process has no CFBundleIdentifier.
→ Run the binary inside CuaDriver.app so TCC grants attribute correctly.
✅ tcc_accessibility: Accessibility is granted.
✅ tcc_screen_recording: Screen Recording is granted.
✅ ax_capability: AX is trusted and reachable.
✅ screen_capture_capability: ScreenCaptureKit reachable; 1 display(s) shareable.
  • Código de saída 0 quando o geral é ok — está tudo ligado.
  • Código de saída 1 quando é degraded ou failed — pelo menos uma verificação falhou; a dica em cada falha diz o que corrigir.
  • Código de saída 2 quando o próprio binário do cua-driver não está acessível.

Opções úteis:

  • --include CHECK — roda só as verificações listadas (repita para várias)
  • --skip CHECK — pula uma verificação (ganha do --include)
  • --json — emite o payload estruturado cru, no mesmo formato da resposta MCP de tools/call health_report

A matriz de verificações conhece a plataforma: bundle_identity / tcc_* ficam como skip no Windows + Linux porque esses conceitos não se aplicam. O ax_capability verifica AX no macOS, UIA no Windows e AT-SPI no Linux — cada um com a dica de diagnóstico certa quando não consegue alcançar.

O cursor do agente e as sessões​

Quando o agente age, você vê um cursor sobreposto e colorido deslizar pela tela até onde cada clique / digitação / rolagem cai. O cursor real do sistema nunca se mexe. A sobreposição mostra onde o agente está agindo. Cada execução do Hermes declara um nome de sessão público do cua-driver (algo como hermes-3a7b9c14d2e8). O nome rotula a identidade do cursor e o estado relacionado, então execuções simultâneas e subagentes ganham cursores distintos. O transporte MCP é dono da sessão de ciclo de vida privada dentro do runtime; o nome público não.

O cursor sobreposto é cosmético — capturas, cliques e digitação funcionam sem ele. O Hermes o desativa automaticamente onde ele é um modo de falha conhecido: macOS (consumo de CPU ocioso), Linux headless / WSL2 / contêineres e desktops Linux X11 (a sobreposição é uma janela de tela cheia sempre no topo que pode ficar presa sobre todos os espaços de trabalho depois de um encerramento sujo de sessão, travando a entrada do desktop). Linux Wayland e Windows mantêm a sobreposição. Defina computer_use.no_overlay: false no config.yaml para forçar o cursor ligado (ou true para forçar desligado) em qualquer plataforma.

Ajuste o cursor com as opções de linha de comando do cua-driver ou com a ferramenta MCP de runtime set_agent_cursor_style — veja cua.ai/docs/how-to-guides/driver/personalize-cursor para o menu completo (silhueta embutida arrow vs teardrop, SVG / PNG / ICO personalizado via --cursor-icon, cores de gradiente em tempo de execução, halo de brilho).

Indo mais fundo — o pacote de skills do cua-driver​

O Hermes mantém sua skill de invólucro (skills/autonomous-ai-agents/computer-use/SKILL.md) focada no fluxo computer_use do lado do Hermes e no vocabulário de ações. Para detalhes de plataforma, semântica de gravação, interação com páginas de navegador e outros comportamentos profundos da Cua, instale o pacote de skills que o time do cua-driver publica e mantém diretamente:

cua-driver skills install

O comando instala o pacote em ~/.cua-driver/skills/cua-driver. A autodetecção pelo Hermes é uma melhoria planejada do cua-driver, então por enquanto aponte o Hermes para esse diretório ou crie um symlink dele no seu espaço de skills. O invólucro continua sendo a camada de fluxo de trabalho e aponta para a skill instalada da Cua quanto ao comportamento do driver. O pacote contém:

ArquivoAssunto
SKILL.mdO núcleo multiplataforma (invariante de snapshot, contrato de não-primeiro-plano, envio de cliques, mecânica da árvore AX)
MACOS.mdEspecificidades do macOS: contrato de não-primeiro-plano, navegação por AXMenuBar, envio de cliques via SkyLight, ponte JS de Apple Events
WINDOWS.mdEspecificidades do Windows: árvore UIA, hospedagem UWP / ApplicationFrameHost, isolamento da Sessão 0, padrão de autostart
LINUX.mdEspecificidades do Linux: árvore AT-SPI, X11 / Wayland, detecção de emulador de terminal
RECORDING.mdSemântica de gravação de trajetória + vídeo
WEB_APPS.mdDicas de interação com páginas de navegador
TESTS.mdFluxo de replay por trajetória

Esses são mergulhos profundos por plataforma, não duplicatas da skill do Hermes — quando um agente relata "no Windows, meu clique caiu no elemento errado", ele lê o WINDOWS.md para pegar o contexto de UIA / UWP que explica o porquê e o que fazer diferente.

O cua-driver skills status mostra o que está instalado e em quais chassis de agente está vinculado. Hoje a lista de autodetecção cobre Claude Code, Codex, OpenCode, OpenClaw e Antigravity; a autodetecção do Hermes está planejada como uma melhoria no trycua/cua — até lá, rode cua-driver skills install uma vez e aponte seu chassi para o diretório ~/.cua-driver/skills/cua-driver resultante (ou crie um symlink dele no seu espaço de skills de sempre).

Exemplo rápido​

Prompt do usuário: "Ache meu e-mail mais recente da Stripe e resuma o que eles querem que eu faça."

O plano do agente (o formato é o mesmo no macOS / Windows / Linux — o modelo substitui pelo atalho e pelo nome de app idiomáticos da plataforma):

  1. computer_use(action="capture", mode="som", app="Mail") — pega uma captura de tela do app de e-mail com cada item da barra lateral, botão da barra de ferramentas e linha de mensagem numerados.
  2. computer_use(action="click", element=14) — clica no campo de busca.
  3. computer_use(action="type", text="from:stripe")
  4. computer_use(action="key", keys="return", capture_after=True) — envia e pega a nova captura de tela.
  5. Clica no primeiro resultado, lê o corpo, resume.

Durante tudo isso, seu cursor fica onde você deixou e o app de e-mail nunca vem para a frente.

Recebendo a captura de tela de verdade​

As capturas de tela feitas durante o controle do computador normalmente são internas — elas existem para o modelo enxergar a tela, e o agente responde em texto. Mas toda captura de imagem também salva uma cópia limitada e compartilhável no cache de imagens do Hermes e informa o caminho dela, então em superfícies que aceitam anexos (Telegram, Discord, Desktop e outras plataformas de gateway) você pode simplesmente pedir:

"Me manda uma captura da minha tela."

e o agente entrega a imagem de verdade como anexo nativo, não só uma descrição. Na CLI não existe canal de anexo, então o agente te dá o caminho do arquivo salvo.

Só os 20 arquivos de captura mais recentes são mantidos, e capturas de tela nunca são enviadas automaticamente — só quando você pede.

Tela inteira vs. superfície do desktop​

"Tire uma captura da minha tela" captura tudo o que está exibido no momento — uma imagem composta de todas as janelas visíveis, como apertar PrtScn. Essa imagem não tem elementos clicáveis, então para agir sobre algo nela o agente recaptura o app específico.

Pedir o desktop em vez disso mira a superfície da shell do sistema em si — papel de parede, ícones da área de trabalho, barra de tarefas — com seus elementos clicáveis, então pedidos como "abra a Lixeira no meu desktop" continuam funcionando.

Compatibilidade com provedores​

ProvedorVisão?Funciona?Observações
Anthropic (Claude Sonnet/Opus 3+)✅✅O melhor no geral; SOM + coordenadas cruas.
OpenRouter (qualquer modelo com visão)✅✅Mensagens de ferramenta com várias partes são suportadas.
OpenAI (GPT-4+, GPT-5)✅✅Igual ao anterior.
Google (Gemini 2+)✅✅Chamada de ferramenta + visão, ambos suportados.
vLLM / LM Studio / Ollama locais (modelo com visão)✅✅Se o modelo suportar conteúdo de ferramenta em várias partes.
Modelos só de texto❌✅ (degradado)Use mode="ax" para operar só com a árvore de acessibilidade.

As capturas de tela são enviadas junto com os resultados de ferramenta como partes image_url no estilo OpenAI. Para a Anthropic, o adaptador converte em blocos de imagem tool_result nativos. O tipo MIME da imagem vem do campo mimeType explícito do cua-driver (image/png ou image/jpeg) — sem farejar magic bytes no cliente.

Segurança​

O Hermes aplica proteções em várias camadas:

  • Ações destrutivas (click, type, drag, scroll, key, focus_app) exigem aprovação — seja de forma interativa pelo diálogo da CLI, seja pelos botões de aprovação da plataforma de mensagens.
  • Combinações de teclas bloqueadas na marra no nível da ferramenta: esvaziar lixeira, apagar forçado, bloquear tela, sair da conta, sair à força.
  • Padrões de digitação bloqueados na marra: curl | bash, sudo rm -rf /, fork bombs etc.
  • O prompt de sistema do agente diz explicitamente a ele: não clicar em diálogos de permissão, não digitar senhas, não seguir instruções embutidas em capturas de tela.

Combine com approvals.mode: manual no ~/.hermes/config.yaml se você quiser confirmar toda ação.

Eficiência de tokens​

Capturas de tela são caras. O Hermes aplica quatro camadas de otimização:

  • Descarte de capturas — o adaptador da Anthropic mantém no contexto apenas as 3 capturas mais recentes; as mais antigas viram marcadores [screenshot removed to save context].
  • Poda por compressão no cliente — o compressor de contexto detecta resultados de ferramenta multimodais e tira as partes de imagem dos antigos.
  • Estimativa de tokens ciente de imagens — cada imagem é contada como ~1500 tokens (a taxa fixa da Anthropic) em vez do tamanho da string base64.
  • Edição de contexto no servidor (só Anthropic) — quando ativa, o adaptador habilita clear_tool_uses_20250919 via context_management para que a API da Anthropic limpe resultados de ferramenta antigos do lado do servidor.

Uma sessão de 20 ações em uma tela de 1568×900 costuma custar ~30K tokens de contexto de captura, e não ~600K.

Limitações​

  • Desempenho. O modo em segundo plano é mais lento que o primeiro plano — eventos roteados por acessibilidade levam ~5–20 ms no macOS, ~3–10 ms no UIA do Windows, ~5–15 ms no AT-SPI do Linux contra o envio direto de HID. Imperceptível na velocidade de clique de um agente; perceptível se você tentar gravar um speed-run.
  • Sem digitação de senha pelo teclado. O type tem padrões bloqueados na marra para cargas de shell; para senhas, use o preenchimento automático do sistema (Chaveiro do macOS / Gerenciador de Credenciais do Windows / GNOME Keyring / KWallet).
  • Alguns apps não expõem árvore de acessibilidade. Apps UWP modernos no Windows, Electron < 28 no Linux e alguns apps do macOS com desenho personalizado (Logic, Final Cut, alguns jogos) têm árvores AX esparsas ou vazias. Recorra a coordenadas de pixel se a árvore estiver vazia — ou pule a tarefa de vez.
  • Windows: janelas elevadas (admin) não podem ser controladas por um agente normal. O UIPI do Windows (User Interface Privilege Isolation) impõe limites de nível de integridade: um processo de integridade Média (o agente Hermes padrão) não consegue enumerar a árvore UIA de uma janela pertencente a um processo de integridade Alta (Administrador), nem injetar entrada de mouse nela. Sintoma: capture(mode='som') retorna 0 elementos e click(...) relata sucesso sem fazer nada, mesmo com a captura de tela saindo normalmente (a captura via GDI fica abaixo da checagem de integridade). Eventos de teclado contornam o UIPI em parte, então Tab / Enter ainda navegam em um diálogo elevado. Isso é uma restrição do sistema operacional, não um bug do cua-driver — afeta toda pilha de automação do Windows. Para controlar janelas elevadas, rode o próprio agente Hermes com integridade Alta (inicie a partir de um terminal elevado); caso contrário, mire em janelas não elevadas.
  • Pegadinhas de implantação específicas de plataforma:
    • O macOS usa SPIs privadas do SkyLight. A Apple pode mudá-las em qualquer atualização do sistema. O Hermes avisa quando o cua-driver instalado é mais antigo que a versão contra a qual ele foi testado.
    • Sessões SSH no Windows rodam na Sessão 0, que não tem desktop interativo. Controle o Hermes de dentro da sessão de RDP / console, ou configure a Tarefa Agendada de autostart do cua-driver — windows-ssh tem a receita.
    • O Linux exige um servidor gráfico acessível. Servidores headless precisam do Xvfb (Xvfb :99 -screen 0 1920x1080x24) antes que o computer_use consiga capturar ou injetar eventos. Sessões Wayland puras precisam de uma ponte XWayland para captura de tela (o caminho de injeção Wayland do cua-driver cuida da entrada de forma independente).

Para automação de GUI multiplataforma sem o peso do desktop (e sem configurar TCC / Sessão 0 / X11), o toolset browser usa um Chromium headless de verdade e é a resposta certa para tarefas só de web.

Configuração​

Modo de permissão e manifesto (veja Modos de permissão acima):

computer_use:
permission_mode: standard # standard (padrão) | bounded
capability_manifest: "" # caminho do manifesto de capacidades, obrigatório no bounded
grant_existing_profile: false # opt-in: conectar em modo standard ou unrestricted

Sobrescreva o caminho do binário do driver (testes / CI / builds locais):

HERMES_CUA_DRIVER_CMD=/caminho/do/seu/cua-driver

Troque o backend inteiro (para testes):

HERMES_COMPUTER_USE_BACKEND=noop # registra as chamadas, sem efeitos colaterais

Telemetria​

O cua-driver vem com telemetria anônima de uso (PostHog) ativada por padrão no projeto oficial. O Hermes desativa isso para você — em toda invocação do cua-driver (o backend MCP, status, doctor e a instalação) o Hermes define CUA_DRIVER_RS_TELEMETRY_ENABLED=0 no ambiente do driver.

Para voltar a ativar (deixando o cua-driver usar o padrão dele e enviar telemetria), coloque isto no config.yaml:

computer_use:
cua_telemetry: true # padrão: false (telemetria desligada)

Quando está ligada, o hermes computer-use doctor reporta telemetry: enabled; quando desligada (o padrão), ele reporta telemetry: disabled via CUA_DRIVER_RS_TELEMETRY_ENABLED.

Testando com um build local do cua-driver​

Quando você está desenvolvendo o próprio cua-driver — ou quer testar uma correção ainda não lançada — aponte o Hermes para um binário que você compilou do código-fonte em vez da versão publicada. O Hermes resolve o driver com shutil.which("cua-driver") e não impõe HERMES_CUA_DRIVER_VERSION, então um build local (reportado como 0.0.0-local-*) é aceito como está. Duas abordagens:

Opção A — install-local (compilar + colocar no PATH)​

No seu checkout do trycua/cua, rode o instalador local oficial. Ele compila o backend em Rust em modo release e joga o cua-driver no mesmo layout de instalação que o instalador de produção usa, adicionando o diretório bin dele ao seu PATH:

# Windows (PowerShell), a partir da raiz do repositório cua
./libs/cua-driver/scripts/install-local.ps1 -NoAutoStart
# macOS / Linux, a partir da raiz do repositório cua (o padrão é um build debug, sem --release)
./libs/cua-driver/scripts/install-local.sh --release
  • O Windows prepara o build em %USERPROFILE%\.cua-driver\packages\… e cria uma junction de %LOCALAPPDATA%\Programs\Cua\cua-driver\bin (adicionado ao PATH do seu usuário) apontando para ele. macOS/Linux criam um symlink do cua-driver em ~/.local/bin (mude com --bin-dir <caminho>).
  • O -NoAutoStart pula o registro do daemon de logon cua-driver-serve — você não precisa dele para testar com o Hermes (veja as observações).

Depois abra um shell novo (para a mudança de PATH ficar visível) e confirme:

cua-driver --version # builds locais reportam 0.0.0-local-release
# Windows: (Get-Command cua-driver).Source
# macOS/Linux: which cua-driver

Opção B — apontar o Hermes direto para o binário compilado (ciclo mais rápido)​

Pule toda a cerimônia de instalação: rode cargo build e defina HERMES_CUA_DRIVER_CMD para o binário resultante. Melhor para ciclos rápidos de editar/compilar/testar.

cargo build -p cua-driver # adicione --release para um build release; rode a partir de libs/cua-driver/rust
# Windows (.env)
HERMES_CUA_DRIVER_CMD=C:\caminho\para\cua\libs\cua-driver\rust\target\debug\cua-driver.exe
# macOS / Linux (.env)
HERMES_CUA_DRIVER_CMD=/caminho/para/cua/libs/cua-driver/rust/target/debug/cua-driver

Confirme que o Hermes está usando o seu build​

  • O hermes computer-use status imprime o caminho do binário resolvido e a versão.
  • O hermes computer-use doctor confirma que o binário está acessível e exercita o caminho MCP completo de ponta a ponta.
  • Em uma sessão, computer_use(action="capture") exercita o processo filho cua-driver mcp que foi criado.

Observações e pegadinhas​

  • O Hermes cria um proxy stdio cua-driver mcp. Em uma sessão normal o proxy se conecta ao (e pode iniciar o) daemon padrão da máquina. No YOLO explícito do Hermes, o Hermes passa a ser dono de um filho cua-driver serve --embedded privado e aponta o proxy para o socket ou named pipe privado dele. O padrão de autostart/UIAccess do Windows ainda importa para entrada interativa na Sessão 1+ a partir do SSH — veja a seção de Limitações.
  • Binário travado no Windows. Um daemon cua-driver-serve em execução pode segurar o cua-driver.exe e impedir a sobrescrita ao recompilar. O install-local.ps1 renomeia o binário travado automaticamente; se você rodar cargo build na mão (Opção B), pare o daemon antes com cua-driver autostart disable (ou schtasks /End /TN cua-driver-serve).
  • Ciclo de recompilação. Depois de editar o código do cua-driver, rode o install-local de novo (recompila, reprepara, vira a junction current) na Opção A, ou só refaça o cargo build na Opção B — sem precisar mudar nada no Hermes.
  • Builds locais pulam a checagem de versão. O Hermes avisa quando o cua-driver instalado é mais antigo que a linha de base testada para aquele sistema, mas isenta builds de desenvolvimento 0.0.0-local-* — então seu build local nunca dispara esse aviso.

Solução de problemas​

Primeira ação quando algo estiver estranho: rode hermes computer-use doctor. A matriz estruturada por verificação diz a você (e a qualquer agente que esteja te ajudando a depurar) exatamente o que está errado.

Modos de falha específicos que o doctor não pega:

computer_use backend unavailable: cua-driver is not installed — Rode hermes computer-use install para baixar o binário do cua-driver, ou rode hermes tools e ative o toolset Computer Use.

Os cliques parecem não ter efeito — Capture e verifique. Um modal que você não viu pode estar bloqueando a entrada. Dispense-o com escape ou com o botão de fechar.

Os índices de elemento estão velhos — Os índices SOM só valem até a próxima capture. Recapture depois de qualquer ação que mude o estado. O invólucro carrega element_tokens opacos para detectar índices velhos — você vê um erro explícito em vez de um clique errado.

"blocked pattern in type text" — O texto que você tentou digitar com type bate com a lista de padrões perigosos de shell. Quebre o comando em partes ou repense.

Capturas vazias no Linux — DISPLAY não definido, ou você está em Wayland puro sem uma ponte XWayland. O hermes computer-use doctor sinaliza isso como ax_capability: fail com a dica Set DISPLAY (X11)….

Capturas vazias no Windows por SSH — Você está na Sessão 0 (a sessão de serviços). Controle direto pelo RDP / console, ou configure o padrão de autostart — veja cua.ai/docs/how-to-guides/driver/windows-ssh.

Veja também​

  • Skill do lado do Hermes — skills/autonomous-ai-agents/computer-use/SKILL.md — ensina o vocabulário de ações computer_use do Hermes; é isso que o agente carrega.
  • Pacote de skills do cua-driver — para mergulhos profundos por plataforma (contrato de não-primeiro-plano do macOS, UIA + Sessão 0 do Windows, AT-SPI
    • X11/Wayland do Linux, gravação, páginas de navegador), rode cua-driver skills install e leia MACOS.md / WINDOWS.md / LINUX.md / RECORDING.md / WEB_APPS.md. A autodetecção pelo Hermes é uma melhoria planejada; por enquanto aponte o Hermes para o diretório do pacote instalado ou crie um symlink dele no seu espaço de skills.
  • cua.ai/docs — a documentação do projeto cua-driver:
  • Código-fonte do cua-driver (trycua/cua)
  • Automação de navegador para tarefas web multiplataforma em que você não precisa controlar apps nativos.