primocode
v10.17.1
Published
PrimoCode — agente de engenharia com IA e cursor próprio. Requer conta Conecta Primo AI (Premium ou Super). Cria arquivos, roda comandos, controla navegador e desktop: abre apps, clica em botões e ícones pelo nome, digita e usa atalhos.
Maintainers
Readme
PrimoCode v10.17.1
Agente de engenharia brasileiro para o terminal, no estilo Claude Code. Cria arquivos de verdade, roda comandos, controla o navegador e o desktop — e lembra do que fez entre uma sessão e outra.
A API já vem configurada. Entrou na sua conta Conecta Primo AI, pode usar: não há provedor para escolher, chave para colar nem teto de gasto seu. Os modelos são os grátis do
OpenRouter, e cada apelido (top/main/fast) é uma corrente: se um modelo
está no limite de pedidos, o próximo atende. Você não vê o erro, e não paga nada.
▐▛███▜▌ Primo Code v10.17.1
▝▜█████▛▘ Bem-vindo de volta, Joel
▘▘ ▝▝ ~/primocode · /dir <pasta> mudaPersonalize o mascote (primo, fox, cat) e o nome com que ele te chama —
veja /mascot e /name.
Primo (voz)
/voice abre a tela do Primo: agenda, clima, música, máquina e um robô 3D no centro. Diga "Primo" para chamar; ele fala frase a frase e você pode interromper. Na primeira vez cria ~/.primocode/voz-venv sozinho (primocode doutor mostra o estado). Robô offline: "robo":"expressive" em ~/.primocode/voz.json.
Novidades da 10.14
- Vídeo de motion de ponta a ponta (EffectCraft, 68 receitas, voz, trilha, prévia e editor por comando). Detalhes no
CHANGELOG.md. - Exportar para redes em três formatos, com capa, legenda e créditos. Kit de marca com
primocode marca. - Sandbox (
/sandbox on), hooks,-p,--resume,--worktree, modo plano e planos por recurso (primocode planos). - Instalou, está pronto: o motor After Effects baixa sozinho.
primocode doutormostra o que falta e como resolver.
O que mudou na 10.14
- Motor After Effects: a ferramenta
estudio_aeroda um JSX e renderiza o mp4, com a skillafter-effects. - Projetos completos: seis receitas que a IA consulta (
estudio_midia acao:projetos), uma delas em After Effects. - MCP remoto: servidores por HTTP (
{"type":"http","url":"https://…/mcp"}nomcp.json), com login OAuth pelo navegador. - Clube do Motion:
primocode mcp login clube-do-motionentra com a conta assinante e libera projetos de motion, referências, skills e músicas. - O token fica em
~/.primocode/mcp-tokens.json(só você lê).primocode mcp logout <nome>apaga.
O que mudou na 10.13
- Motion pelas referências: o título enche a tela (rótulo nunca abaixo de 2% da altura), a cena dura de 1 a 2 s, o texto entra com ataque rápido e freio forte, e a frase sai inteira. As saídas que espalhavam letras saíram. O círculo de caneta na palavra-chave ganha o ✓. Sem quadro morto entre as cenas. A conta está em
docs/planos/2026-10-15-motion-pelas-referencias.md. - Revisão do texto: antes do render, o PrimoCode avisa texto pequeno demais para o celular e contraste abaixo de 3:1.
- Camadas sem legenda dobrada: a cena escrita pela IA não repete a fala por cima da legenda.
- Voz do VoiceStudio: com o app aberto no Mac, ele narra primeiro. Fechado, a narração segue para o Gemini (
PRIMOCODE_SEM_VOICESTUDIO=1desliga). - Edição de vídeo: num vídeo sem pedido falado, a edição não para mais na legenda. O agente corta, dá zoom e cor.
O que mudou na 10.12
- Vídeo em camadas: você grava só a fala e o PrimoCode monta o resto. O rosto vira cartão, bolinha no canto, some e volta, com mola, e o motion ocupa o espaço que sobra. A legenda vai palavra por palavra, com a palavra forte em serif itálico. O áudio nunca pula. Use
estudio_video acao:"camadas": sem batidas, ele propõe pela transcrição. - Fábrica: camadas 3D empilhadas e terminal com o prompt sendo digitado.
O que mudou na 10.11
- Barulhinhos: cada palavra, item e ponto que entra no motion faz um som pequeno, numa escada de notas, com tique, clique de mouse, blip, swoosh e sub na revelação. A cena pode pedir o som no quadro certo (
sons: [{t, som}]). - Vídeo sem narração:
semNarracao: true(ou "sem voz" no pedido) gera só motion, trilha e efeitos, e a trilha não abaixa. - Efeitos de fábrica: peça do site em 3D com impacto, brilho que varre, cor que inunda, risco em várias linhas, entrada com física e raios de luz. Quando nenhuma cena é escrita, o plano devolve o cardápio de efeitos.
- 3D com peso: o boneco antecipa, respira, pula amassando e anda com o quadril.
- Risco: texto riscado que quebra em várias linhas ganha um traço por linha.
O que mudou na 10.4
- A tela do OpenCode. O PrimoCode abre em tela cheia: a conversa rola em
cima, a caixa de digitar fica presa no pé, e a barra da direita mostra a
sessão, o contexto (tokens e % usado), o modo, a pasta e a versão. Sem
conversa, a home põe o logo e a caixa no meio.
Tabtroca o modo,Ctrl+Pabre os comandos (o menu abre em cima da caixa), a roda do mouse e oPgUp/PgDnrolam a conversa.PRIMOCODE_TELA=linhavolta ao jeito antigo. - Motion sem encostar na borda. Margem de 6% nas laterais e 7% em cima e embaixo, e 4% entre elementos — garantido em código antes do render.
- Vídeo gravado em 3D (
estilo: personagem). Personagens modelados — gente ou robô — conversando num set (podcast, estúdio, escritório). A boca segue a voz letra por letra, eles piscam, gesticulam e viram a cabeça para quem fala. A câmera corta como num programa gravado: aberto, ombro, close e detalhe, com o balanço de câmera na mão. Por cima: legenda grossa palavra por palavra, o nome de quem fala, o cartão de destaque, o REC e o grão de filme. Peça "um podcast", "uma entrevista" ou "o Claude falando em 3D". - A peça do site, tirada pelo código.
estudio_midia acao:elementoslê o site e lista logo, menu, título, botões, cartões, preço;acao:elementotira uma delas sozinha, em PNG transparente no dobro da resolução, com o código (HTML, fonte, cor, raio) para redesenhar se quiser. - Recorte de fundo com IA sem instalar nada. Com o
uvna máquina, oacao:recortarusa o rembg num ambiente à parte, em vez do corte por cor. - O logo do Claude saiu do cardápio dos vídeos.
- Com Claude, Codex ou chave própria, o agente não esquece o arquivo que acabou de ler (antes relia o mesmo arquivo várias vezes).
O que mudou na 10.0
- A potência vem do sistema, não do modelo. O mesmo pedido de landing
(3 arquivos) caiu de 793 s para 377 s, e de 62 voltas de agente para 5.
- O construtor faz o produto direto, e o Chrome escondido confere.
- Ele não relê o arquivo que acabou de escrever.
- O conteúdo já gravado não volta ao modelo a cada ida.
- O
edit_fileacha o trecho mesmo com espaço ou indentação errados.
- Digite enquanto ele trabalha. O recado entra na tarefa depois do passo atual, sem esperar ela acabar.
- A tela mostra que está andando. O spinner mostra os segundos e o que
está chegando, e a espera pela vez no modelo aparece.
PRIMOCODE_TRACO=1diz, a cada ida, o tamanho, o erro e a espera. - Navegador por refs. A página chega como
@e3 [button] "Entrar", e o clique vai pela ref, sem seletor CSS chutado. primocode video help: um editor de vídeo por linha do tempo. O agente opera pelo shell: cortar silêncio, apagar palavras, legendas, layouts, cor, zoom, undo e export em ffmpeg.- Motion novo. Três estilos:
vox, o explainer editorial;marca, o brand reveal com as alças da fonte, logo cromado e cartões de cor;lancamento, o filme de produto.
/voiceficou simples. Você fala, e o que disse entra como se tivesse digitado. A resposta sai em voz alta.- Saíram a janela (
/rc,/ide,primo --app), a orb e o "ei, primo".
Por que trocar o Claude Code pelo PrimoCode
| | PrimoCode | Assistentes gringos de terminal |
|---|---|---|
| Idioma | Nasceu em português do Brasil — fala como gente, não como manual traduzido | Inglês primeiro; PT-BR é tradução |
| Chave de API | Não precisa. Instala e usa — o modelo já vem hospedado | Exige conta e chave de API própria |
| Controla a máquina | Navegador (Chrome real) e desktop: mouse, teclado, tela | Em geral só arquivos e shell |
| Memória | Cada projeto lembra o que foi feito, entre sessões | Esquece ao fechar |
| Instalação | Node puro, zero dependências — segundos | Pacotes e dependências |
| Cara própria | Mascote, nome e temas que você escolhe | Fixo |
| Modelos | Escolhidos pelo produto (/effort regula o esforço), ou a sua própria chave com /api | Preso ao provedor do fabricante |
Em uma frase: é o poder de um agente de código no terminal, em português, controlando o seu computador de verdade — sem você precisar configurar chave de API nenhuma.
Comparado ao Claude Code e ao Codex
Tabela completa, com arquivo:linha, em docs/paridade.md. O resumo:
| | Claude Code | Codex | PrimoCode |
|---|---|---|---|
| Hooks antes/depois de ferramenta | tem | parcial | tem (~/.primocode/hooks.json) |
| Modo só leitura (plan) | tem | read-only | tem (/permissoes plano) |
| Headless (-p, JSON, stdin) | tem | codex exec | tem |
| Desfazer por pedido | /rewind | usa git | tem (/desfazer) |
| MCP stdio, HTTP, OAuth | tem | tem | tem |
| Sandbox de SO | opcional | tem | não |
| Worktrees | tem | não | não |
Hook em 3 linhas: {"PreToolUse":[{"matcher":"run_shell","command":"./checar.sh"}]}. O comando
recebe o evento em JSON no stdin; sair com código 2 bloqueia a ferramenta. Em script:
git diff | primocode -p "revisa" --output-format json --permission-mode plan.
Instalação
npm install -g primocodeRequer Node.js 18.17+. O CLI não tem dependência nenhuma — só a stdlib do
Node — e por isso instala em segundos. Depois é só primocode: ele abre o
login no navegador e, voltando, está pronto.
Não tem Node? Instale em nodejs.org e repita o comando
acima. Quem já clonou este repositório pode usar os instaladores que moram
aqui (install.sh no macOS/Linux/WSL, install.cmd no Windows): eles detectam
o Node, oferecem instalar, e apontam o npm para ~/.npm-global em vez da pasta
do sistema — que é o que evita o EACCES da tabela abaixo.
Se der erro
| Erro | O que fazer |
|---|---|
| command not found: npm | Você não tem Node. Rode o install.sh — ele detecta, pergunta e instala pra você. |
| EACCES ... mkdir '/usr/local/lib/node_modules' | O npm está apontando para uma pasta do sistema. Não use sudo — rode o install.sh, que move o npm para ~/.npm-global. |
| command not found: primocode | A instalação não terminou, ou o PATH não foi recarregado. Abra um terminal novo; se persistir, rode o install.sh de novo. |
O install.sh é seguro de rodar quantas vezes quiser — ele conserta o que estiver errado e não duplica nada.
Como funciona
Todo trabalho acontece dentro de uma pasta de projeto, em ~/primocode/:
~/primocode/
├── memory-geral.md <- sobre você: nome, preferências, convenções
├── jogo-de-carro/
│ ├── memory.md <- o que este projeto é e o que já foi decidido
│ ├── index.html
│ └── src/game.js
└── site-de-vendas/
├── memory.md
└── ...Ao receber o primeiro pedido da sessão, o PrimoCode deriva um nome de projeto do que você pediu. Se já existir um projeto parecido, ele pergunta antes de criar pasta nova:
Primo Code ❯ faça um jogo de carro 2D
Já existe um projeto parecido: jogo-de-carro
? Continuar nele? (S/n)Os dois arquivos de memória são lidos no começo de cada tarefa e atualizados no fim. É por isso que a IA não esquece o projeto entre sessões.
Modos
| Modo | O que faz | |---|---| | Auto (padrão) | Escolhe por pedido: conversa vai pro chat, tarefa vai pro agente | | Primo Code | Agente completo — cria arquivos, roda comandos, abre o navegador | | Chat | Conversa pura, sem tools |
Alterne com /mode auto, /mode primocode ou /mode chat. A escolha fica
guardada entre sessões.
Por que o auto é o padrão. O modo Primo Code manda o catálogo das 30 ferramentas em todo pedido — cerca de 4.700 tokens antes de você digitar a primeira letra. Um "oi" custava o mesmo que uma refatoração, e num plano com teto diário isso acaba a cota no meio da tarde. O auto decide na sua máquina, sem chamar o modelo para isso, e mostra o que escolheu:
Auto ❯ oi
⎿ Chat · cumprimento
Auto·chat ❯ conserta o bug do login em src/auth.js
⎿ Primo Code · cita arquivo ou caminhoNa dúvida ele vai para o chat: errar para chat custa repetir o pedido, errar para o agente custa token e pode escrever arquivo que ninguém pediu.
Onde ele trabalha
Por padrão, sempre ~/primocode — não importa de onde você abriu o
PrimoCode. Antes ele adotava a pasta atual do terminal, e o mesmo "crie um site"
caía num lugar diferente a cada vez; quem digitava não tinha como saber onde ia
parar. Agora o começo é sempre o mesmo, e o cabeçalho avisa em amber qual é.
Para trabalhar em outra pasta, três caminhos:
| Situação | Pasta de trabalho |
|---|---|
| Falar o nome dela no pedido — "crie o index.html na pasta loja-do-joao" | ele procura no seu computador (~/primocode, Downloads, Documentos, Desktop, projetos…) e muda sozinho |
| /dir ~/meus-projetos/site | a pasta que você escolher, onde ela estiver |
| /project loja | cria ~/primocode/loja, com memória própria |
A busca por nome é conservadora de propósito: se achar duas pastas com o mesmo
nome, ela lista e espera o /dir em vez de escolher — heurística não deve
decidir onde um agente escreve arquivo. E nome de arquivo nunca é confundido com
pasta: "edita o src/app.js" não muda pasta nenhuma.
Pasta de projeto nova só nasce quando ele vai mexer em arquivo. Pedir "abre o
Chrome" não cria projeto — antes criava, e ~/primocode enchia de pasta vazia.
/dir sem argumento mostra a pasta ativa e de onde ela veio. Caminho relativo
resolve contra a pasta ativa, então depois de um /dir o /dir src entra na
subpasta. Se a pasta não existir, ele pergunta antes de criar; se for a sua home
ou a raiz do disco, pergunta de novo — é onde um arquivo escrito por engano dói
mais.
Ferramentas do agente
| Tool | Para quê |
|---|---|
| write_file | Cria arquivo novo ou reescreve inteiro |
| edit_file | Troca um trecho exato. É o que evita reescrever 800 linhas pra mudar uma |
| multi_edit | Várias trocas no mesmo arquivo, em ordem, tudo-ou-nada |
| read_file | Lê o arquivo, com offset/limit para os grandes |
| glob | Acha arquivos por padrão: **/*.js, src/**/*.{ts,tsx} |
| grep | Procura texto/regex dentro dos arquivos, com arquivo e linha |
| list_dir | Árvore de arquivos |
| run_shell | Roda comando na pasta do projeto |
| run_in_new_terminal | Sobe servidor de dev / watch em outro terminal |
| write_todos | Plano de tarefas da sessão, visível no terminal |
| open_in_browser | Abre HTML ou URL no navegador padrão |
| spawn_agent | Delega uma sub-tarefa a outro agente |
O edit_file é rigoroso de propósito: se o trecho não existe, ou aparece mais
de uma vez sem replace_all, ele recusa e devolve as linhas reais do
arquivo — em vez de editar o lugar errado.
Controle de navegador e desktop
O agente não só abre o navegador — ele age nele, e no computador também.
| Tool | Para quê |
|---|---|
| browser_open | Abre a página num Chrome controlado (CDP) e espera carregar |
| browser_click | Clica por texto visível, seletor CSS ou coordenada |
| browser_type | Digita num campo (por seletor) ou onde o foco estiver |
| browser_key | Enter, Tab, Escape, setas… |
| browser_read | Lê o texto visível da página (conferir o resultado) |
| browser_screenshot | Print da página, salvo no projeto |
| browser_scroll / browser_wait / browser_eval | Rolar, esperar seletor, rodar JS |
| desktop_screenshot | Print da tela inteira do usuário |
| desktop_click / desktop_move / desktop_drag | Mouse na tela real |
| desktop_type / desktop_key / desktop_scroll | Teclado e rolagem do sistema |
| desktop_size | Resolução da tela, para calcular coordenadas |
O navegador roda via Chrome DevTools Protocol (sem dependências npm).
Requisitos por plataforma (as ferramentas dão um erro claro se faltar algo):
| | Navegador | Desktop (mouse/teclado) | Screenshot da tela |
|---|---|---|---|
| Windows | Chrome ou Edge | nativo (PowerShell) | nativo (PowerShell) |
| macOS | Chrome/Chromium | brew install cliclick | nativo (screencapture) |
| Linux | Chrome/Chromium | apt install xdotool | scrot, gnome-screenshot, spectacle, maim ou ImageMagick |
Variáveis de ambiente úteis:
CHROME_PATH/PRIMOCODE_CHROME— aponta para um Chrome fora do caminho padrãoPRIMOCODE_BROWSER_HEADLESS=1— roda o navegador sem janela (CI/servidor)
O Estúdio: vídeo, slides e arte
Sete ferramentas (estudio_projeto, estudio_plano, estudio_midia,
estudio_narrar, estudio_video, estudio_render, estudio_site), um
renderizador só — o Remotion — e nenhum template. Não há tema pronto,
layout pronto nem fundo pronto: o plano é feito de primitivas (texto,
forma, imagem, vídeo, ícone, legenda, componente) com keyframes e câmera
própria por cena, e é a IA que compõe cada vídeo do zero. Lista fechada de
seis temas é template com outro nome, e o resultado dela é todo vídeo sair
igual.
Antes de produzir entra o diretor (planejar_producao): uma conversa
própria que decide arco, narração falada cena a cena, voz, direção de arte e
a mídia a buscar — e só então o produtor monta as cenas. Ele existe porque
quem está montando o JSON já gastou a atenção no JSON, e é ali que o roteiro
vira legenda de slide ("Vantagens", "Nossos serviços") em vez de virar fala.
De onde vem o material, tudo sem chave de API:
| O quê | Fonte | |---|---| | Ícones | Iconify — 200 mil ícones, 150 coleções | | Imagens e som | Openverse (licença aberta); Pexels/Freesound entram por cima quando há chave | | Fontes | Google Fonts inteiro | | Logo de marca | Simple Icons → o site da empresa → Wikimedia Commons | | Identidade visual | o próprio site: cor, paleta, tipografia e o que a marca diz de si |
A licença desce junto de tudo, num .licenca.json ao lado do arquivo:
descobrir depois de publicar que a foto exigia crédito é tarde.
Motor After Effects (EffectCraft)
A ferramenta estudio_ae usa o EffectCraft (storytold, licença MIT/Apache-2.0): ele roda JSX (ExtendScript) no modelo de objetos do After Effects, sem o After Effects instalado. O PrimoCode baixa o binário 0.11.1 na primeira vez para ~/.primocode/bin/effectcraft-0.11.1/ e confere o sha256. PRIMOCODE_EFFECTCRAFT_BIN aponta para um binário seu. A IA escreve o JSX, as fontes vêm do Google Fonts e os quadros de conferência saem em ae/.
Projetos completos
Seis receitas originais em lib/estudio/dados/projetos/ (narrado, produto, SaaS, só com sons, elementos de site e After Effects). Cada uma traz a ficha técnica, as etapas e um prompt com {{CAMPOS}}. A IA lista com estudio_midia acao:"projetos" e lê uma com acao:"projeto" nome:"<id>".
Subagentes
Para tarefas com partes independentes, o agente delega:
Primo Code site ❯ crie o visual do site
◆ Agente criar o CSS
⎿ Write style.css
⎿ criado · 40 B
◆ Criei style.css com fundo #111
Pronto: CSS delegado e criadoO subagente tem conversa própria — não vê o seu diálogo — e devolve só o resumo final. Ele não pode criar outro subagente, então a árvore nunca cresce sem controle.
Nunca "pronto!" falso
Se uma ferramenta falha e o agente tenta encerrar dizendo que deu certo, o PrimoCode barra e devolve a tarefa para ele:
⎿ Edit app.js
⎿ Trecho não encontrado
→ agente tenta finish("Porta alterada")
→ BARRADO: "NÃO terminou. Estas tools falharam..."
⎿ Edit app.js
⎿ 1 troca · ±0 linhas ← agora foi de verdadeTestes
npm test # o CLI: ferramentas, agente, Estúdio, vídeo (sai com 0)
npm run test:server # o servidor, dentro de server/Uso
primocode # interativo
primocode "crie um jogo de carro" # one-shot
primocode -f app.js "onde está o bug?" # com arquivo anexado
primocode -c # continua a última conversa salva (--continue)
primocode --resume [id] # retoma uma conversa (sem id: lista e você escolhe)
primocode --worktree <nome> # worktree ../<repo>-<nome> em branch nova, e abre a sessão láComandos
| Comando | Descrição |
|---|---|
| /resume [n\|id] | Lista as conversas salvas ou retoma uma |
| /worktree <nome> | Cria ../<repo>-<nome> numa branch nova e entra nele (só em repo git) |
| /dir <caminho> | Trabalha numa pasta que já existe, onde você quiser |
| /project | Lista projetos. /project <nome> cria em ~/primocode |
| /projetos [n] | Os projetos de ~/primocode do mais recente para o mais antigo, com quando mexeu e o tamanho. /projetos 2 entra no segundo (o /project sem nome mostra a mesma lista) |
| /novo <descrição> | Começa um projeto NOVO do zero, em pasta própria com nome escolhido pelo modelo — sem cair num projeto parecido que já existe |
| /mode primocode\|chat\|auto | Alterna o modo (fica guardado) |
| /voice | Modo voz: você fala, e o que disse entra como se tivesse digitado (na fila, ou como recado no meio da tarefa). A resposta sai em voz alta, resumida; falar por cima corta. /voice parar desliga |
| /comandos | Seus comandos: um .md em ~/.primocode/comandos/ (ou <projeto>/.primocode/comandos/) vira /nome, e $ARGUMENTOS recebe o que vem depois. Já vêm /revisar, /explicar e /publicar. /comandos novo <nome> cria um |
| /skills · /marketplace | O que ele sabe fazer bem. Tela navegável pelas setas, e "New Skill" para escrever a sua |
| /connectors | Quem está atendendo os seus pedidos (só mostra — não há o que configurar) |
| /effort | O esforço do agente, num slider (←/→, Enter confirma): do low ao ultracode. O modelo sai daí |
| /permissoes auto\|perguntar\|livre | Quando ele pede licença. auto (padrão) roda tudo, mas pergunta antes do que não tem volta; perguntar pede antes de todo comando e toda escrita; livre nunca pergunta (fica guardado) |
| /api | Roda com a SUA assinatura (Claude Code, Codex, sem chave) ou a SUA chave (Gemini, ChatGPT, Claude, Groq, OpenRouter, DeepSeek), direto do seu computador, sem o limite do servidor. /api modelo <nome> troca o modelo · /api off volta ao servidor |
| /init | Estuda o projeto e escreve um PRIMO.md na raiz: o que é, como rodar, stack, convenções. Ele é lido em todo pedido (vale também AGENTS.md ou CLAUDE.md, e ~/.primocode/PRIMO.md para todos os projetos) |
| @arquivo | No meio do pedido (melhora o @index.html, @"nome com espaço.txt") anexa aquele arquivo do projeto só a esse pedido. Até 40 KB por arquivo, 120 KB no total |
| /attach <arquivo> | Anexa arquivo ao próximo pedido |
| /detach · /files | Remove / lista anexos |
| /all | Lista as 46 ferramentas que ele sabe usar, por grupo |
| /desfazer · /undo | Volta o projeto para como estava antes do último pedido — inclusive o que um comando apagou, moveu ou gerou (com git instalado, cada pedido tira uma foto do projeto num git à parte, que não toca no seu .git; node_modules, dist e o que o .gitignore ignora ficam de fora). Sem git, volta o que o agente escreveu com as ferramentas de arquivo. /desfazer lista mostra os pedidos e quantos arquivos cada um mudou · /desfazer N volta os N últimos |
| /tree [n] | Árvore do projeto atual |
| /read <arquivo> | Mostra um arquivo do projeto |
| /run <comando> | Executa no shell, dentro da pasta do projeto |
| /open <arquivo\|url> | Abre no navegador |
| /abrir | Abre o projeto atual no navegador: o servidor dele, se estiver de pé, ou a index.html (o /open sem nada faz o mesmo) |
| /copiar | Copia a última resposta para a área de transferência (pbcopy, clip, wl-copy/xclip/xsel) |
| /historico [termo] | Procura nos seus pedidos guardados nesta máquina (~/.primocode/history.jsonl), do mais recente. As conversas inteiras da conta ficam no /chats |
| /status | Health check do servidor |
| /offline | Temporário: sobe o primocode-server no seu computador (a pasta ao lado do CLI, ou /offline <caminho>) com as chaves de ~/.primocode/servidor.env e aponta a sessão pra ele. /offline off volta ao servidor de antes |
| /doctor | Confere tudo com ✓/✗: Node, servidor, /api, Chrome, Python+PyObjC (cursor, macOS), disco e config. Cada ✗ diz como consertar |
| /custo | Tokens enviados e recebidos e pedidos feitos nesta sessão, por provedor (estimado em caracteres ÷ 4 quando o provedor não manda o número) |
| /atalhos | As teclas: Esc Esc para o agente, ! roda no shell, Alt+Enter quebra linha… |
| /name <nome> | Como o Primo te chama na saudação |
| /mascot [nome\|n] | Galeria dos 10 mascotes lado a lado (primo, fox, cat, robo, coruja, dragao, fantasma, capivara, polvo, pinguim), cada um com nome e bordão na abertura. Escolha por nome ou número. Depois de cada tarefa ele reage numa linha ((^‿^) pronto, (°_°) não terminou); /mascot reacoes off desliga |
| /config | Mostra suas preferências e onde ficam salvas |
| /clear · /cls | Limpa conversa / tela |
| /uninstall | Remove o PrimoCode (seus projetos ficam) |
| /exit | Sair |
Configuração
~/.primocode/config.json:
{
"server": "https://primocode-server-production.up.railway.app",
"model": "main",
"token": null
}Ou por variável de ambiente — elas têm prioridade:
export PRIMOCODE_SERVER="https://primocode-server-production.up.railway.app"
export PRIMOCODE_MODEL="main"
export PRIMOCODE_TOKEN="..." # só se o servidor exigirSegurança
Todo arquivo que o agente escreve (write_file, edit_file, multi_edit) é
resolvido dentro da pasta do projeto. Caminho absoluto ou com ../ é
recusado.
Os comandos de terminal não têm essa cerca: eles rodam com as suas
permissões. Por isso, no modo padrão (/permissoes auto), ele pergunta antes
do que não tem volta — rm -rf fora do projeto ou em ~ e /, sudo,
git push --force, git reset --hard, git clean -fd, curl … | sh, dd,
mkfs, npm publish, desligar o computador. Apagar node_modules ou dist
dentro do projeto não pergunta. A régua está em lib/perigo.js.
Mexer no mouse e no teclado (controle do computador) sempre pede licença.
Arquitetura
┌────────────────┐ HTTPS/SSE ┌───────────────────┐ HTTPS ┌─────────────────────┐
│ primocode CLI │ ─────────────► │ primocode-server │ ────────► │ ZeroGPU · Gemini · │
│ (seu terminal)│ ◄───────────── │ (Railway) │ ◄──────── │ Groq · HF · OpenRtr │
└────────────────┘ └───────────────────┘ └─────────────────────┘
executa as tools monta o prompt, a conta, a corrente: se um modelo
localmente os planos e a voz recusa, o próximo atendeAs tools rodam no seu computador — o servidor nunca toca nos seus arquivos. Ele decide o que fazer; o CLI faz e devolve o resultado.
Um repositório, duas partes
| pasta | o que é | como sai |
|---|---|---|
| raiz (bin/, lib/, skills/, studio/, voz/) | o CLI primocode | npm publish (o files do package.json não leva o server/) |
| server/ | o primocode-server: agente, conta Firebase, planos, voz, Estúdio | Railway, serviço primocode-server, pasta raiz server, em https://primocode-server-production.up.railway.app |
O server/ veio do repositório primocode-server em 15/10/2026, com o histórico
inteiro (git log -- server/). As chaves ficam nas variáveis do Railway; o
server/.env.example diz quais são.
Licença
MIT © ConectaPrimoAI
