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 acessibilidade | Envio de entrada |
|---|---|---|
| macOS | AX (SPIs privadas do SkyLight) | SLPSPostEventRecordTo — escopo por pid, sem teletransporte do cursor |
| Windows | UIAutomation | SendInput + PostMessage — sem roubo de foco |
| Linux | AT-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:
| Plataforma | Pré-requisitos |
|---|---|
| macOS | Ajustes 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. |
| Windows | Nenhum 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+. |
| Linux | Um 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 Hermes | Modo do cua-driver | Intervenção humana | existing_profile |
|---|---|---|---|
| Aprovações manuais ou smart (padrão) | standard | Aprovações normais do Hermes; a Cua para no seu limite protegido | Recusa a menos que computer_use.grant_existing_profile: true (opt-in único na configuração) |
computer_use.permission_mode: bounded + manifesto revisado | daemon bounded privado | Você revisa e aprova o manifesto de capacidades uma vez, na inicialização | Permitido somente dentro dos perfis/origens/ferramentas declarados no manifesto; todo o resto falha fechado |
--yolo, /yolo ou approvals.mode: off | daemon unrestricted privado | Uma aceitação de risco explícita no Hermes; sem prompts da Cua em tempo de execução | Recusa 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 é
degradedoufailed— 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 detools/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:
| Arquivo | Assunto |
|---|---|
SKILL.md | O núcleo multiplataforma (invariante de snapshot, contrato de não-primeiro-plano, envio de cliques, mecânica da árvore AX) |
MACOS.md | Especificidades do macOS: contrato de não-primeiro-plano, navegação por AXMenuBar, envio de cliques via SkyLight, ponte JS de Apple Events |
WINDOWS.md | Especificidades do Windows: árvore UIA, hospedagem UWP / ApplicationFrameHost, isolamento da Sessão 0, padrão de autostart |
LINUX.md | Especificidades do Linux: árvore AT-SPI, X11 / Wayland, detecção de emulador de terminal |
RECORDING.md | Semântica de gravação de trajetória + vídeo |
WEB_APPS.md | Dicas de interação com páginas de navegador |
TESTS.md | Fluxo 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):
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.computer_use(action="click", element=14)— clica no campo de busca.computer_use(action="type", text="from:stripe")computer_use(action="key", keys="return", capture_after=True)— envia e pega a nova captura de tela.- 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
| Provedor | Visã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_20250919viacontext_managementpara 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
typetem 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 eclick(...)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 ocomputer_useconsiga 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 docua-driverem~/.local/bin(mude com--bin-dir <caminho>). - O
-NoAutoStartpula o registro do daemon de logoncua-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 statusimprime o caminho do binário resolvido e a versão. - O
hermes computer-use doctorconfirma 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 filhocua-driver mcpque 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 filhocua-driver serve --embeddedprivado 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-serveem execução pode segurar ocua-driver.exee impedir a sobrescrita ao recompilar. Oinstall-local.ps1renomeia o binário travado automaticamente; se você rodarcargo buildna mão (Opção B), pare o daemon antes comcua-driver autostart disable(ouschtasks /End /TN cua-driver-serve). - Ciclo de recompilação. Depois de editar o código do cua-driver, rode o
install-localde novo (recompila, reprepara, vira a junctioncurrent) na Opção A, ou só refaça ocargo buildna 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çõescomputer_usedo 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 installe leiaMACOS.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.
- X11/Wayland do Linux, gravação, páginas de navegador), rode
- cua.ai/docs — a documentação do projeto cua-driver:
- O que é computer use? — introdução ao conceito
- O contrato de não-primeiro-plano — por que o modo em segundo plano importa
- Referência de instalação — detalhes de instalação multiplataforma
- Personalize o cursor do agente — formatos embutidos, assets personalizados, sobrescritas em tempo de execução
- Controle o Windows por SSH — o padrão de autostart Sessão 0 → Sessão 1+
- Mantenha o cua-driver rodando — autostart / ciclo de vida do daemon
- Conecte seu agente — registre o cua-driver em vários chassis (o Hermes entre eles)
- 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.