Um coding agent a correr 100% na tua máquina, sem enviar código para lado nenhum, sem gastar em tokens, sem depender de internet.
Já usei Claude Code, Codex e Gemini CLI. São ferramentas incríveis, mas têm um problema: ou pagas por token, ou estás dependente de um servidor remoto. Quando fico sem internet (sim, ainda acontece) fico sem agente. E mesmo com internet, o custo acumula rápido em projetos maiores.
Há uns meses comecei a explorar a alternativa: coding agents open-source que correm localmente. A combinação que mais gostei foi Pi (o agente) + LM Studio (o servidor) + Qwen3.6-27b (o modelo). Tudo em localhost, zero custos, privacidade total.
Neste guia completo vais aprender:
- O que precisas em termos de hardware para correr modelos locais
- A instalar o LM Studio e carregar o modelo certo
- A configurar o Pi para falar com o servidor local
- A escolher o tamanho de contexto ideal para o teu trabalho
- Um workflow híbrido que usa cloud para planear e local para executar
- A reutilizar skills do Claude Code no Pi
- As armadilhas mais comuns e como as evitar
Arquitetura: Como é que isto funciona?
A ideia é simples. Um coding agent (como o Claude Code, Codex ou Pi) comunica com um modelo através de uma API HTTP. Envia um pedido, o modelo devolve tokens, e o agente usa ferramentas (ler ficheiros, editar, correr comandos) para fazer o trabalho.
No setup tradicional, essa API está num datacenter algures. No setup local, está na tua máquina.
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ Pi │ ──→ │ LM Studio │ ──→ │ Qwen3.6-27b │
│ (coding agent) │ ←── │ (localhost:1234) │ ←── │ (modelo) │
└──────────────────┘ └──────────────────┘ └──────────────────┘
O Pi fala o protocolo chat-completions da OpenAI. O LM Studio expõe um endpoint compatível em http://localhost:1234/v1. Basta apontar um ao outro e está feito. O modelo vive na GPU, o servidor faz de ponte, o agente faz o trabalho de verdade.
Passo 1: Verificar o Hardware
Antes de instalar seja o que for, descobre o que a tua máquina aguenta. Um modelo de 27B parâmetros em quantização 4-bit (Q4) pesa ~15-16 GB de weights. Depois tens de somar a cache de contexto (KV cache) por cima.
Há duas ferramentas web que ajudam:
- canirun.ai: detecta o teu hardware e classifica modelos de “corre bem” a “pesado demais”
- caniusellm.com: semelhante, com recomendações de quantização (Q4 vs Q8 vs FP16)
Resumo rápido:
| Hardware | VRAM / RAM | O que esperar |
|---|---|---|
| GPU NVIDIA 24 GB (RTX 4090) | 24 GB VRAM | Doce: Q4 + contexto até 64K |
| GPU NVIDIA 12 GB (RTX 4070) | 12 GB VRAM | Modelo mais pequeno (14B) ou Q4 com pouco contexto |
| Apple Silicon 64 GB | 64 GB unificada | Confortável: Q4 + 128K contexto |
| Apple Silicon 128 GB (M5) | 128 GB unificada | Rei: Q6/Q8 + 256K sem pensar |
| Apple Silicon 16 GB | 16 GB unificada | Possível com modelo 14B e contexto reduzido |
Nota pessoal: Uso um M1 Max com 64 GB. Consigo correr o Qwen3.6-27b em Q4_K_M com contexto de 64K sem suar. Se tens Apple Silicon, a memória unificada é uma vantagem enorme: tudo o que a máquina tem está disponível para o modelo.
Passo 2: Instalar o LM Studio e Carregar o Modelo
O LM Studio é a forma mais fácil de ter um servidor local de modelos. Tem interface gráfica, busca de modelos no HuggingFace, e expõe uma API compatível com OpenAI.
- Descarrega o LM Studio em lmstudio.ai/download (macOS, Windows ou Linux)
- Na pesquisa de modelos, procura por
qwen3.6-27b - Escolhe uma quantização: Q4_K_M é o ponto ideal entre qualidade e tamanho
- Carrega o modelo
- Vai ao separador Developer e ativa o Start Server
O servidor fica disponível em http://localhost:1234/v1. Podes confirmar com:
curl http://localhost:1234/v1/models
Se vires o modelo listado, está pronto.
Importante: Carregar o modelo no LM Studio não é suficiente. Tens de ir ao separador Developer e ligar o servidor explicitamente. É o erro mais comum.
Passo 3: Instalar o Pi
O Pi é o coding agent minimalista do Mario Zechner. Dá ao modelo quatro ferramentas (read, write, edit, bash) e é extremamente eficiente em tokens.
Instala com o script oficial:
curl -fsSL https://pi.dev/install.sh | sh
Ou via npm:
npm install -g @mariozechner/pi-coding-agent
Confirma a instalação:
pi --version
Passo 4: Configurar o models.json
O Pi descobre providers e modelos através de um ficheiro models.json. Abre-o:
vi ~/.pi/agent/models.json
E adiciona esta configuração:
{
"providers": {
"lmstudio": {
"baseUrl": "http://localhost:1234/v1",
"api": "openai-completions",
"apiKey": "lm-studio",
"models": [
{
"id": "qwen/qwen3.6-27b",
"input": ["text"]
}
]
}
}
}
Alguns detalhes importantes:
"api": "openai-completions": diz ao Pi para usar o formato de chat completions da OpenAI. É isto que faz qualquer servidor local compatível (LM Studio, Ollama, vLLM) funcionar sem adaptações."apiKey": "lm-studio": o LM Studio ignora a chave, mas o protocolo OpenAI exige o campo. Qualquer string não vazia serve.- O
iddo modelo tem de coincidir exatamente com o que o LM Studio expõe. Se não tiveres a certeza, corre:bash curl http://localhost:1234/v1/modelsCopia oiddo JSON que aparece e usa esse.
Depois de guardar, abre o Pi e verifica com /model: deves ver o teu modelo local listado. Podes alternar entre modelos locais e cloud no mesmo picker.
Passo 5: Tamanho do Contexto
A janela de contexto é a memória de trabalho do modelo. Tudo o que o agente “vê” (histórico da conversa, ficheiros abertos, output de comandos) tem de caber ali.
Em modelos cloud, o contexto é fixo e gerido pelo provider. Em modelos locais, és tu que decides, e pagas o custo em VRAM.
No LM Studio, define o contexto nas definições do modelo (antes ou depois de carregar) e reload para aplicar.
Quanta VRAM leva cada tamanho?
Estes valores são para um modelo de 27B parâmetros em Q4. A base de ~16 GB de weights é fixa; o extra varia com o contexto:
| Contexto | Uso típico | VRAM extra (KV cache) |
|---|---|---|
| 16K | Uns ficheiros pequenos, prompts simples | ~1 GB |
| 64K | UI development, tarefas médias | ~4 GB |
| 128K | Multi-file refactors, contexto de repositório | ~8 GB |
| 256K | Planeamento com repositório completo | ~16 GB |
A minha recomendação: começa em 64K. É mais que suficiente para o dia-a-dia. Se o agente começar a “esquecer-se” de coisas no meio da sessão, sobes para 128K. 256K é para quando precisas mesmo de carregar o repositório inteiro.
256K Local vs 1M Cloud
O Qwen3.6-27b suporta até 256K tokens de contexto nativamente. Para comparação, o Claude Opus 4.8 corre com 1M tokens. Há um fosso, mas não é tão mau como parece.
256K ainda é muito. Dá para: - Um módulo e os seus testes - Uma funcionalidade completa com vários ficheiros - Uma sessão de debugging longa com histórico
Onde o 1M da cloud ganha é no cenário de repositório inteiro: carregar um projeto grande de uma vez, tarefas agentic com centenas de passos, análises que precisam de documentos enormes em contexto.
A minha regra:
- Local (Qwen3.6-27b): edições focadas, coding do dia-a-dia, refactors contidos, trabalho que queres offline ou privado, tarefas onde não queres gastar tokens
- Cloud (Claude / Codex / Gemini): contexto de repositório inteiro, raciocínio mais exigente, runs agentic longas
Reutilizar Skills do Claude Code
Se já tens skills (SKILL.md) no Claude Code, tenho boas notícias: o Pi usa o mesmo formato Agent Skills Standard.
A má notícia é que o Pi não descobre skills fora das suas pastas por defeito. Se as tuas skills estão em ~/.claude/skills, tens de o dizer explicitamente.
Configura no ~/.pi/agent/settings.json:
{
"defaultProvider": "lmstudio",
"defaultModel": "qwen/qwen3.6-27b",
"skills": [
"~/.claude/skills",
"~/.codex/skills"
]
}
O defaultProvider e defaultModel são opcionais: fazem o Pi arrancar já no modelo local, sem teres de escolher manualmente.
Depois de editares, reinicia o Pi. As skills só são lidas ao arranque. A partir daí, o comportamento é igual ao Claude Code: as descrições carregam em contexto, e as instruções completas só entram quando uma tarefa corresponde.
Gotchas: O que me tramou
Uma lista do que me aconteceu e do que deves evitar:
- LM Studio server tem de estar ligado. Carregar o modelo não chega. O Server tem de estar ativo no separador Developer, senão o Pi não consegue contactar
localhost:1234. - Model ID tem de coincidir. Se no
models.jsonescrevesteqwen/qwen3.6-27be o servidor expõeqwen3.6-27b-Q4_K_M, não vai funcionar. Correcurl http://localhost:1234/v1/modelse copia exatamente o que aparece. - É mais lento que cloud. Um modelo de 27B na tua GPU não bate os token rates de um servidor da Anthropic. A primeira resposta demora mais, e geração é mais lenta. É normal. Compensa pelo custo zero e privacidade.
- O Pi é token-eficiente. Isto é uma vantagem para modelos locais. O system prompt do Pi é muito mais pequeno que o do Claude Code, o que significa que sobra mais contexto para o teu código.
Workflow Híbrido: Planear com Claude, Executar Local
O Pi não é exclusivamente local. Suporta cloud também, o que abre um workflow que uso todos os dias.
Faz login no Pi com a tua conta Anthropic:
/login
Funciona com subscrição Claude Pro/Max ou API key. O Claude aparece no mesmo /model que o modelo local.
O workflow:
- Planear com Claude: arquitetar uma funcionalidade, dividir o trabalho em passos, usar o 1M de contexto para carregar o repositório inteiro. Isto é onde o raciocínio mais forte faz diferença.
- Executar com local:
/model qwen/qwen3.6-27be mãos à obra. As edições repetitivas, correr testes, fazer o refactor em si. Grátis, offline, privado. - Repetir: Volta e meia volto ao Claude para reavaliar ou desenrascar um problema mais complexo. Depois volto ao local.
Consigo alternar entre modelos na mesma sessão sem perder contexto. O histórico fica todo lá; só muda qual o modelo que está a gerar tokens.
Uso o OpenSpec para criar os planos: peço ao Claude para desenhar a solução, e executo os passos no modelo local. Funciona bem para projetos de tamanho médio.
Dica: Se vais usar o modelo local para a maior parte do trabalho, considera configurar
"defaultProvider": "lmstudio"nosettings.json. O Pi arranca logo no modelo local, e só mudas para cloud quando precisas.
Conclusão
Este guia mostrou-te como montar um coding agent local completo:
- LM Studio para servir o modelo em
localhost:1234/v1 - Qwen3.6-27b (ou outro modelo compatível) a correr na tua GPU
- Pi como coding agent configurado para usar o servidor local
- Skills do Claude Code reutilizadas sem alterações
- Workflow híbrido que junta o melhor dos dois mundos
O resultado é um agente que corre offline, sem depender de cloud, sem custos de API, com privacidade total do teu código. A qualidade não é a mesma de um Claude Opus, mas para o dia-a-dia (edições, refactors, debugging) é perfeitamente utilizável.
Se tens um Mac com Apple Silicon e pelo menos 32 GB de RAM, nem precisas de GPU dedicada. Instala o LM Studio, descarrega o modelo, configura o Pi, e estás pronto.
Recursos
- LM Studio: servidor local de modelos
- Pi coding agent: terminal coding agent
- Pi docs: Quickstart
- canirun.ai: verifica o teu hardware
- caniusellm.com: recomendações de quantização
- Agent Skills Standard: formato de skills partilhado
- OpenSpec: planos para workflow híbrido
- Artigo original do Zarar: inspiração para este guia
Comentários (0)
Nenhum comentário ainda. Seja o primeiro!
Deixar comentário