terminal-mac em 2026: Como Dar um macOS Virtual Só Para o Seu Agente de IA
Olá HaWkers, em 03/11/2026 um desenvolvedor que assina como govijr publicou no GitHub o terminal-mac, um projeto em Swift com a descrição mais curta e mais provocadora da semana: "Entire MacOS running in your terminal". Onze dias depois, em 14/11/2026, o repositório já tinha 2.718 estrelas e 191 forks. A ideia é simples de explicar e difícil de fazer: um macOS de verdade rodando em máquina virtual, com a tela transmitida para dentro do seu terminal e com um conjunto de comandos para um agente de IA clicar, digitar e tirar screenshot lá dentro.
Você já deixou um agente usar o seu computador e ficou olhando o cursor se mexer sozinho, sem poder encostar no teclado? Esse é o problema que o terminal-mac ataca. Neste artigo eu mostro o que o projeto faz, como instalar, como ligar ao Claude Code e a outros clientes MCP, o que o isolamento realmente garante e onde ele ainda é um protótipo. Tudo o que está aqui vem do README e dos metadados do próprio repositório.
O Que É o terminal-mac
O README define o projeto assim: um desktop macOS separado para agentes de computer use, visto e controlado a partir de um terminal. Três peças fazem isso funcionar:
- Apple Virtualization roda um macOS convidado real em um Mac com Apple Silicon.
- Um helper dentro do convidado captura a tela e injeta os eventos de entrada, ou seja, cliques, teclas e rolagem.
- Um visualizador no terminal transmite essa tela usando os protocolos gráficos do Kitty ou do iTerm2.
O ponto central é o que o agente não toca. Os comandos passam pelo helper que vive dentro da máquina virtual, então o ponteiro do seu Mac físico não se move e a sua área de transferência não muda. O convidado é outro Mac: tem os próprios apps, arquivos, contas e permissões, e não herda os apps que você tem abertos nem as sessões em que você está logado.
O projeto é licenciado sob MIT e o próprio autor o chama de "early release candidate". As três releases publicadas até agora são todas builds da versão 0.2.0 e saíram no mesmo dia, 03/11/2026. Guarde essa informação, porque ela muda a forma como você deve usar a ferramenta.
Por Que Um Mac Separado Para o Agente Importa
Computer use é a capacidade de um modelo operar uma interface gráfica como uma pessoa faria: olhar a tela, decidir, clicar, conferir. Funciona, mas quando roda na sua máquina principal cria três incômodos bem concretos.
O primeiro é a disputa pelo cursor. Enquanto o agente trabalha, você não trabalha. Qualquer movimento seu no mouse atrapalha a tarefa dele, e qualquer clique dele pode cair na janela errada.
O segundo é o alcance. Um agente operando o seu desktop enxerga o que você enxerga: o e-mail aberto, o gerenciador de senhas destravado, a aba do banco. Não precisa haver má intenção para dar errado, basta uma instrução escondida em uma página web. Quem acompanhou o caso em que o Postman instalou plugins no Claude Code e no Codex sem pedir sabe como a superfície de um agente cresce rápido.
O terceiro é a reprodutibilidade. O seu desktop tem anos de configuração acumulada. Um teste de interface que passa nele pode falhar em uma instalação limpa, e você só descobre quando o usuário reclama.
Uma máquina virtual resolve os três de uma vez: o agente ganha um cursor só dele, um ambiente que começa vazio e um lugar onde errar custa pouco.
Requisitos e Instalação
A lista de requisitos do README é curta, mas tem pegadinhas:
- Mac com Apple Silicon e macOS 14 ou mais recente.
- Internet na primeira execução para baixar o macOS direto da Apple, ou um arquivo
.ipswcompatível que você já tenha. - Espaço para a imagem de restauração em cache e para um disco virtual que cresce. O tamanho lógico padrão é de 64 GiB.
- Ghostty, Kitty ou iTerm2 para ver a tela dentro do terminal. Em outros terminais você usa a janela nativa da VM e a CLI do agente.
Para usar a release pronta não é preciso ter Xcode instalado. A instalação é uma linha:
# Baixa a release mais recente e confere o SHA-256 antes de instalar
curl -fsSL https://github.com/govijr/terminal-mac/releases/latest/download/get.sh | bash
# O lançador vai para ~/.local/bin, então garanta que ele está no PATH
export PATH="$HOME/.local/bin:$PATH"
# Inicia o fluxo guiado: baixa a imagem, instala a VM e dá o boot
terminal-mac upSegundo o README, o instalador não pede senha de administrador e não edita a configuração do seu shell. Ele coloca um lançador em ~/.local/bin e o runtime em ~/.local/lib/terminal-mac.
Um aviso honesto antes de você colar esse comando: as releases são assinadas com um certificado autoassinado e não passam pela notarização da Apple. O autor diz isso com todas as letras. Se você prefere não executar um script remoto direto no bash, baixe o ZIP da release, leia o install.sh e rode a partir da pasta extraída, que é um caminho que o próprio projeto oferece.
Antes de gastar banda, vale usar o modo de planejamento:
# Mostra os passos sem acessar a rede e sem mexer no disco
terminal-mac up --plan
# Cria uma segunda VM, chamada "work", a partir de uma imagem local
terminal-mac up work --ipsw /caminho/para/macos.ipsw
# Sobe a VM, espera o agente ficar pronto e devolve JSON, sem abrir o visualizador
terminal-mac up --no-viewA Configuração Que Ninguém Pula
Aqui está a parte que o título do repositório não conta. A primeira execução abre a janela do Mac virtual e você precisa passar pelo assistente de configuração do macOS e criar uma conta de usuário, como em um Mac novo. Depois, dentro do convidado:
- Abra o Finder em
/Volumes/My Shared Files/tools. - Abra o
TerminalMacGuest.appuma vez. Ele se instala na pasta~/Applicationsdo convidado e se registra para iniciar no login. - Use os dois botões do helper para liberar Gravação de Tela e Acessibilidade nos ajustes do convidado.
Essas duas permissões são dadas dentro da máquina virtual. O seu Mac físico não precisa conceder nenhuma delas, e isso é uma diferença grande em relação a ferramentas de computer use que rodam direto no host.
O README é claro: isso é uma configuração guiada, não uma instalação desassistida. O texto explica que a Apple documenta o provisionamento automático de conta para convidados com macOS 27, mas que esta build usa as APIs do SDK do macOS 26 e não implementa esse fluxo. Na prática, você não vai subir dez Macs virtuais em um pipeline de CI com um comando só. Ainda não.
Como Ligar ao Claude Code e a Outros Agentes
O terminal-mac expõe o Mac virtual por um servidor MCP com sete ferramentas: screenshot, click, drag, scroll, type, key e status. Junto vem uma skill que ensina ao agente o ciclo observar, agir e verificar. Se você ainda não trabalhou com esse protocolo, o artigo sobre o Model Context Protocol como padrão para agentes de IA cobre a base.
No Claude Code há dois caminhos:
# Caminho 1: plugin com o servidor MCP e a skill juntos (rode dentro do Claude Code)
# /plugin install terminal-mac --marketplace govijr/terminal-mac
# Caminho 2: registrar o servidor MCP e instalar a skill separadamente
claude mcp add terminal-mac -- terminal-mac mcp
terminal-mac skills install # grava em ~/.claude/skills/terminal-mac/SKILL.md
# Outros clientes MCP (Cursor, VS Code, Codex, Windsurf):
# cole a saída deste comando nas configurações de MCP do cliente
terminal-mac mcp --configUm detalhe bem pensado: as ferramentas só conversam com o helper do convidado. Quando a VM está na tela de login, elas respondem isso explicitamente, para que o agente peça a você que faça o login em vez de ficar clicando no escuro.
Controlando o Mac Virtual Pela Linha de Comando
Você não precisa de um agente para usar o projeto. Os mesmos comandos estão na CLI, o que ajuda muito a entender o que o modelo está fazendo e a escrever automações simples:
# Captura a tela do convidado em um PNG no host
terminal-mac action default screenshot --output /tmp/guest.png
# Clica nas coordenadas (x, y), contadas a partir do canto superior esquerdo
terminal-mac action default click 640 400
# Digita texto e envia atalhos de teclado
terminal-mac action default type 'Hello from the agent'
terminal-mac action default key cmd+space
terminal-mac action default key return
# Rola a página para baixo em um ponto específico da tela
terminal-mac action default scroll --dy -300 --x 640 --y 400Os comandos devolvem JSON e saem com status diferente de zero quando falham, o que permite encadear tudo em um script. O exemplo abaixo é meu, não do repositório, e usa só esse contrato para abrir um app pelo Spotlight e guardar a evidência:
#!/usr/bin/env bash
# Abre um app no Mac virtual pelo Spotlight e salva um screenshot do resultado
set -euo pipefail
VM="default"
APP="${1:-TextEdit}"
SAIDA="/tmp/guest-$(date +%s).png"
# Cada ação falha com status diferente de zero, então o set -e interrompe o script
terminal-mac action "$VM" status
terminal-mac action "$VM" key cmd+space
terminal-mac action "$VM" type "$APP"
terminal-mac action "$VM" key return
# Dá tempo para o app abrir antes de conferir a tela
sleep 3
terminal-mac action "$VM" screenshot --output "$SAIDA"
echo "Evidência salva em $SAIDA"Duas observações do README que evitam dor de cabeça. As coordenadas usam os pontos da tela do convidado e batem com as dimensões do screenshot, inclusive em telas Retina. E o comando snapshot, por enquanto, é só um apelido de screenshot: ele não devolve a árvore de acessibilidade. O agente trabalha em cima de pixels, e isso deixa o ciclo mais lento e mais sujeito a erro do que uma automação baseada em elementos.
O Que o Isolamento Garante e O Que Não Garante
Esta é a seção do README que eu mais recomendo ler inteira, porque o autor não vende o que não entrega.
O que o projeto garante:
- As ações do agente não usam as APIs de tela e de entrada do host. O helper se recusa a rodar se o
hw.modelda máquina não começar comVirtualMac. - O convidado enxerga apenas dois compartilhamentos:
control, de leitura e escrita, com as mensagens JSON e os screenshots, etools, somente leitura, com o app do helper. A sua pasta pessoal, os seus projetos, a área de transferência, o microfone e a câmera não são conectados. - Não existe nenhuma porta de rede escutando para controle remoto. A comunicação é feita por uma caixa de mensagens em arquivos, que rejeita links simbólicos, limita o tamanho das mensagens e expira ações pendentes.
O que o projeto não garante, nas palavras do próprio README:
- A checagem de
VirtualMacevita a execução acidental no host. Ela não é uma atestação de hardware nem uma defesa contra um host comprometido. - A rede padrão é NAT. O convidado acessa a internet e pode alcançar serviços no seu host e na sua rede local. O texto diz que isso não é um ambiente isolado de rede nem reforçado para código hostil.
Se a sua intenção é rodar algo em que você não confia, o caminho é criar a VM sem rede:
# Cria uma VM com recursos explícitos e sem dispositivo de rede
terminal-mac create sandbox --ipsw /caminho/para/macos.ipsw \
--cpus 4 --memory 4 --disk 64 --offline
# Acompanha e controla o ciclo de vida
terminal-mac ls
terminal-mac status sandbox
terminal-mac pause sandbox
terminal-mac resume sandbox
terminal-mac stop sandbox # pede um desligamento normal
terminal-mac stop sandbox --force # desliga na hora; trabalho não salvo pode se perderOs argumentos são CPUs lógicas, GiB de memória e GiB de disco. A VM continua consumindo CPU, memória e armazenamento do host, então um Mac de entrada com pouca memória vai sentir o peso. Se você leu o artigo de ontem sobre o Harbor da Apple e a conta de memória para IA local no Mac, o raciocínio é o mesmo: memória unificada é o recurso que acaba primeiro.
Limites do Protótipo
Além do isolamento, o README lista com franqueza o que ainda falta:
- Sem clone e sem checkpoint. Clonagem de VM e pontos de restauração estão na lista de trabalho futuro. Hoje você não reverte o Mac virtual para um estado limpo depois que o agente bagunçou tudo.
- Sem comando para apagar a VM. O texto diz que a ausência de um comando destrutivo é deliberada, por enquanto. Os dados ficam em
~/Library/Application Support/terminal-mac/machines/NOME/. - Sem tmux. Passagem por tmux e divisão automática de terminal não foram implementadas.
- Validação incompleta. O autor escreve que o teste ao vivo em um Mac limpo ainda está pendente e que os testes automatizados cobrem o protocolo, não provam que um convidado foi instalado, iniciado e controlado com sucesso.
- VPN pode derrubar a rede do convidado. Apps de VPN e proxy em modo TUN podem deixar o DNS mudo. O projeto oferece o modo
--network user, que usa o gvproxy para fazer DHCP, DNS e NAT em espaço de usuário.
Nada disso desqualifica o projeto. Só coloca ele no lugar certo: uma ferramenta de onze dias, feita por uma pessoa no tempo livre, que já resolve um problema real e ainda não é infraestrutura.
Quando Vale Usar Hoje
Com o que existe agora, eu vejo três usos em que o terminal-mac já compensa:
- Deixar o agente trabalhar enquanto você trabalha. O motivo mais simples e o mais forte. A tarefa de interface roda na VM e o seu cursor continua seu.
- Testar instalação e primeiro uso de um app para macOS. Um convidado sem a sua configuração acumulada mostra o que um usuário novo vai ver.
- Estudar computer use sem risco para a sua conta. O agente erra em um Mac que não tem o seu e-mail, as suas senhas nem os seus arquivos.
E dois casos em que eu esperaria: rodar código hostil, porque o próprio autor diz que o ambiente não foi reforçado para isso, e automação em escala, porque a configuração inicial ainda depende de uma pessoa clicando no assistente do macOS.
O Que Vem Pela Frente
O terminal-mac acerta na direção. A discussão sobre agentes passou os últimos meses focada em qual modelo é melhor, e a pergunta que começa a pesar é outra: onde o agente roda e o que ele alcança de lá. Dar a ele uma máquina própria, com fronteiras explícitas e documentadas, é uma resposta melhor do que confiar que ele vai se comportar no seu desktop.
O que falta é o que transformaria o protótipo em ferramenta de trabalho: checkpoint para voltar a um estado limpo, snapshot de acessibilidade para o agente parar de adivinhar em cima de pixels e o provisionamento desassistido que a Apple já documenta para convidados com macOS 27. São três itens que o próprio README cita como trabalho futuro, então o caminho está traçado.
Se você tem um Mac com Apple Silicon e espaço em disco sobrando, vale uma tarde de teste. Leia a seção de isolamento antes, rode o up --plan e comece com uma tarefa pequena.
Bora pra cima! 🦅
📚 Quer Acompanhar o Que Vem Por Aí?
Este artigo cobriu o terminal-mac e o isolamento de agentes de IA em um macOS virtual, mas o ecossistema muda toda semana e nem tudo vira artigo aqui.
No X eu compartilho o que estou testando, os bastidores dos projetos e as novidades que aparecem antes de virarem post.
Me Segue Lá
💡 Conteúdo diário sobre desenvolvimento, carreira e as ferramentas que eu realmente uso

