Open Source

Projeto em alta conecta agentes de IA diretamente a iPhones pelo Mac

O Phone Harness usa o Espelhamento do iPhone no macOS para permitir que agentes vejam, toquem e verifiquem ações em um aparelho real.

Reprodução · phoneharness.github.io

Criado por ShawnPana, o repositório ShawnPana/phone-harness chegou ao primeiro lugar diário do ranking Trendshift em 9 de agosto de 2026. A proposta é oferecer uma camada fina e editável para que agentes de IA controlem um iPhone real sem jailbreak, Xcode ou WebDriverAgent, resolvendo a dificuldade de automatizar aparelhos sem depender de uma árvore de acessibilidade ou de interfaces internas dos aplicativos.

Dados rápidos

  • Repositório: ShawnPana/phone-harness
  • Licença: MIT
  • Linguagem: Python
  • Popularidade: 378 estrelas, 190 conquistadas no período, e 27 forks
  • Ranking: Trendshift, daily #1
  • Consulta: 9 de agosto de 2026

O problema que o projeto tenta resolver

Agentes de IA precisam perceber o estado de uma tela, executar ações e confirmar se o resultado esperado ocorreu. Em celulares, esse fluxo costuma depender de APIs específicas, ferramentas de teste ou mecanismos de automação que não representam exatamente o que aparece para o usuário.

O Phone Harness usa a janela de Espelhamento do iPhone no Mac como canal de comunicação. O agente captura a tela, reconhece textos e suas coordenadas, envia eventos de entrada e faz uma nova captura para verificar a mudança.

A abordagem também evita uma dependência comum em automação: o acesso a uma árvore de elementos da interface. Segundo o README, a janela espelhada funciona como um fluxo de vídeo sem árvore de acessibilidade, portanto a tela capturada é tratada como a fonte de verdade.

Como funciona e como instalar

O projeto combina o comando screencapture com o framework Vision da Apple para reconhecimento óptico de caracteres, ou OCR. Esse processo identifica textos visíveis e fornece coordenadas prontas para toque. Para interagir, o Phone Harness usa eventos CGEvents em nível HID, capazes de enviar toques, pressionamentos longos, arrastos, gestos de rolagem e texto digitado.

O fluxo básico é: o agente chama ocr(), encontra um texto como “Weather”, toca nas coordenadas retornadas, espera a tela estabilizar e executa outra leitura para confirmar o resultado. Atalhos próprios do espelhamento também estão disponíveis, incluindo Cmd+1 para a tela inicial, Cmd+2 para o seletor de aplicativos e Cmd+3 para o Spotlight.

O README orienta a instalação a partir do clone do repositório:

git clone https://github.com/ShawnPana/phone-harness ~/.phone-harness
cd ~/.phone-harness
./phone-harness --doctor

A configuração exige parear o Espelhamento do iPhone uma vez e conceder ao Terminal as permissões de Acessibilidade e Gravação de Tela no macOS. A primeira permite toques e teclas; a segunda permite visualizar o aparelho. A Gravação de Tela passa a funcionar depois que o Terminal é reiniciado, enquanto a Acessibilidade tem efeito imediato.

Casos de uso concretos

  • Abrir aplicativos: o agente pode localizar um app pelo nome e iniciar sua execução no iPhone.
  • Criar anotações: o exemplo do README abre o Notes, toca em “New Note” e digita uma mensagem.
  • Ler informações na tela: o OCR pode retornar os textos visíveis, úteis para confirmar títulos, mensagens ou resultados.
  • Navegar por listas e páginas: o projeto aceita rolagem por roda e gestos rápidos de deslize.
  • Executar testes controlados: a configuração sugere abrir o Weather como demonstração, mas somente após confirmação do usuário e se o aparelho estiver conectado e desbloqueado.

O que diferencia o Phone Harness

O README afirma que o projeto não requer jailbreak, Xcode ou WebDriverAgent. Em vez de se conectar a componentes internos do iOS, ele opera pela janela de Espelhamento do iPhone no macOS, usando captura visual e eventos de entrada.

Outra característica é a ausência de um daemon, ou processo permanente em segundo plano. O transporte é sem estado: os limites da janela e as capturas são consultados novamente a cada chamada, e cada execução é independente.

O código também separa o núcleo protegido, com cerca de 500 linhas, dos auxiliares que o agente pode editar em agent-workspace/agent_helpers.py. O arquivo editável é carregado automaticamente nos scripts, permitindo adaptar funções sem modificar diretamente o núcleo.

Limitações, maturidade e cuidados

O projeto suporta uma sessão com um aparelho por vez. Desbloquear o iPhone físico pausa o espelhamento, não há suporte a multitoque, fluxos de câmera ou Face ID não funcionam, e vídeos protegidos por DRM aparecem pretos. O OCR reconhece texto, mas não entende a semântica de ícones sem rótulo; nesses casos, o README recomenda combinar captura de tela com um modelo capaz de visão.

A janela precisa estar em primeiro plano para receber entradas. O README também registra problemas com AppleScript click at, cargas Unicode enviadas diretamente e arrastos lentos em listas. Essas restrições tornam a automação dependente do comportamento do macOS e da disposição visual dos aplicativos.

O repositório foi criado em 7 de agosto de 2026 e recebeu seu último commit na mesma data. Tem cinco issues abertas, nenhuma release encontrada e não informa testes automatizados, modelos de iPhone compatíveis, telemetria ou dependências adicionais além dos componentes descritos. O uso exige permissões sensíveis do macOS e concede a um agente controle sobre um telefone real, o que torna a supervisão humana importante. A licença é MIT.

Resumo rápido

  • Projeto: automação visual de um iPhone real por agentes de IA
  • Licença: MIT
  • Linguagem: Python
  • Estrelas: 378, com 27 forks
  • Ranking: Trendshift daily #1
  • Risco principal: ações automatizadas em um aparelho real com permissões de Acessibilidade e Gravação de Tela

Fontes

Fontes

PythonMITOpen SourceTrendshift
Como fazemos: nossa equipe monitora diariamente os repositórios de código aberto em maior alta e produz esta cobertura com apoio de modelos de linguagem, sempre a partir de dados verificados na fonte primária — repositório, documentação oficial e ranking público. Os números de estrelas e a posição no ranking refletem o momento da coleta. Entenda o método.