---
title: "simfast: controle de iOS Simulator barato em tokens para agentes de IA"
description: "O simfast lê a tela do simulador como ~300 tokens de texto em vez de screenshots de ~1.500, toca em ~0,1 s via daemon persistente e devolve a tela nova em cada ação — uma chamada de ferramenta por passo, como CLI e servidor MCP."
canonical: "https://ronanrodrigo.dev/notes/simfast-controle-simulator-agentes"
markdown: "https://ronanrodrigo.dev/notes/simfast-controle-simulator-agentes.md"
last-updated: "2026-10-06"
---
## simfast

A maioria dos loops de agente dirigindo um simulador iOS segue o padrão *tocar → screenshot → o modelo lê pixels → chuta coordenadas → toca de novo*: duas chamadas de ferramenta por passo, ~1.500 tokens por imagem e um processo novo a cada toque. O simfast ataca os três custos. A árvore de acessibilidade (`axe describe-ui`) é achatada em elementos na tela, deduplicados e rotulados — ~10–50 linhas (~300 tokens) em vez de um screenshot ou dos ~175 mil tokens da árvore crua. Um daemon por simulador mantém o `idb_companion` do SimGadget aquecido para toques de ~0,1 s. E cada ação já devolve a tela nova com um sinal de `screen changed`, então um passo custa uma única chamada; `simfast do "tap General" "tap About"` encadeia vários passos lendo a tela uma vez só. No benchmark do autor (fluxo de 6 passos no Settings), o fluxo inteiro em um `do` caiu de 12 chamadas e ~9.000 tokens de observação para **1 chamada e ~230 tokens**. Funciona como CLI (ideal com Claude Code e qualquer agente com shell) e como servidor MCP (Cursor, Claude Desktop, Codex), com schema de ~1,6 mil tokens. Requer macOS em Apple silicon, Xcode com runtime de simulador, Node 18+ e AXe; SimGadget é opcional (sem ele, os toques caem para o AXe, ~0,9 s cada). A resolução de labels é deliberadamente defensiva — resolve contra o snapshot mostrado ao agente em vez do "primeiro match" do dispositivo, e switches usam ativação por acessibilidade porque o frame do switch ocupa a linha inteira. Licença MIT.

[Acesse a fonte original](https://github.com/iamxicor/simfast)

## AXe — a base de leitura de acessibilidade

O simfast é uma camada sobre o AXe, o CLI do Cameron Cooke para interagir com simuladores iOS via as APIs privadas de acessibilidade da Apple. É o AXe que fornece o `describe-ui` que o simfast achata em texto compacto, além de ser o fallback de entrada (toques com `touch --delay`) quando o SimGadget não está instalado. Se você quer entender de onde vem a árvore de acessibilidade que o simfast torna barata em tokens, este é o projeto a ler. MIT, em Swift.

[Acesse a fonte original](https://github.com/cameroncooke/AXe)

## SimGadget — o motor de toques rápidos

O SimGadget (zafnz) é a biblioteca TypeScript e servidor MCP que mantém o `idb_companion` aquecido para toques de ~0,1 s, permitindo que uma frota de agentes dirija cada um o seu próprio simulador. O simfast o usa como motor de toque, mas adiciona o snapshot compacto, o loop aja-e-observe, o batching e a resolução defensiva de labels — o autor nota que o `ui_describe_all` do próprio SimGadget devolvia JSON aninhado de ~2 mil tokens e às vezes levava 3 s+, razão pela qual o simfast lê a árvore com o AXe. Na primeira execução, o SimGadget baixa um `idb_companion` fixado e verificado por SHA-256 (~19 MB) dos seus GitHub releases. MIT.

[Acesse a fonte original](https://github.com/zafnz/simgadget)

## idb — a automação de simulador por baixo do companion

O `idb_companion` que o SimGadget mantém aquecido vem do idb da Meta, o CLI flexível para automatizar simuladores e dispositivos iOS. É a camada de mais baixo nível da pilha: o SimGadget o empacota, e o simfast o usa indiretamente para entrada HID rápida. Útil para entender o que acontece no nível do companion quando um toque de ~0,1 s é disparado. MIT, da Meta.

[Acesse a fonte original](https://github.com/facebook/idb)

## XcodeBuildMCP — construir e rodar antes de controlar

Antes de ler a tela e tocar, é preciso compilar e instalar o app. O XcodeBuildMCP (hoje em `getsentry/MobileBuildMCP`) é o servidor MCP e CLI do Cameron Cooke com ferramentas para agentes trabalharem em projetos iOS e macOS — build, testes, boot de simulador. O simfast é estreito por escolha: ele cuida do *inner loop* do agente (ver a tela, agir, ver o resultado), enquanto o XcodeBuildMCP cobre o ciclo de build/instalação. Os dois se complementam num fluxo agentic completo. MIT.

[Acesse a fonte original](https://github.com/getsentry/MobileBuildMCP)

## Maestro — a alternativa orientada a fluxos

Para E2E declarativos em vez do loop reativo de um agente, o Maestro (mobile-dev-inc) é a referência: automação E2E "painless" para mobile e web, com fluxos em YAML. O README do simfast o cita como ferramenta "mais ampla ou orientada a fluxo", em contraste com o foco do simfast no passo a passo do agente. Vale conhecer quando a necessidade é uma suíte de regressão determinística em vez de controle exploratório por LLM. Apache-2.0, em Kotlin.

[Acesse a fonte original](https://github.com/mobile-dev-inc/Maestro)
