Um arquivo,
todo o contrato.
O maxvision-code.json declara como o agente se comporta: modelos, permissões, ferramentas, agentes e integrações. Versionável, mesclável por escopo e validado por schema.
01Formato
JSON ou JSONC (com comentários). O schema dá validação e autocomplete no editor:
{
"$schema": "https://opencode.ai/config.json",
"model": "anthropic/claude-sonnet-4-5",
"autoupdate": true,
"server": { "port": 4096 }
}Ajustes visuais da TUI vivem em um arquivo separado, tui.json — veja TUI.
02Onde a config mora
As fontes são mescladas, não substituídas: chaves em conflito seguem a precedência; o resto convive. Da base para o topo:
| # | Fonte | Uso típico |
|---|---|---|
| 1 | Config remota (.well-known) | Defaults da organização, buscados na autenticação. |
| 2 | Global ~/.config/<dir>/ | Preferências do usuário — provedores, modelo, permissões. |
| 3 | Custom MVCODE_CONFIG | Overrides apontados por env. |
| 4 | Projeto ./maxvision-code.json | Regras do repositório — versione no Git. |
| 5 | Diretórios .maxvision-code/ | Agents, commands, plugins, skills, tools, themes do projeto. |
| 6 | Inline MVCODE_CONFIG_CONTENT | Overrides de runtime — CI e automação. |
| 7 | Config gerenciada | Arquivos em diretório de admin — usuários não sobrepõem. |
| 8 | Preferências MDM (macOS) | Frotas corporativas via .mobileconfig — prioridade máxima. |
Na inicialização, o MVCode procura config no diretório atual e sobe até o repositório Git mais próximo. MVCODE_CONFIG_DIR aponta um diretório extra com a mesma estrutura de .maxvision-code/. Config gerenciada e MDM estão detalhadas em enterprise.
03Mapa de chaves
As chaves do runtime, com a página que aprofunda cada uma:
| Chave | Controla | Docs |
|---|---|---|
| model · small_model | Modelo principal e o leve (títulos, resumos). | Modelos |
| provider | Endpoints, opções, modelos e variantes por provedor. | Provedores |
| disabled_providers · enabled_providers | Blocklist e allowlist de provedores (deny vence). | Provedores |
| agent · default_agent | Agentes customizados e o primário padrão. | Agentes |
| permission | allow / ask / deny por ferramenta e recurso. | Permissões |
| tools | Habilita e desabilita ferramentas do agente. | Ferramentas |
| command | Comandos /personalizados com template. | Comandos |
| instructions | Arquivos de regras extras (globs aceitos). | Regras |
| mcp | Servidores MCP locais e remotos. | MCP |
| plugin | Plugins via npm; arquivos em .maxvision-code/plugins/. | Plugins |
| skills | Fontes de descoberta de skills (paths e URLs). | Skills |
| connectors | Runtimes externos tipados. Implementado | Connectors |
| formatter | Formatação pós-edição, built-ins e customizados. | Formatadores |
| lsp | Servidores de linguagem por linguagem. | LSP |
| share | manual · auto · disabled. | Share |
| server | port, hostname, mdns, mdnsDomain, cors. | Servidor |
| network · offline | Política de egress e bundle offline. Implementado | Rede |
| experimental.policies | Regras allow/deny sobre recursos (ex.: provider.use). | Policies |
Comportamento do runtime
Shell do terminal interativo e das tool calls — nome curto (pwsh, zsh) ou caminho absoluto.
Snapshots por mudança habilitam /undo e /redo. Desligue em monorepos gigantes se a indexação pesar — perdendo o rollback pela UI.
Atualização automática na inicialização; "notify" só avisa. Frotas gerenciadas preferem fixar versão via policies.
auto compacta quando o contexto enche · prune descarta saídas antigas de ferramenta · reserved reserva janela para a própria compactação.
Exclui diretórios ruidosos do file watcher — node_modules/**, dist/**.
Normalização de imagens anexadas: auto_resize, max_width, max_height, max_base64_bytes.
04Variáveis na config
Dois mecanismos de substituição mantêm segredo fora do arquivo:
{
"model": "{env:MVCODE_MODEL}",
"provider": {
"anthropic": { "options": { "apiKey": "{env:ANTHROPIC_API_KEY}" } },
"openai": { "options": { "apiKey": "{file:~/.secrets/openai-key}" } }
}
}{env:VAR}— variável de ambiente; ausente vira string vazia.{file:caminho}— conteúdo de arquivo, relativo à config ou absoluto — chaves em arquivos separados, instruções longas fora do JSON.
05Depurando a config resolvida
mvcode debug config → imprime a config final, com todas as fontes mescladas
É a resposta definitiva para "de onde veio essa chave?" — inclusive para configuração gerenciada.
O loader prefere maxvision-code.json{,c} e mantém a cadeia herdada como fallback: opencode.json{,c} e config.json, nos mesmos escopos. O $schema permanece https://opencode.ai/config.json (e opencode.ai/tui.json para a TUI) — é ele que dá validação no editor. Diretórios legados (~/.config/opencode/, dados opencode) são migrados/lidos automaticamente; os caminhos de config gerenciada preservam o nome herdado (/etc/opencode/, domínio ai.opencode.managed).
