Skip to content

Variáveis de ambiente

O Jarvis Code CLI usa variáveis de ambiente para controlar um pequeno número de comportamentos de execução — realocar o diretório de dados, desligar a telemetria e trocar de modelo temporariamente sem mexer no arquivo de configuração.

Importante: chaves de API não são configuradas aqui

Variáveis de credencial como JARVIS_API_KEY, ANTHROPIC_API_KEY e OPENAI_API_KEY não são lidas automaticamente das variáveis de ambiente do shell. Executar export JARVIS_API_KEY=xxx no terminal não entrega a chave a provedor nenhum — elas precisam ser escritas no config.toml, em [providers.<name>] ou na subtabela [providers.<name>.env].

A única exceção é a família JARVIS_MODEL_*, um canal explícito que de fato lê credenciais do shell — veja Definir um modelo por variáveis de ambiente.

Para o contexto completo, veja Sobrescritas de configuração: credenciais de provedor.

Caminhos principais

JARVIS_CODE_HOME

Sobrescreve o diretório raiz de dados; o padrão é ~/.jarvis-code. Uma vez definido, o arquivo de configuração, as sessões, os logs, as credenciais OAuth e todos os demais dados passam a ficar sob o novo caminho:

sh
export JARVIS_CODE_HOME="/caminho/para/jarvis-code"

Garanta que o diretório é gravável. Várias instâncias do Jarvis Code compartilhando o mesmo JARVIS_CODE_HOME compartilham arquivos de configuração e de credenciais.

Para a estrutura completa do diretório de dados, veja Locais de dados.

JARVIS_DISABLE_TELEMETRY

Defina como 1 para desligar o envio anônimo de telemetria (também aceita true, yes, y, sem diferenciar maiúsculas):

sh
export JARVIS_DISABLE_TELEMETRY=1

Família JARVIS_MODEL_*

Troca de modelo temporariamente sem modificar o config.toml — quando JARVIS_MODEL_NAME está definido, o CLI sintetiza um provedor temporário em memória; a mudança não persiste após reiniciar. Veja Definir um modelo por variáveis de ambiente.

JARVIS_CODE_CUSTOM_HEADERS

Anexa cabeçalhos HTTP personalizados a toda requisição de modelo — tanto as requisições de chat de LLM (em todos os protocolos de provedor) quanto as requisições de listagem /models. Útil quando um gateway roteia por cabeçalho, por exemplo para fixar um cluster específico:

sh
export JARVIS_CODE_CUSTOM_HEADERS=$'X-Gateway-Cluster: my-cluster\nX-Custom-Tag: debug'

O formato espelha o de ANTHROPIC_CUSTOM_HEADERS: linhas Name: Value separadas por quebra de linha. Nomes e valores têm espaços removidos nas pontas, e linhas sem dois-pontos são ignoradas.

Adicionado

Adicionado na 0.20.2.

Precedência: os cabeçalhos de identidade Kimi (User-Agent, X-Msh-*) e o custom_headers de um provedor no config.toml (veja Arquivos de configuração) sobrescrevem entradas de mesmo nome definidas aqui. A autenticação depende do protocolo: nos protocolos kimi, openai e openai_responses, uma entrada Authorization exata substitui o bearer token gerado, enquanto requisições de listagem /models mantêm a autenticação própria. Uma variação de caixa como authorization nunca é tratada como o mesmo nome — ela é combinada com o cabeçalho real, o que pode quebrar as requisições. Não use esta variável para autenticação nem para outros cabeçalhos reservados. Use custom_headers quando os cabeçalhos precisarem variar por provedor.

Nomes de chave de credencial de provedor (escritos no config.toml)

Os nomes de chave abaixo não são lidos diretamente do shell — são nomes de chave escritos dentro da subtabela [providers.<name>.env] do config.toml, servindo como valores de fallback para api_key e base_url. O CLI lê apenas do arquivo de configuração, nunca de process.env.

Esse desenho permite manter as convenções de nome de chave familiares enquanto centraliza o gerenciamento de segredos no arquivo de configuração:

toml
[providers.kimi.env]
JARVIS_API_KEY = "sk-xxx"
JARVIS_BASE_URL = "https://api.moonshot.ai/v1"

Nomes de chave por provedor:

ChaveProvedor aplicávelPadrão
JARVIS_API_KEYKimi / MoonshotNenhum
JARVIS_BASE_URLKimi / Moonshothttps://api.moonshot.ai/v1
ANTHROPIC_API_KEYAnthropicNenhum
ANTHROPIC_BASE_URLAnthropicSegue o padrão do SDK da Anthropic
OPENAI_API_KEYOpenAI (openai e openai_responses)Nenhum
OPENAI_BASE_URLOpenAI (openai e openai_responses)https://api.openai.com/v1
GOOGLE_API_KEYGoogle GenAI, Vertex AINenhum
VERTEXAI_API_KEYVertex AINenhum
GOOGLE_CLOUD_PROJECTVertex AINenhum
GOOGLE_CLOUD_LOCATIONVertex AINenhum

WARNING

O GOOGLE_APPLICATION_CREDENTIALS (caminho de um arquivo JSON de conta de serviço) é a única exceção que passa pelo mecanismo de variáveis de ambiente do sistema — ele é lido diretamente pelo SDK do Google via o fluxo ADC padrão, e o CLI não participa. Todos os demais nomes de chave precisam estar na subtabela [providers.<name>.env] para valer.

Para a referência completa de tipos e campos de provedor, veja Provedores e modelos.

OAuth e serviços gerenciados

Este grupo de variáveis redireciona a autenticação OAuth e os endpoints de serviço gerenciado para um ambiente auto-hospedado ou de teste. Elas não são necessárias no uso cotidiano.

VariávelFinalidadePadrão
JARVIS_CODE_OAUTH_HOSTHost de autenticação OAuth; prioridade máximaRecorre a JARVIS_OAUTH_HOST quando não definida
JARVIS_OAUTH_HOSTHost de autenticação OAuth; fallback de JARVIS_CODE_OAUTH_HOSTRecorre a https://auth.kimi.com quando não definida
JARVIS_CODE_BASE_URLBase URL da API gerenciada usada após o login OAuthhttps://api.kimi.com/coding/v1

WARNING

JARVIS_CODE_BASE_URL (serviço gerenciado por OAuth, apontando para kimi.com) e JARVIS_BASE_URL (conexão direta por chave de API, apontando para moonshot.ai) são duas variáveis distintas. Use cada uma no contexto apropriado.

Definir um modelo por variáveis de ambiente (JARVIS_MODEL_*)

Quer trocar de modelo para testar sem mexer no config.toml? Quando JARVIS_MODEL_NAME está definido, o CLI sintetiza em memória um provedor e um alias de modelo temporários a partir das variáveis JARVIS_MODEL_* — nada é escrito de volta no arquivo de configuração. Essas variáveis têm prioridade sobre default_model no config.toml, mas a opção -m <alias> na inicialização continua tendo a prioridade máxima.

sh
export JARVIS_MODEL_NAME="kimi-for-coding"
export JARVIS_MODEL_API_KEY="YOUR_API_KEY"
export JARVIS_MODEL_BASE_URL="https://api.example.com/v1"
export JARVIS_MODEL_MAX_CONTEXT_SIZE="262144"
export JARVIS_MODEL_CAPABILITIES="image_in,thinking"
jarvis

Lista completa de variáveis:

VariávelObrigatóriaFinalidadePadrão
JARVIS_MODEL_NAMESim (também é o interruptor de ativação)Id do modelo enviado à API
JARVIS_MODEL_API_KEYSimChave de API
JARVIS_MODEL_PROVIDER_TYPENãoTipo de provedor: kimi, anthropic, openaikimi
JARVIS_MODEL_BASE_URLNãoBase URL da APICada tipo tem seu próprio padrão
JARVIS_MODEL_MAX_CONTEXT_SIZENãoTamanho máximo de contexto (tokens)262144 (256 K)
JARVIS_MODEL_CAPABILITIESNãoTags de capacidade separadas por vírgula, unidas às detectadas automaticamenteimage_in,thinking
JARVIS_MODEL_DISPLAY_NAMENãoNome exibido em /modelRecorre a JARVIS_MODEL_NAME
JARVIS_MODEL_MAX_OUTPUT_SIZENãoLimite de saída por requisição (somente anthropic); quando definido, supera o teto embutido do ClaudePadrão do modelo
JARVIS_MODEL_REASONING_KEYNãoSobrescrita do nome do campo de raciocínio (somente openai)Detectado automaticamente
JARVIS_MODEL_THINKING_EFFORTNãoNível de esforço de raciocínio: low/medium/high/xhigh/max
JARVIS_MODEL_ADAPTIVE_THINKINGNãoForça raciocínio adaptativo ligado ou desligado (somente anthropic)Inferido do nome do modelo

Se JARVIS_MODEL_NAME estiver definido mas faltar uma variável obrigatória, a inicialização falha imediatamente com uma mensagem de erro clara.

Interruptores de execução

Interruptores que controlam o comportamento de subsistemas como telemetria, tarefas em segundo plano e o marketplace de plugins:

VariávelFinalidadeValores válidos
JARVIS_DISABLE_TELEMETRYDesativa o envio anônimo de telemetria1, true, yes, y (sem diferenciar maiúsculas)
JARVIS_CODE_PASSWORDDefine uma credencial de autenticação paralela para a API do jarvis server, válida junto do bearer token; recomendada ao escutar além do loopback — veja Servidor local e APIQualquer string não vazia; quando não definida, apenas o token vale
JARVIS_CODE_BACKGROUND_KEEP_ALIVE_ON_EXITSe deve manter tarefas em segundo plano quando a sessão fecha; tem prioridade sobre o config.toml. O padrão é interrompê-las na saídaVerdadeiro: 1/true/yes/on; falso: 0/false/no/off
JARVIS_CODE_BACKGROUND_MAX_RUNNING_TASKSLimite de tarefas em segundo plano rodando ao mesmo tempo; tem prioridade sobre [background] max_running_tasks no config.toml (sem definição, sem limite)Inteiro positivo; valores inválidos são ignorados
JARVIS_IMAGE_MAX_EDGE_PXTeto do lado maior (px) na compressão de imagem; tem prioridade sobre [image] max_edge_px no config.toml (padrão 2000)Inteiro positivo; valores inválidos são ignorados
JARVIS_IMAGE_READ_BYTE_BUDGETOrçamento de bytes por imagem em leituras iniciadas pelo modelo (leituras padrão de ReadMediaFile); tem prioridade sobre [image] read_byte_budget no config.toml (padrão 262144, ou 256 KB)Inteiro positivo; valores inválidos são ignorados
JARVIS_CODE_PLUGIN_MARKETPLACE_URLSobrescreve o JSON do marketplace de plugins carregado por /plugins; útil para servidores locais de desenvolvimento, arquivos de CDN de staging ou diretórios alternativos de marketplacehttps://code.kimi.com/kimi-code/plugins/marketplace.json; também aceita URLs http://, file:// e caminhos locais
JARVIS_CODE_AGENT_SWARM_MAX_CONCURRENCYLimita quantos subagentes de AgentSwarm rodam ao mesmo tempo durante a subida inicial; deixe sem definir para não limitarInteiro positivo; valores inválidos falham imediatamente
JARVIS_SUBAGENT_TIMEOUT_MSTempo máximo de relógio (ms) que um subagente Agent pode rodar; tem prioridade sobre [subagent] timeout_ms no config.toml (padrão 7200000, ou 2 horas)Inteiro positivo; valores inválidos recorrem à configuração ou ao padrão
JARVIS_CODE_SWARM_TIMEOUT_MSTempo máximo de relógio (ms) que um subagente AgentSwarm pode rodar; tem prioridade sobre [swarm] timeout_ms no config.toml (padrão 7200000, ou 2 horas)Inteiro positivo; valores inválidos recorrem à configuração ou ao padrão
JARVIS_CODE_IDENTITY_NAMENome de exibição pelo qual o agente se identifica no system prompt; tem prioridade sobre [identity] name no config.toml e nunca é escrito de volta neleQualquer string não vazia; valores em branco contam como não definidos
JARVIS_CODE_IDENTITY_SLUGIdentificador de protocolo do token de produto no User-Agent enviado a provedores de terceiros e do nome do cliente MCP; tem prioridade sobre [identity] slug. Derivado do nome quando não definidoQualquer string não vazia; normalizado para minúsculas, com sequências não alfanuméricas viradas -
JARVIS_CODE_BUILTIN_PRODUCT_SKILLSSe as skills embutidas que documentam o próprio Jarvis Code são oferecidas ao modelo; tem prioridade sobre builtin_product_skills no config.toml (padrão habilitado)Verdadeiro: 1/true/yes/on; falso: 0/false/no/off
JARVIS_CODE_TUI_FULL_SCREENHabilita a interface experimental de tela cheia: viewport de transcrição rolável, seleção de texto com o mouse, links clicáveis e busca na transcrição com Ctrl-Shift-F1 habilita; qualquer outra coisa mantém a interface inline normal
JARVIS_CODE_EXPERIMENTAL_SECONDARY_MODELHabilita o pool de modelos de subagente experimental em todos os modos de inicialização, inclusive na TUI interativa; o interruptor mestre JARVIS_CODE_EXPERIMENTAL_FLAG=1 também habilitaVerdadeiro: 1/true/yes/on; falso: 0/false/no/off
JARVIS_SECONDARY_MODELModelo secundário; tem prioridade sobre [secondary_model] model no config.toml. Com o experimento de modelo secundário habilitado, subagentes recém-criados (Agent / AgentSwarm) usam esse modelo por padrão, em vez de herdar o do agente principalO alias de uma entrada [models] configurada, por exemplo jarvis-code/kimi-for-coding; valores em branco são ignorados
JARVIS_SECONDARY_EFFORTEsforço de raciocínio do modelo secundário; tem prioridade sobre [secondary_model] default_effort no config.toml e só vale quando o modelo e o experimento estão habilitadosUm valor de esforço, por exemplo low; valores em branco são ignorados
JARVIS_CODE_EXPERIMENTAL_SUBAGENT_FORKHabilita o parâmetro experimental fork nas ferramentas Agent e AgentSwarm, permitindo ao modelo iniciar um subagente com um instantâneo do histórico de conversa de quem chamou, em vez de contexto vazio; o interruptor mestre JARVIS_CODE_EXPERIMENTAL_FLAG=1 também habilitaVerdadeiro: 1/true/yes/on; falso: 0/false/no/off
JARVIS_MCP_STARTUP_TIMEOUT_MSTempo limite global padrão de conexão (ms) para todos os servidores MCP; tem prioridade sobre [mcp] startup_timeout_ms no config.toml, mas um startupTimeoutMs por servidor no mcp.json ainda vence (padrão 30000)Inteiro de 1 a 2147483647; valores inválidos são ignorados
JARVIS_MCP_TOOL_TIMEOUT_MSTempo limite global padrão (ms) de uma chamada de ferramenta para todos os servidores MCP; tem prioridade sobre [mcp] tool_timeout_ms no config.toml, mas um toolTimeoutMs por servidor no mcp.json ainda vence (padrão 60000)Inteiro de 1 a 2147483647; valores inválidos são ignorados
JARVIS_LOOP_MAX_STEPS_PER_TURNMáximo de passos do agente por turno; tem prioridade sobre [loop_control] max_steps_per_turn no config.toml (sem definição ou 0 significa ilimitado)Inteiro não negativo; valores inválidos são ignorados
JARVIS_LOOP_MAX_ATTEMPTS_PER_STEPMáximo de tentativas totais de um passo que falha (incluindo a primeira); tem prioridade sobre [loop_control] max_attempts_per_step no config.toml (padrão 10). O depreciado JARVIS_LOOP_MAX_RETRIES_PER_STEP ainda é honrado com um aviso quando esta variável não está definidaInteiro não negativo; valores inválidos são ignorados
JARVIS_CODE_INFINITE_RETRYRepete indefinidamente toda requisição de LLM que falhar — tanto passos do turno quanto operações em segundo plano como a compactação — em vez de falhar a tarefa; as esperas usam backoff exponencial (limitado a 32 s) e honram o cabeçalho Retry-After do servidor, e abortar ainda cancela imediatamente. Destinado a avaliações longas sem supervisão contra endpoints que podem falhar temporariamenteVerdadeiro: 1/true/yes/on; falso: 0/false/no/off
JARVIS_TOKEN_COUNTING_STRATEGYQual contagem de tokens de contexto é reportada externamente (a exibição de tamanho de contexto); tem prioridade sobre [token_counting] strategy no config.toml (padrão measured+estimated)measured+estimated, measured, estimated (sem diferenciar maiúsculas); valores inválidos são ignorados
JARVIS_WEB_SEARCH_BASE_URLURL da API do serviço de busca web (WebSearch); tem prioridade sobre [services.moonshot_search] base_url no config.toml e habilita o serviço sem aquela seção. Credenciais persistidas e cabeçalhos personalizados não são encaminhados a um endpoint escolhido por variável de ambienteString não vazia; valores em branco são ignorados
JARVIS_WEB_SEARCH_API_KEYChave de API do serviço de busca web (WebSearch); substitui tanto a chave configurada quanto a credencial OAuth quando definidaString não vazia; valores em branco são ignorados
JARVIS_WEB_FETCH_BASE_URLURL da API do serviço de busca de página (FetchURL); tem prioridade sobre [services.moonshot_fetch] base_url. Credenciais persistidas e cabeçalhos personalizados não são encaminhados a um endpoint escolhido por variável de ambiente. Sem endpoint de ambiente ou de configuração, usuários autenticados tentam o serviço gerenciado de fetch por OAuth antes de requisições locais diretasString não vazia; valores em branco são ignorados
JARVIS_WEB_FETCH_API_KEYChave de API do serviço de busca de página (FetchURL); substitui tanto a chave configurada quanto a credencial OAuth quando definidaString não vazia; valores em branco são ignorados
JARVIS_BRAVE_BASE_URLURL da API do backend Brave Search; tem prioridade sobre [services.brave] base_url no config.toml. Credenciais persistidas e cabeçalhos personalizados não são encaminhados a um endpoint escolhido por variável de ambiente. Lido apenas pelo engine padrão agent-core-v2String não vazia; valores em branco são ignorados
JARVIS_BRAVE_API_KEYChave de API do backend Brave Search; tem prioridade sobre [services.brave] api_key. Exige active_search_provider = "brave" para servir o WebSearch. Lido apenas pelo engine padrão agent-core-v2String não vazia; valores em branco são ignorados
JARVIS_CODE_EXPERIMENTAL_FLAGInterruptor mestre: habilita todos os recursos experimentais registrados neste processo; não seleciona o engine do agente. Veja Flags experimentais1, true, yes, on
JARVIS_CODE_EXPERIMENTAL_TOWERHabilita o modo Tower; apenas engine v2, e é preciso reiniciar depois de habilitarVerdadeiro: 1/true/yes/on; falso: 0/false/no/off
JARVIS_CODE_EXPERIMENTAL_AUTO_SESSION_TITLEHabilita títulos de sessão gerados por IA; exige login OAuth gerenciadoVerdadeiro: 1/true/yes/on; falso: 0/false/no/off
JARVIS_CODE_EXPERIMENTAL_TOOL_SELECTHabilita a divulgação progressiva de ferramentas, para esquemas de ferramenta MCP carregarem sob demanda; apenas engine legadoVerdadeiro: 1/true/yes/on; falso: 0/false/no/off
JARVIS_CODE_EXPERIMENTAL_PERSISTENCE_MINIDB_READMODELUsa o read model baseado em minidb para indexação de sessões e replay de wire; ligado por padrãoVerdadeiro: 1/true/yes/on; falso: 0/false/no/off
JARVIS_CODE_EXPERIMENTAL_SEARCH_WORKERExecuta o índice global de busca em uma thread de worker dedicada; ligado por padrãoVerdadeiro: 1/true/yes/on; falso: 0/false/no/off
JARVIS_CODE_LEGACY_FLAGUsa o engine legado agent-core para jarvis, jarvis -p, jarvis doctor, jarvis acp, jarvis export e jarvis provider; esses comandos usam agent-core-v2 por padrão1, true, yes, on
JARVIS_SHELL_PATHSobrescreve o caminho do Git Bash no Windows (usado quando a detecção automática falha)Caminho absoluto
JARVIS_MODEL_MAX_COMPLETION_TOKENSTeto rígido de max_completion_tokens por passo de LLM; aplica-se apenas ao provedor kimiInteiro positivo; 0 ou negativo desativa o limite
JARVIS_MODEL_TEMPERATURETemperatura de amostragem de toda requisição; aplica-se apenas ao provedor kimi (global — independente de JARVIS_MODEL_NAME)Número, por exemplo 0.3
JARVIS_MODEL_TOP_Ptop_p de amostragem por núcleo de toda requisição; aplica-se apenas ao provedor kimi (global)Número, por exemplo 0.95
JARVIS_MODEL_THINKING_EFFORTForça um esforço de raciocínio específico no protocolo (thinking.effort), ignorando o support_efforts declarado pelo modelo; aplica-se apenas ao provedor kimi, e apenas com o raciocínio ligadoUm valor de esforço, por exemplo max
JARVIS_MODEL_THINKING_KEEPRepasse de raciocínio preservado; no kimi é enviado como thinking.keep, no anthropic (Claude e o modo compatível com Anthropic do Kimi) é enviado como uma edição context_management clear_thinking_20251015 (habilitar o keep roteia requisições Anthropic para a API Messages beta); sobrescreve [thinking] keep (cujo padrão é "all"); só é injetado com o raciocínio ligadoUm valor que a API aceite, por exemplo all; um valor de desligamento (false/0/no/off/none/null) o desativa
JARVIS_VISUAL_MODELAlias do modelo visual usado em tarefas de inspeção de imagem, captura de tela e vídeo; tem prioridade sobre [visual_model] model no config.toml. Enquanto definido, nunca vaza para o config.toml. Lido apenas pelo engine padrão agent-core-v2Alias de uma entrada [models] configurada
JARVIS_VISUAL_EFFORTEsforço de raciocínio aplicado quando tarefas visuais usam o modelo visual; tem prioridade sobre [visual_model] default_effortUm valor de esforço, por exemplo low
JARVIS_CODE_NO_AUTO_UPDATEDesativa completamente a verificação prévia de atualização — sem checagem, sem instalação em segundo plano, sem prompt. O alias legado JARVIS_CLI_NO_AUTO_UPDATE também é honradoVerdadeiro: 1/true/yes/on
JARVIS_DISABLE_CRONDesativa a ferramenta de tarefas agendadas (o CronCreate rejeita novos agendamentos; tarefas existentes não disparam)1 para desativar

As variáveis JARVIS_CODE_INFINITE_RETRY, JARVIS_CODE_IDENTITY_* e JARVIS_CODE_BUILTIN_PRODUCT_SKILLS são lidas pelo engine padrão agent-core-v2. O caminho legado de jarvis e jarvis -p, selecionado por JARVIS_CODE_LEGACY_FLAG=1, as ignora. Já JARVIS_SECONDARY_MODEL e JARVIS_SECONDARY_EFFORT são lidas apenas pelo engine legado, e o engine padrão as ignora. O JARVIS_CODE_EXPERIMENTAL_SECONDARY_MODEL é lido por ambos: ele controla o pool de modelos de subagente do v2 e a receita de modelo secundário do legado.

Flags experimentais

Recursos experimentais são registrados por domínio do engine e cada um declara sua própria variável de ambiente. O JARVIS_CODE_EXPERIMENTAL_FLAG=1 é o interruptor mestre que habilita todas as flags registradas no processo; ele não seleciona o engine do agente. Uma flag que já vem ligada é desligada definindo sua variável com um valor falso.

Id da flagVariável de ambientePadrãoO que faz
towerJARVIS_CODE_EXPERIMENTAL_TOWERdesligadaModo Tower: coordena vários agentes em um mesmo objetivo, controlado por /tower. Apenas engine v2, e exige reinício depois de habilitar
secondary-modelJARVIS_CODE_EXPERIMENTAL_SECONDARY_MODELdesligadaO pool de modelos de subagente. Lida pelos dois engines
subagent-forkJARVIS_CODE_EXPERIMENTAL_SUBAGENT_FORKdesligadaO parâmetro fork nas ferramentas Agent e AgentSwarm, iniciando um subagente a partir de um instantâneo do histórico de quem chamou
auto_session_titleJARVIS_CODE_EXPERIMENTAL_AUTO_SESSION_TITLEdesligadaTítulos de sessão gerados por IA pela ferramenta gerenciada chat_title. Exige login OAuth gerenciado
tool-selectJARVIS_CODE_EXPERIMENTAL_TOOL_SELECTdesligadaDivulgação progressiva de ferramentas: mantém esquemas de ferramenta MCP fora da lista de nível superior e deixa o modelo carregá-los sob demanda. Apenas engine legado
persistence_minidb_readmodelJARVIS_CODE_EXPERIMENTAL_PERSISTENCE_MINIDB_READMODELligadaUsa o read model baseado em minidb para indexação de sessões e replay de wire
search_workerJARVIS_CODE_EXPERIMENTAL_SEARCH_WORKERligadaExecuta o índice global de busca em uma thread de worker dedicada, em vez da thread principal do servidor

As flags também podem ser definidas na seção [experimental] do config.toml, ou alternadas pelo painel /experiments na TUI. A variável de ambiente tem prioridade sobre o arquivo de configuração.

Logs de diagnóstico

Estas variáveis controlam o nível de log e a rotação de arquivos, e são lidas uma única vez na inicialização do processo:

VariávelFinalidadePadrão
JARVIS_LOG_LEVELNível de log: off, error, warn, info, debuginfo
JARVIS_LOG_GLOBAL_MAX_BYTESMáximo de bytes por arquivo de log global6291456 (6 MB)
JARVIS_LOG_GLOBAL_FILESQuantidade de arquivos de log global a reter5
JARVIS_LOG_SESSION_MAX_BYTESMáximo de bytes por arquivo de log de sessão5242880 (5 MB)
JARVIS_LOG_SESSION_FILESQuantidade de arquivos de log de sessão a reter3

Variáveis de ambiente do sistema

O CLI também lê algumas variáveis de sistema padrão para detectar o ambiente de execução; ele não as modifica:

  • HOME: usada para resolver o caminho de dados padrão
  • VISUAL, EDITOR: comando de editor externo (VISUAL tem precedência)
  • PATH: usada para localizar dependências como rg, fd, fdfind e git; no Windows, a detecção do Git Bash checa cada git.exe encontrado no PATH, incluindo shims de gerenciadores de pacote como o Scoop
  • NO_COLOR, FORCE_COLOR: controlam a saída colorida (seguindo a convenção de no-color.org)
  • CI: quando não vazia e diferente de "0", desativa a detecção de tema e recorre ao tema escuro
  • TERM_PROGRAM, TERM, TMUX: detectam recursos do terminal e suporte a notificações
  • DISPLAY, WAYLAND_DISPLAY, XDG_SESSION_TYPE: detectam sessões gráficas no Linux (para recursos de área de transferência e imagem)
  • WSL_DISTRO_NAME, WSLENV: detectam o WSL para a ponte de área de transferência via PowerShell
  • LOCALAPPDATA: usada no Windows como alternativa ao procurar o caminho de instalação do Git Bash

Proxy HTTP

O Jarvis Code honra as variáveis de ambiente padrão de proxy em todo o tráfego de saída — chamadas de API de modelo, servidores MCP, ferramentas web, telemetria, login e verificações de atualização:

  • HTTP_PROXY / http_proxy: proxy para requisições http://
  • HTTPS_PROXY / https_proxy: proxy para requisições https://
  • ALL_PROXY / all_proxy: proxy de fallback usado quando a variável específica do esquema não está definida; é aqui que normalmente se define um proxy SOCKS
  • NO_PROXY / no_proxy: hosts separados por vírgula que passam ao largo do proxy

Proxies HTTP(S) e SOCKS são suportados. Um proxy SOCKS é reconhecido pelo esquema — socks5://, socks5h://, socks4:// ou socks:// (um alias de socks5://) — e normalmente é definido por ALL_PROXY (a forma usada por ferramentas como Clash e V2RayN). Um proxy HTTP(S) tem precedência sobre ALL_PROXY no tráfego HTTP/HTTPS.

O proxy é aplicado apenas quando uma dessas variáveis está definida; caso contrário, as conexões são diretas. Hosts de loopback (localhost, 127.0.0.1, ::1) sempre passam ao largo do proxy, então um servidor local, como um servidor MCP em localhost, continua funcionando com um proxy configurado — adicione seus próprios hosts internos a NO_PROXY para isentá-los também.

Servidores MCP stdio que rodam como processos filhos Node honram HTTP_PROXY, HTTPS_PROXY e NO_PROXY automaticamente quando a versão de Node do processo filho suporta NODE_USE_ENV_PROXY (Node ≥ 22.21 ou ≥ 24.5); o proxy SOCKS se aplica somente ao tráfego do próprio Jarvis Code.

Próximos passos