Skip to main content
Esta página lista todas as variáveis de ambiente que o ChatCLI reconhece. Configure-as no seu arquivo .env ou via export no shell.

Geral


Provedores LLM

OpenAI

Anthropic (Claude)

AWS Bedrock (catálogo completo)

Provedor BEDROCK — invoca todo o catálogo Bedrock (Anthropic, OpenAI, Llama, Nova, Mistral, Cohere, AI21, DeepSeek, Moonshot Kimi (também disponível diretamente via MOONSHOT), MiniMax, Qwen, Z.AI/GLM, Gemma, Nemotron, TwelveLabs e qualquer provider que a AWS adicionar) usando a credentials chain do SDK (env vars, ~/.aws/credentials, SSO via ~/.aws/config, IAM role). A ativação exige credenciais reais — a mera existência de ~/.aws/config com apenas region/output não ativa o Bedrock.
Modelos modernos no Bedrock (Claude 3.7+/4.x/4.5/4.6/4.7 e equivalentes em outros providers) exigem inference profile IDs (com prefixo global., us., eu. ou apac.). O /switch --model filtra automaticamente IDs base que não suportam ON_DEMAND, então só aparecem os IDs invocáveis direto + os profiles. Veja AWS Bedrock para detalhes.

Google AI (Gemini)

xAI (Grok)

Ollama (Modelos Locais)

Devin CLI (Cognition)

O provider DEVIN embrulha o binário devin local — a autenticação pertence ao CLI (devin auth login); ver Provider Devin.
Para o modo Agente funcionar bem com alguns modelos Ollama que “pensam em voz alta” (Qwen3, Llama3…), mantenha OLLAMA_FILTER_THINKING=true.

ZAI (Zhipu AI)

Chaves no formato id.secret ativam automaticamente a rotação de tokens JWT (HMAC-SHA256). Os tokens são cacheados por 30 minutos com margem de segurança de 5 minutos antes da regeneração. Chaves sem ”.” continuam funcionando como Bearer tokens tradicionais. Nenhuma configuração adicional é necessária.

MiniMax

Defina MINIMAX_API_COMPAT=anthropic para usar o endpoint compatível com a API Anthropic Messages (https://api.minimax.io/anthropic/v1/messages). O header anthropic-version: 2023-06-01 é adicionado automaticamente. A autenticação Bearer token permanece a mesma. O tool use nativo é desabilitado neste modo (fallback para XML).

Moonshot (Kimi)

MOONSHOT_THINKING=disabled força o modo Instant (resposta direta, mais barata) mesmo em modelos com capability thinking. enabled força o reasoning explícito. auto (padrão) deixa o modelo escolher. Modelos sem capability thinking ignoram a flag — não há cobrança extra acidental.

OpenRouter

O OpenRouter é um gateway multi-provedor que dá acesso a 200+ modelos com uma única API key. Os modelos usam o formato provedor/nome-do-modelo (ex: openai/gpt-4o, anthropic/claude-sonnet-4). Configure OPENROUTER_FALLBACK_MODELS para aproveitar o roteamento de fallback nativo do OpenRouter, complementar ao sistema de fallback do ChatCLI.

GitHub Copilot

StackSpot

A API de agente da StackSpot decide o limite de output server-side (ignora max_tokens no payload). O catálogo do ChatCLI assume 128K de janela de contexto para agentes StackSpot — antes, o fallback genérico de 50K fazia o auto-compact disparar em quase todo turno. Se o modelo de fundação do seu agente tiver janela diferente, ajuste com CHATCLI_CONTEXT_WINDOW.

Modo Agente


Multi-Agent (Orquestração Paralela)


Mixture-of-Agents (MoA)

Ensemble onde vários modelos propõem uma resposta em paralelo e um agregador sintetiza a melhor. É distinto da orquestração paralela acima (que despacha agents especialistas): aqui o eixo é a diversidade de modelos/provedores. Acionado pelo comando /moa. Cada participante — proponentes e agregador — recebe o mesmo briefing de um turno de chat (contextos anexados, memória do workspace, skills) e tools read-only: knowledge, recall de CCR e recall da memória de longo prazo. Ver Mixture-of-Agents.

Eficiência de Tokens

Controles para as otimizações de consumo de tokens (prompt caching estruturado, detector de estagnação, smart routing, auto-save de webfetch, microcompactação). Ver Eficiência de Tokens para detalhes.

Detector de estagnação (early-exit)

Guarda de falhas de tool (toolguard)

Guarda advisory (não aborta) que detecta uma mesma ferramenta falhando repetidamente dentro do loop do agente e injeta um aviso para o modelo mudar de abordagem em vez de insistir no mesmo erro.

Smart routing chat ↔ agent

Tool de roteamento de modelo

WebFetch auto-save

Microcompactação de tool results

Aplicada ao histórico da sessão para comprimir resultados antigos de ferramentas. Ver também Tool Result Management.
Para sessões de chat/lookup onde economia de tokens importa mais que recall de longo prazo, aperte os knobs:

Compressão de contexto (CCR)

Compressão content-aware e reversível de saída de tools, logs, diffs, JSON e prosa. Ver Compressão de Contexto.

Redução de tokens de saída


Harness/Pipeline de Qualidade (7 Padrões)

Variáveis do harness/pipeline de qualidade que implementa os sete padrões de agente LLM. Ver overview completo e configuração detalhada.

Master switch

Self-Refine (#5)

Cascade de convergência semântica (char → Jaccard → embedding)

Chain-of-Verification (#6)

Reflexion (#3)

Fila durável (WAL + worker pool + DLQ)

Quando ligada, triggers de reflexion passam por uma fila persistente — lições sobrevivem a crash via WAL replay no próximo boot.

Plan-and-Solve / ReWOO (#2)

RAG + HyDE (#4)

Attach de contexto persistente

Embedding Providers (usado por HyDE 3b)

Bedrock embeddings suportam amazon.titan-embed-text-v2:0 (default), amazon.titan-embed-text-v1, cohere.embed-english-v3, cohere.embed-multilingual-v3, cohere.embed-v4:0 (também ids com profile us./eu./global.) e amazon.nova-2-multimodal-embeddings-v1:0 (Nova MME). Titan e Nova MME paralelizam batches com pool de 8 workers (as APIs só aceitam 1 texto por chamada); Cohere envia o batch inteiro numa só call. A dispatch é auto pelo prefixo do model id. Veja RAG + HyDE e AWS Bedrock.

Reasoning Backbone (#7)

Per-Agent Overrides (inclui refiner / verifier)

Presets recomendados (cheap dev, rigorous review, docs, incident, autopilot) em Configuração do Pipeline.

Workspace de Sessão e Subagent

Variáveis que controlam o Workspace de Sessão (scratch dir + overflow de tool results) e a Delegação para Subagent.

Confiança TLS Global (Proxy Corporativo)

Para ambientes atrás de proxy/gateway corporativo com inspeção TLS via CA privada (Zscaler, Netskope, CrowdStrike Falcon etc.). As duas variáveis valem para todas as conexões HTTPS de saída do processo: todos os providers LLM, TTS/STT, embeddings, web tools (@webfetch/@websearch/@osv), canais do gateway, transports MCP, registries de skills e o version check. É o equivalente process-wide do NODE_EXTRA_CA_CERTS / NODE_TLS_REJECT_UNAUTHORIZED em ferramentas Node.js como o Claude Code.
O Go — e portanto o ChatCLI — já confia no trust store do sistema operacional por default (Keychain no macOS, cert store no Windows, /etc/ssl no Linux). Se a CA corporativa já está instalada na máquina, nenhuma configuração é necessária. O CHATCLI_CA_BUNDLE cobre o caso em que a CA não pode ser instalada system-wide.
Com CHATCLI_TLS_INSECURE_SKIP_VERIFY=true o ChatCLI aceita qualquer certificado — inválido, expirado, forjado — e fica exposto a man-in-the-middle (captura de API keys, código e credenciais). Nunca use em produção.
As variáveis específicas do Bedrock (CHATCLI_BEDROCK_CA_BUNDLE / CHATCLI_BEDROCK_INSECURE_SKIP_VERIFY, na seção AWS Bedrock) têm precedência sobre as globais; na ausência delas, o Bedrock herda as globais como fallback, já que o AWS SDK monta o próprio HTTP client.
Diagnóstico rápido: inspeção TLS mal-resolvida gera erro x509 (certificate signed by unknown authority) — isso o CHATCLI_CA_BUNDLE resolve. Um 403 vem de camada acima (WAF/política do proxy: User-Agent, fingerprint, autenticação) e não se resolve com trust TLS — para isso veja as variáveis de proxy web (HTTPS_PROXY, CHATCLI_PROXY_AUTH) em /config resilience.

Compactação de Histórico e Recuperação de Payload

Controla o comportamento do HistoryCompactor (pipeline de 3 níveis: trim → summarize → emergency) e a detecção reativa de limites de proxy/gateway corporativo. Veja Recuperação de Contexto. A checagem de budget pesa o payload inteiro — texto das mensagens mais argumentos de tool calls nativas, payloads de imagem e excesso de system-parts — então históricos pesados em tools ou visão disparam a compactação antes de bater no cap de um proxy.
Atrás de proxy corporativo você geralmente não precisa mais chutar: na primeira rejeição, o ChatCLI aprende o cap do tamanho exato que o gateway recusou (¾ da requisição rejeitada) e aplica na sessão. Sete CHATCLI_MAX_PAYLOAD explicitamente só quando souber o limite do proxy de antemão — um valor explícito abaixo do aprendido sempre vence. O ChatCLI já deixa 30% de headroom para JSON overhead + system prompt + tool definitions.
Quando um 413/WAF/EOF acontece, os erros do Bedrock carregam o tamanho exato da requisição rejeitada e o cap da sessão é derivado dele (cap adaptativo aprendido). Só quando o tamanho é desconhecido o ChatCLI recai em assumir 4 MB para o resto da sessão. Em ambos os casos injeta um hint único no histórico para a IA preferir leituras line-ranged. Se o system prompt sozinho (personas, skills, docs de ferramentas MCP) atingir o tamanho rejeitado, o recovery falha rápido com diagnóstico acionável em vez de re-tentar — veja Context Recovery.

UI dos modos /coder e /agent

Estilos disponíveis:
  • full (padrão) — cards completos com borda fechada ╭── ICON TITLE ─────╮ ... ╰─╯. Cada chamada de ferramenta é uma “ação” destacada. Ideal para /agent (fluxo plan-and-execute supervisionado).
  • compact — linhas inline ↻ Read(main.go) / ✓ Read(main.go) 0.3s. Sessões longas com dezenas de tools ficam scannáveis. Ideal para /coder.
  • minimal — meio termo: cards menores com conteúdo truncado.
A variável mantém o nome legado CHATCLI_CODER_UI por compatibilidade, mas a partir da v1.119 ela controla os DOIS modos. Se você tinha CHATCLI_CODER_UI=compact setado, o /agent também passa a renderizar em compacto.
Mudança visual também em v1.119: falhas de ferramenta (, ❌ FALHA NA EXECUÇÃO) agora renderizam em vermelho real em vez de roxo. Antes ficavam na mesma cor do header (ColorPurple), o que confundia. Se o seu terminal mapeia ANSI 31 (red) para uma cor não-vermelha via theme, ajuste a paleta do terminal.

Efeito de Escrita (Typewriter Adaptativo)

A resposta final da IA é pintada com um efeito de “máquina de escrever” — runa por runa, com um pequeno delay entre cada caractere — para dar a sensação de uma conversa viva em vez de um paste único. A partir da v1.120 o ChatCLI usa pacing adaptativo: respostas curtas mantêm a cadência original (a animação se percebe como animação), respostas longas têm o delay automaticamente escalonado para caber em um orçamento total (~800ms por padrão), e respostas muito longas (acima de 8 000 runas visíveis, ex.: blocos de código gigantes) pulam a animação inteiramente. O comportamento se aplica de forma consistente nos modos /chat, /coder e /agent — todas as superfícies que tipam saída do modelo convergem no mesmo helper interno (agent.PaceText).
Como as três variáveis interagem:
  1. Se CHATCLI_NO_TYPEWRITER está ligado, nada mais importa — a resposta é instantânea.
  2. Senão, o ChatCLI lê o delay solicitado (do call site) ou CHATCLI_TYPEWRITER_DELAY_MS se setado.
  3. Conta as runas visíveis (sequências ANSI de cor não contam — elas são emitidas instantaneamente para que transições de cor não pausem o olho).
  4. Se runas visíveis ≥ 8 000, pula a animação (limite “hardSkip” embutido para evitar dumps de código congelarem o terminal por 16+ segundos).
  5. Senão, calcula delay_efetivo = min(delay_solicitado, CHATCLI_TYPEWRITER_BUDGET_MS / runas_visíveis), com piso de 200μs.
Resumo: o orçamento puxa o delay para baixo quando a resposta é longa, mas nunca o aumenta. Respostas curtas continuam usando o delay solicitado original.
Granularidade do sistema: time.Sleep em Linux/macOS tem granularidade mínima ~1ms, então valores muito pequenos de CHATCLI_TYPEWRITER_DELAY_MS (ex.: 0) na prática rodam em ~200μs–1ms efetivos. Não é precisão de microcontrolador — é “rápido o suficiente para parecer instantâneo num shell humano”.
Exemplos práticos:

Fallback de Provedores


MCP (Model Context Protocol)

O subsistema MCP gerencia automaticamente o diretório ~/.chatcli/mcp/ para state durável: channels.jsonl (ring persistente de push notifications, com rotação) e triggers.json (rules opt-in do trigger engine). Não há variáveis de ambiente para esses paths — eles são fixos. Detalhes: MCP Channels e MCP Config.

Bootstrap e Memória


Scheduler

Veja Scheduler (Chronos) para o design completo. Todas as variáveis aceitam sufixo enabled / disabled / true / false / 1 / 0 quando aplicável.

Núcleo

Budget padrão (por-job se não sobrescrito)

Segurança

Audit log

Daemon


Métricas e Observabilidade


Segurança

Threat scan de contexto e memória

Sanitiza conteúdo injetado no prompt — contextos anexados via /context attach e a memória de longo prazo — contra prompt-injection antes de enviá-lo ao modelo.

Segurança do Servidor

Segurança do Agente

Segurança de Plugins e Autenticação

Segurança do Operator

A autenticação da REST API do operator carrega API keys com hot-reload a cada 30s na seguinte ordem de prioridade: Secret chatcli-operator-secretsConfigMap chatcli-operator-config → rejeitar (ou aceitar em dev-mode se CHATCLI_OPERATOR_DEV_MODE=true).

OAuth


Servidor Remoto


Cliente Remoto


Chat Gateway (Telegram / Slack / Discord / WhatsApp / Webhook)

Ponte que expõe o ChatCLI como bot/serviço em plataformas de mensagem. Acionada por /gateway start. Cada adaptador só liga quando suas variáveis obrigatórias estão presentes — defina apenas os canais que quiser. Ver Chat Gateway.

Telegram

Slack

Discord

WhatsApp (Cloud API)

Webhook genérico

Voz / transcrição (áudio nos canais)

Transcreve notas de voz para texto antes do pipeline. Seleção local-first: comando → URL self-hosted → whisper CLI no PATH (auto, baixa o modelo) → Groq → OpenAI → desabilitado. Ver Chat Gateway → Mensagens de voz.
Notas de voz são OGG/Opus; o whisper.cpp local e o motor embarcado precisam de ffmpeg para decodificá-las (backends cloud/self-hosted decodificam no servidor). Sem nada configurado, o gateway usa o Whisper embarcado automaticamente — só plataformas sem engine prebuilt recebem a dica de configuração.

Mensagens proativas (@send)

Canais padrão para o tool @send quando o destino é só a plataforma.

Resposta em voz / TTS

Sintetiza a resposta em áudio. Seleção local-first: comando → URL self-hosted → embarcado (se provisionado)say/espeak no PATH → OpenAI → Groq → Gemini → desabilitado. Ver Text-to-Speech e Respostas em Voz.

Geração de imagem (@image)

Gera imagens a partir de texto. Local-first: SD WebUI → URL OpenAI-compatível → OpenAI → Google Gemini image → xAI Grok Imagine → Bedrock. Ver Geração de Imagem.

Renderização de diagramas (@diagram)

Renderiza Graphviz DOT em PNG/SVG/JPG com texto nítido e correto. O Graphviz é embedado (WASM, sem instalação); se houver um dot do sistema no PATH, o backend auto o usa para saída mais polida. Ver Diagramas (@diagram).

Grafo interativo (@graphview)

Renderiza um grafo interativo estilo Obsidian (force-directed, arrastável) em um HTML autocontido aberto no navegador. Ver Grafo interativo (@graphview).

Visão / entrada de imagem

Permite que o modelo veja imagens anexadas (@file foto.png) em chat/coder/agent e no gateway. Estratégia híbrida: providers com vision no catálogo recebem a imagem nativa; sem visão, um modelo de visão descreve a imagem e o texto entra no prompt (describe-fallback). Ver Entrada de Imagem (Visão).
xAI (imagem) e Groq (voz) usam suas chaves padrão (XAI_API_KEY, GROQ_API_KEY); Google usa GOOGLEAI_API_KEY/GEMINI_API_KEY; Bedrock usa a mesma cadeia AWS do provider de chat (BEDROCK_REGION/AWS_REGION, BEDROCK_PROFILE/AWS_PROFILE). Os tools @osv, @session e @skill não exigem variáveis. Use @image models ou /config image para ver/trocar backend e modelo em runtime.

Conversation Hub (Continuidade Cross-Channel)

Faz a conversa atravessar canais: um assunto começado no Telegram/Slack/WhatsApp continua no chatcli do notebook (e vice-versa), até /newsession. É uma ponte do momento com banco limitado — não é memória de longo prazo (isso fica em /memory e /session). Ver Conversation Hub. Todas as opções abaixo também podem ser ajustadas em runtime por comando (/config hub set <chave> <valor>), com precedência: setting (no hub.db) > variável de ambiente > default. O valor definido por comando persiste no banco e é lido ao vivo pelo daemon do gateway.
Para “rodar o chatcli + o gateway na mesma máquina e compartilharem contexto”: basta o CHATCLI_HUB_PRINCIPAL (ou o default) — nenhum binding é necessário. Para bot multi-usuário, ligue CHATCLI_HUB_ISOLATE=true e use CHATCLI_HUB_BINDINGS para mapear quem é quem.

LSP (Language Server Protocol — diagnósticos)

Diagnósticos de código (erros/avisos do compilador/linter) para um arquivo, via servidores LSP. Acionado manualmente pelo comando /lsp <arquivo>. Cada variável sobrescreve o comando usado para iniciar o language server da linguagem; quando omitida, o ChatCLI usa o preset padrão (se o binário estiver no PATH). Ver Diagnósticos LSP.

Busca Web (WebSearch)

Os backends são keyless por design: DuckDuckGo (scraping HTML, default) + SearxNG (self-hosted via SEARXNG_URL). Veja Web Tools para a cadeia de fallback.

K8s Watcher


Exemplo completo de .env