Portais

Portais são janelas incorporadas que vivem diretamente no seu canvas. Um portal de navegador permite navegar em sites e visualizar arquivos locais. Um portal de dispositivo roda um dispositivo iOS ou Android real. Nos dois casos, seus agentes de IA podem interagir diretamente com o que está dentro deles.

Um nó de portal no canvas do Maestri exibindo um site

Criando um portal

Clique no botão Portal na barra de ferramentas (ícone de globo) ou pressione P para adicionar um novo portal ao seu canvas. Digite uma URL — qualquer site como https://exemplo.com.

Cada portal roda uma instância isolada do WebKit (Safari) com seu próprio armazenamento. Suporte ao Chrome está planejado para o futuro.

Conectando portais

Você pode conectar um portal a outro portal para que eles compartilhem a mesma sessão de armazenamento. Isso é útil quando um portal precisa acessar cookies ou estado de autenticação de outro.

Use a ferramenta de conexão para vincular portais, assim como todos os outros nós no canvas.

Automação de agentes

Quando um portal está conectado ao terminal de um agente, o agente pode controlá-lo programaticamente usando o CLI maestri. Sem dependências externas, sem servidores MCP, sem configuração — apenas conecte e use. Como tudo no Maestri, é plug and play.

A automação de portais é uma ferramenta de browser-use projetada do zero para velocidade e eficiência de tokens. Agentes podem:

  • Clicar, digitar e rolar — interagir com qualquer elemento na página
  • Navegar — ir para URLs, voltar, atualizar
  • Tirar screenshots — ver a página visualmente, assim como você
  • Executar JavaScript — rodar scripts customizados no contexto da página
  • Ler o DOM — inspecionar a estrutura da página
  • Ver o console do navegador — capturar erros e output de debug

Agentes também podem criar novos portais por conta própria — não é necessário que você coloque um manualmente.

Para permitir que um agente controle um portal, conecte-os usando a ferramenta de conexão. Agentes podem ver portais encadeados e controlar todos eles.

Dica

Como portais rodam instâncias isoladas de navegador, você pode ter múltiplas sessões logadas no mesmo serviço simultaneamente — útil para testar diferentes contas de usuário.

Portais de dispositivos

Um portal pode conter um dispositivo móvel em vez de uma página web: um Simulador iOS, um emulador Android ou um celular Android físico conectado à sua máquina. É o mesmo nó, com as mesmas conexões e a mesma automação de agentes, então tudo o que você já sabe sobre portais continua valendo.

Somente no macOS

Simuladores iOS exigem o Xcode e funcionam apenas no macOS. Emuladores Android e celulares Android conectados funcionam no Maestri para Windows.

Um canvas do Maestri com um terminal de agente conectado a um simulador de iPhone, um emulador Android e um portal de navegador

Abrindo um dispositivo

Abra a janela Novo Portal e troque para Devices, ou use a ação @New Device Portal no Compositor de Prompts.

A janela Novo Portal na aba Devices, listando simuladores iOS agrupados por runtime com um deles marcado como iniciado

Você verá todos os simuladores, emuladores e celulares que sua máquina pode controlar, agrupados por versão do sistema, com um campo de busca e filtros para iOS, iPadOS e Android. Dispositivos que já estão rodando aparecem marcados como Booted. Escolha um e o Maestri o inicia se necessário, conecta e coloca no seu canvas.

Precisa de um dispositivo que você ainda não tem? New iOS Simulator… cria um a partir de uma lista de modelos pesquisável sem sair do Maestri. Emuladores Android são criados e removidos pelo Device Manager do Android Studio, e um celular Android físico aparece assim que é conectado.

Portais de dispositivos rodam sobre um runtime de dispositivos construído do zero. O portal desenha o próprio buffer de tela do dispositivo diretamente na GPU e envia seus cliques e teclas pelo pipeline de entrada nativo do dispositivo, mantendo tudo tão fluido e instantâneo quanto o próprio dispositivo, em vez de depender de screenshots e comandos de shell.

Vários portais de dispositivos podem rodar ao mesmo tempo, e cada um sobrevive a trocas de workspace e de andar. Dois portais apontando para o mesmo dispositivo compartilham uma única tela, então use um segundo dispositivo quando quiser rodar dois apps lado a lado.

Controlando um dispositivo manualmente

Clique dentro de um portal de dispositivo para controlá-lo diretamente com o mouse e o teclado: clique para tocar, digite para enviar teclas, arraste para deslizar e clique e segure para um toque longo. Gire o dispositivo para alternar entre retrato e paisagem. Esses gestos funcionam da mesma forma em dispositivos Android e no iOS.

Automatizando um dispositivo

Conecte um portal de dispositivo ao terminal de um agente e ele controla o dispositivo com o mesmo CLI maestri. Sem XCUITest, sem Appium, sem ferramentas extras. Em vez do DOM, os agentes leem a árvore de elementos real do app em execução, com rótulos verdadeiros e posições exatas, para que um toque atinja o botão em vez de uma coordenada estimada. Agentes podem:

  • Tocar, digitar, rolar e deslizar em qualquer ponto da tela
  • Pressionar botões físicos como home, lock e side, além das teclas back e recents do Android
  • Iniciar e encerrar apps por bundle id ou nome de pacote
  • Abrir URLs pelo próprio handler de URL do dispositivo
  • Ler a árvore de elementos, incluindo qualquer web view embutida no app
  • Tirar screenshots e ligar ou desligar o dispositivo

Conteúdo web embutido entra na mesma árvore de elementos, então um agente testando um app nativo pode passar direto por uma tela de login ou checkout web sem trocar de ferramenta.

Compilando e rodando seu app

Aponte sua build para o dispositivo do portal e o app que você testa é o app que você acabou de compilar. Um agente pode ler o identificador do dispositivo pelo portal, compilar o projeto, instalar, iniciar e depois navegar pelo resultado, tudo do mesmo terminal.

Nota

No iOS, um app expõe sua árvore de elementos quando o Maestri o iniciou. Se um app foi iniciado pelo Xcode ou tocando no ícone, iniciá-lo novamente pelo Maestri o traz para baixo do agente de acessibilidade, então o agente lê uma árvore real em vez de recorrer a um screenshot.