Gateway
Configuração
OpenClaw lê uma configuração opcional JSON5 de ~/.openclaw/openclaw.json.
O caminho da configuração ativa deve ser um arquivo regular. Layouts de openclaw.json
com symlink não são compatíveis para escritas pertencentes ao OpenClaw; uma escrita atômica pode substituir
o caminho em vez de preservar o symlink. Se você mantiver a configuração fora do
diretório de estado padrão, aponte OPENCLAW_CONFIG_PATH diretamente para o arquivo real.
Se o arquivo estiver ausente, o OpenClaw usará padrões seguros. Motivos comuns para adicionar uma configuração:
- Conectar canais e controlar quem pode enviar mensagens ao bot
- Definir modelos, ferramentas, sandboxing ou automação (cron, hooks)
- Ajustar sessões, mídia, rede ou UI
Consulte a referência completa para todos os campos disponíveis.
Agentes e automação devem usar config.schema.lookup para obter a documentação exata
em nível de campo antes de editar a configuração. Use esta página para orientações orientadas a tarefas e a
referência de configuração para o mapa de campos
mais amplo e os padrões.
Configuração mínima
// ~/.openclaw/openclaw.json{ agents: { defaults: { workspace: "~/.openclaw/workspace" } }, channels: { whatsapp: { allowFrom: ["+15555550123"] } },}Editando a configuração
Assistente interativo
openclaw onboard # full onboarding flowopenclaw configure # config wizardCLI (comandos curtos)
openclaw config get agents.defaults.workspaceopenclaw config set agents.defaults.heartbeat.every "2h"openclaw config unset plugins.entries.brave.config.webSearch.apiKeyControl UI
Abra http://127.0.0.1:18789 e use a aba Config.
A Control UI renderiza um formulário a partir do schema de configuração ativo, incluindo metadados
de documentação title / description de campos, além de schemas de plugins e canais quando
disponíveis, com um editor Raw JSON como rota de escape. Para UIs de detalhamento
e outras ferramentas, o Gateway também expõe config.schema.lookup para
buscar um nó de schema com escopo por caminho mais resumos imediatos dos filhos.
Edição direta
Edite ~/.openclaw/openclaw.json diretamente. O Gateway observa o arquivo e aplica as alterações automaticamente (consulte recarga a quente).
Validação estrita
openclaw config schema imprime o JSON Schema canônico usado pela Control UI
e pela validação. config.schema.lookup busca um único nó com escopo por caminho mais
resumos dos filhos para ferramentas de detalhamento. Metadados de documentação de campo title/description
são preservados em objetos aninhados, wildcard (*), item de array ([]) e ramificações anyOf/
oneOf/allOf. Schemas de plugins e canais em tempo de execução são mesclados quando o
registro de manifesto é carregado.
Quando a validação falha:
- O Gateway não inicializa
- Apenas comandos de diagnóstico funcionam (
openclaw doctor,openclaw logs,openclaw health,openclaw status) - Execute
openclaw doctorpara ver os problemas exatos - Execute
openclaw doctor --fix(ou--yes) para aplicar reparos
O Gateway mantém uma cópia confiável da última configuração válida conhecida após cada inicialização bem-sucedida,
mas a inicialização e a recarga a quente não a restauram automaticamente. Se openclaw.json
falhar na validação (incluindo validação local de plugin), a inicialização do Gateway falha ou
a recarga é ignorada e o runtime atual mantém a última configuração aceita.
Execute openclaw doctor --fix (ou --yes) para reparar configurações prefixadas/sobrescritas ou
restaurar a cópia da última configuração válida conhecida. A promoção para a última configuração válida conhecida é ignorada quando uma
candidata contém placeholders de segredos redigidos, como ***.
Tarefas comuns
Configurar um canal (WhatsApp, Telegram, Discord etc.)
Cada canal tem sua própria seção de configuração em channels.<provider>. Consulte a página dedicada do canal para ver as etapas de configuração:
- WhatsApp -
channels.whatsapp - Telegram -
channels.telegram - Discord -
channels.discord - Feishu -
channels.feishu - Google Chat -
channels.googlechat - Microsoft Teams -
channels.msteams - Slack -
channels.slack - Signal -
channels.signal - iMessage -
channels.imessage - Mattermost -
channels.mattermost
Todos os canais compartilham o mesmo padrão de política de DM:
{ channels: { telegram: { enabled: true, botToken: "123:abc", dmPolicy: "pairing", // pairing | allowlist | open | disabled allowFrom: ["tg:123"], // only for allowlist/open }, },}Escolher e configurar modelos
Defina o modelo principal e fallbacks opcionais:
{ agents: { defaults: { model: { primary: "anthropic/claude-sonnet-4-6", fallbacks: ["openai/gpt-5.4"], }, models: { "anthropic/claude-sonnet-4-6": { alias: "Sonnet" }, "openai/gpt-5.4": { alias: "GPT" }, }, }, },}agents.defaults.modelsdefine o catálogo de modelos e atua como allowlist para/model; entradasprovider/*filtram/model,/modelse seletores de modelo para provedores selecionados, enquanto ainda usam descoberta dinâmica de modelos.- Use
openclaw config set agents.defaults.models '<json>' --strict-json --mergepara adicionar entradas à allowlist sem remover modelos existentes. Substituições simples que removeriam entradas são rejeitadas, a menos que você passe--replace. - Referências de modelo usam o formato
provider/model(por exemplo,anthropic/claude-opus-4-6). agents.defaults.imageMaxDimensionPxcontrola o redimensionamento de imagens de transcrição/ferramenta (padrão1200); valores menores normalmente reduzem o uso de tokens de visão em execuções com muitos screenshots.- Consulte CLI de modelos para alternar modelos no chat e Failover de modelo para rotação de autenticação e comportamento de fallback.
- Para provedores personalizados/auto-hospedados, consulte Provedores personalizados na referência.
Controlar quem pode enviar mensagens ao bot
O acesso por DM é controlado por canal via dmPolicy:
"pairing"(padrão): remetentes desconhecidos recebem um código de pareamento único para aprovação"allowlist": apenas remetentes emallowFrom(ou no armazenamento de permissões pareadas)"open": permite todas as DMs recebidas (requerallowFrom: ["*"])"disabled": ignora todas as DMs
Para grupos, use groupPolicy + groupAllowFrom ou allowlists específicas do canal.
Consulte a referência completa para detalhes por canal.
Configurar gating de menções em chat de grupo
Mensagens de grupo exigem menção por padrão. Configure padrões de acionamento por agente. Respostas normais de grupo/canal são publicadas automaticamente; habilite o caminho da ferramenta de mensagem para salas compartilhadas onde o agente deve decidir quando falar:
{ messages: { visibleReplies: "automatic", // set "message_tool" to require message-tool sends everywhere groupChat: { visibleReplies: "message_tool", // opt-in; visible output requires message(action=send) unmentionedInbound: "room_event", // unmentioned always-on group chatter is quiet context }, }, agents: { list: [ { id: "main", groupChat: { mentionPatterns: ["@openclaw", "openclaw"], }, }, ], }, channels: { whatsapp: { groups: { "*": { requireMention: true } }, }, },}- Menções por metadados: @-menções nativas (toque para mencionar no WhatsApp, @bot no Telegram etc.)
- Padrões de texto: padrões regex seguros em
mentionPatterns - Respostas visíveis:
messages.visibleRepliespode exigir envios por ferramenta de mensagem globalmente;messages.groupChat.visibleRepliessubstitui isso para grupos/canais. - Consulte a referência completa para modos de resposta visível, substituições por canal e modo de self-chat.
Restringir Skills por agente
Use agents.defaults.skills para uma linha de base compartilhada e, em seguida, substitua em agentes
específicos com agents.list[].skills:
{ agents: { defaults: { skills: ["github", "weather"], }, list: [ { id: "writer" }, // inherits github, weather { id: "docs", skills: ["docs-search"] }, // replaces defaults { id: "locked-down", skills: [] }, // no skills ], },}- Omita
agents.defaults.skillspara Skills irrestritas por padrão. - Omita
agents.list[].skillspara herdar os padrões. - Defina
agents.list[].skills: []para nenhuma Skill. - Consulte Skills, Configuração de Skills e a referência de configuração.
Ajustar o monitoramento de integridade de canais do gateway
Controle quão agressivamente o gateway reinicia canais que parecem obsoletos:
{ gateway: { channelHealthCheckMinutes: 5, channelStaleEventThresholdMinutes: 30, channelMaxRestartsPerHour: 10, }, channels: { telegram: { healthMonitor: { enabled: false }, accounts: { alerts: { healthMonitor: { enabled: true }, }, }, }, },}- Defina
gateway.channelHealthCheckMinutes: 0para desabilitar reinicializações do monitor de integridade globalmente. channelStaleEventThresholdMinutesdeve ser maior ou igual ao intervalo de verificação.- Use
channels.<provider>.healthMonitor.enabledouchannels.<provider>.accounts.<id>.healthMonitor.enabledpara desabilitar reinicializações automáticas para um canal ou conta sem desabilitar o monitor global. - Consulte Verificações de integridade para depuração operacional e a referência completa para todos os campos.
Ajustar o tempo limite do handshake WebSocket do gateway
Dê mais tempo a clientes locais para concluir o handshake WebSocket pré-autenticação em hosts carregados ou de baixo desempenho:
{ gateway: { handshakeTimeoutMs: 30000, },}- O padrão é
15000milissegundos. OPENCLAW_HANDSHAKE_TIMEOUT_MSainda tem precedência para substituições pontuais de serviço ou shell.- Prefira corrigir primeiro travamentos de inicialização/event loop; este controle é para hosts que estão saudáveis, mas lentos durante o aquecimento.
Configurar sessões e redefinições
Sessões controlam a continuidade e o isolamento da conversa:
{ session: { dmScope: "per-channel-peer", // recommended for multi-user threadBindings: { enabled: true, idleHours: 24, maxAgeHours: 0, }, reset: { mode: "daily", atHour: 4, idleMinutes: 120, }, },}dmScope:main(compartilhado) |per-peer|per-channel-peer|per-account-channel-peerthreadBindings: padrões globais para roteamento de sessões vinculadas a threads (Discord oferece suporte a/focus,/unfocus,/agents,/session idlee/session max-age).- Consulte Gerenciamento de sessões para escopo, vínculos de identidade e política de envio.
- Consulte a referência completa para todos os campos.
Habilitar isolamento em sandbox
Execute sessões de agentes em runtimes de sandbox isolados:
{ agents: { defaults: { sandbox: { mode: "non-main", // off | non-main | all scope: "agent", // session | agent | shared }, }, },}Crie a imagem primeiro - a partir de um checkout do código-fonte, execute scripts/sandbox-setup.sh; ou, a partir de uma instalação npm, consulte o comando docker build embutido em Sandboxing § Imagens e configuração.
Consulte Sandboxing para o guia completo e a referência completa para todas as opções.
Habilitar push apoiado por relay para builds oficiais do iOS
O push apoiado por relay para builds públicos da App Store usa o relay hospedado do OpenClaw: https://ios-push-relay.openclaw.ai.
Implantações de relay personalizadas exigem um caminho de build/implantação iOS deliberadamente separado, cuja URL de relay corresponda à URL de relay do Gateway. Se você estiver usando um build de relay personalizado, defina isto na configuração do gateway:
{ gateway: { push: { apns: { relay: { baseUrl: "https://relay.example.com", // Optional. Default: 10000 timeoutMs: 10000, }, }, }, },}Equivalente na CLI:
openclaw config set gateway.push.apns.relay.baseUrl https://relay.example.comO que isso faz:
- Permite que o gateway envie
push.test, estímulos de ativação e ativações de reconexão pelo relay externo. - Usa uma concessão de envio com escopo de registro encaminhada pelo app iOS pareado. O gateway não precisa de um token de relay amplo da implantação.
- Vincula cada registro apoiado por relay à identidade do gateway com a qual o app iOS foi pareado, para que outro gateway não possa reutilizar o registro armazenado.
- Mantém builds iOS locais/manuais em APNs direto. Envios apoiados por relay se aplicam apenas a builds distribuídos oficiais registrados pelo relay.
- Deve corresponder à URL base de relay incorporada ao build iOS, para que o tráfego de registro e envio chegue à mesma implantação de relay.
Fluxo de ponta a ponta:
- Instale o app iOS oficial.
- Opcional: configure
gateway.push.apns.relay.baseUrlno gateway somente ao usar um build de relay personalizado deliberadamente separado. - Pareie o app iOS com o gateway e permita que as sessões de nó e operador se conectem.
- O app iOS busca a identidade do gateway, registra-se no relay usando App Attest mais o recibo do app e então publica a carga
push.apns.registerapoiada por relay no gateway pareado. - O gateway armazena o identificador de relay e a concessão de envio, depois os usa para
push.test, estímulos de ativação e ativações de reconexão.
Observações operacionais:
- Se você trocar o app iOS para outro gateway, reconecte o app para que ele possa publicar um novo registro de relay vinculado a esse gateway.
- Se você enviar um novo build iOS que aponta para uma implantação de relay diferente, o app atualiza seu registro de relay em cache em vez de reutilizar a origem de relay antiga.
Observação de compatibilidade:
OPENCLAW_APNS_RELAY_BASE_URLeOPENCLAW_APNS_RELAY_TIMEOUT_MSainda funcionam como substituições temporárias de env.- URLs de relay de gateway personalizadas devem corresponder à URL base de relay incorporada ao build iOS. A faixa de lançamento pública da App Store rejeita substituições de URL de relay iOS personalizadas.
OPENCLAW_APNS_RELAY_ALLOW_HTTP=truecontinua sendo uma válvula de escape de desenvolvimento apenas para loopback; não persista URLs de relay HTTP na configuração.
Consulte App iOS para o fluxo de ponta a ponta e Fluxo de autenticação e confiança para o modelo de segurança do relay.
Configurar Heartbeat (check-ins periódicos)
{ agents: { defaults: { heartbeat: { every: "30m", target: "last", }, }, },}every: string de duração (30m,2h). Defina0mpara desabilitar.target:last|none|<channel-id>(por exemplodiscord,matrix,telegramouwhatsapp)directPolicy:allow(padrão) oublockpara destinos de Heartbeat no estilo DM- Consulte Heartbeat para o guia completo.
Configurar tarefas Cron
{ cron: { enabled: true, maxConcurrentRuns: 8, // default; cron dispatch + isolated cron agent-turn execution sessionRetention: "24h", runLog: { maxBytes: "2mb", keepLines: 2000, }, },}sessionRetention: remove sessões de execução isoladas concluídas desessions.json(padrão24h; definafalsepara desabilitar).runLog: remove linhas retidas do histórico de execuções de Cron por tarefa.maxBytescontinua aceito para logs de execução antigos baseados em arquivo.- Consulte Tarefas Cron para a visão geral do recurso e exemplos de CLI.
Configurar Webhooks (hooks)
Habilite endpoints de Webhook HTTP no Gateway:
{ hooks: { enabled: true, token: "shared-secret", path: "/hooks", defaultSessionKey: "hook:ingress", allowRequestSessionKey: false, allowedSessionKeyPrefixes: ["hook:"], mappings: [ { match: { path: "gmail" }, action: "agent", agentId: "main", deliver: true, }, ], },}Observação de segurança:
- Trate todo o conteúdo de payload de hook/Webhook como entrada não confiável.
- Use um
hooks.tokendedicado; não reutilize segredos ativos de autenticação do Gateway (gateway.auth.token/OPENCLAW_GATEWAY_TOKENougateway.auth.password/OPENCLAW_GATEWAY_PASSWORD). - A autenticação de hook é somente por cabeçalho (
Authorization: Bearer ...oux-openclaw-token); tokens em query string são rejeitados. hooks.pathnão pode ser/; mantenha a entrada de Webhook em um subcaminho dedicado, como/hooks.- Mantenha os flags de desvio de conteúdo inseguro desabilitados (
hooks.gmail.allowUnsafeExternalContent,hooks.mappings[].allowUnsafeExternalContent), exceto ao fazer depuração com escopo bem restrito. - Se você habilitar
hooks.allowRequestSessionKey, também definahooks.allowedSessionKeyPrefixespara limitar chaves de sessão selecionadas pelo chamador. - Para agentes acionados por hook, prefira tiers de modelos modernos fortes e política de ferramentas estrita (por exemplo, somente mensagens mais sandboxing quando possível).
Consulte a referência completa para todas as opções de mapeamento e integração com Gmail.
Configurar roteamento multiagente
Execute vários agentes isolados com workspaces e sessões separados:
{ agents: { list: [ { id: "home", default: true, workspace: "~/.openclaw/workspace-home" }, { id: "work", workspace: "~/.openclaw/workspace-work" }, ], }, bindings: [ { agentId: "home", match: { channel: "whatsapp", accountId: "personal" } }, { agentId: "work", match: { channel: "whatsapp", accountId: "biz" } }, ],}Consulte Multiagente e a referência completa para regras de vinculação e perfis de acesso por agente.
Dividir configuração em vários arquivos ($include)
Use $include para organizar configurações grandes:
// ~/.openclaw/openclaw.json{ gateway: { port: 18789 }, agents: { $include: "./agents.json5" }, broadcast: { $include: ["./clients/a.json5", "./clients/b.json5"], },}- Arquivo único: substitui o objeto contêiner
- Array de arquivos: mesclado profundamente em ordem (o posterior vence)
- Chaves irmãs: mescladas após includes (substituem valores incluídos)
- Includes aninhados: compatíveis até 10 níveis de profundidade
- Caminhos relativos: resolvidos em relação ao arquivo que inclui
- Formato de caminho: caminhos de include não devem conter bytes nulos e devem ter estritamente menos de 4096 caracteres antes e depois da resolução
- Escritas pertencentes ao OpenClaw: quando uma escrita altera apenas uma seção de nível superior
apoiada por um include de arquivo único, como
plugins: { $include: "./plugins.json5" }, o OpenClaw atualiza esse arquivo incluído e deixaopenclaw.jsonintacto - Write-through sem suporte: includes raiz, arrays de include e includes com substituições irmãs falham de forma fechada para escritas pertencentes ao OpenClaw, em vez de achatar a configuração
- Confinamento: caminhos
$includedevem ser resolvidos abaixo do diretório que contémopenclaw.json. Para compartilhar uma árvore entre máquinas ou usuários, definaOPENCLAW_INCLUDE_ROOTScomo uma lista de caminhos (:no POSIX,;no Windows) de diretórios adicionais que includes podem referenciar. Symlinks são resolvidos e verificados novamente, portanto um caminho que lexicalmente fica em um diretório de configuração, mas cujo destino real escapa de toda raiz permitida, ainda é rejeitado. - Tratamento de erros: erros claros para arquivos ausentes, erros de análise, includes circulares, formato de caminho inválido e comprimento excessivo
Recarga a quente da configuração
O Gateway monitora ~/.openclaw/openclaw.json e aplica alterações automaticamente - nenhuma reinicialização manual é necessária para a maioria das configurações.
Edições diretas de arquivo são tratadas como não confiáveis até serem validadas. O monitor aguarda
a agitação de escrita temporária/renomeação do editor se estabilizar, lê o arquivo final e rejeita
edições externas inválidas sem reescrever openclaw.json. Escritas de configuração
pertencentes ao OpenClaw usam o mesmo gate de esquema antes de escrever; substituições destrutivas, como
remover gateway.mode ou reduzir o arquivo em mais da metade, são rejeitadas e
salvas como .rejected.* para inspeção.
Se você vir config reload skipped (invalid config) ou a inicialização relatar Invalid config, inspecione a configuração, execute openclaw config validate e então execute openclaw doctor --fix para reparo. Consulte Solução de problemas do Gateway
para a checklist.
Modos de recarga
| Modo | Comportamento |
|---|---|
hybrid (padrão) |
Aplica alterações seguras a quente instantaneamente. Reinicia automaticamente para as críticas. |
hot |
Aplica somente alterações seguras a quente. Registra um aviso quando uma reinicialização é necessária - você cuida disso. |
restart |
Reinicia o Gateway em qualquer alteração de configuração, segura ou não. |
off |
Desabilita o monitoramento de arquivo. As alterações entram em vigor na próxima reinicialização manual. |
{ gateway: { reload: { mode: "hybrid", debounceMs: 300 }, },}O que aplica a quente vs. o que precisa de reinicialização
A maioria dos campos é aplicada a quente sem indisponibilidade. No modo hybrid, alterações que exigem reinicialização são tratadas automaticamente.
| Categoria | Campos | Reinício necessário? |
|---|---|---|
| Canais | channels.*, web (WhatsApp) - todos os canais integrados e de plugin |
Não |
| Agente e modelos | agent, agents, models, routing |
Não |
| Automação | hooks, cron, agent.heartbeat |
Não |
| Sessões e mensagens | session, messages |
Não |
| Ferramentas e mídia | tools, browser, skills, mcp, audio, talk |
Não |
| UI e diversos | ui, logging, identity, bindings |
Não |
| Servidor Gateway | gateway.* (port, bind, auth, tailscale, TLS, HTTP) |
Sim |
| Infraestrutura | discovery, plugins |
Sim |
Planejamento de recarregamento
Quando você edita um arquivo de origem referenciado por $include, o OpenClaw planeja
o recarregamento a partir do layout criado na origem, não da visualização achatada em memória.
Isso mantém as decisões de recarregamento a quente (aplicação a quente vs reinício) previsíveis, mesmo quando uma
única seção de nível superior vive em seu próprio arquivo incluído, como
plugins: { $include: "./plugins.json5" }. O planejamento de recarregamento falha de forma fechada se o
layout de origem for ambíguo.
RPC de configuração (atualizações programáticas)
Para ferramentas que gravam configuração pela API do Gateway, prefira este fluxo:
config.schema.lookuppara inspecionar uma subárvore (nó de esquema superficial + resumos de filhos)config.getpara buscar o snapshot atual maishashconfig.patchpara atualizações parciais (patch de mesclagem JSON: objetos são mesclados,nullexclui, arrays são substituídos quando explicitamente confirmados comreplacePathsse entradas seriam removidas)config.applysomente quando você pretende substituir a configuração inteiraupdate.runpara autoatualização explícita mais reinício; incluacontinuationMessagequando a sessão pós-reinício deve executar uma rodada de acompanhamentoupdate.statuspara inspecionar o sentinela de reinício da atualização mais recente e verificar a versão em execução após um reinício
Agentes devem tratar config.schema.lookup como o primeiro ponto de consulta para documentação e restrições
exatas em nível de campo. Use Referência de configuração
quando precisarem do mapa de configuração mais amplo, padrões ou links para referências dedicadas
de subsistemas.
Exemplo de patch parcial:
openclaw gateway call config.get --params '{}' # capture payload.hashopenclaw gateway call config.patch --params '{ "raw": "{ channels: { telegram: { groups: { \"*\": { requireMention: false } } } } }", "baseHash": "<hash>"}'Tanto config.apply quanto config.patch aceitam raw, baseHash, sessionKey,
note e restartDelayMs. baseHash é obrigatório para ambos os métodos quando uma
configuração já existe.
config.patch também aceita replacePaths, um array de caminhos de configuração cuja substituição de array
é intencional. Se um patch substituísse ou excluísse um array existente
com menos entradas, o Gateway rejeita a gravação, a menos que esse caminho exato apareça
em replacePaths; arrays aninhados sob entradas de array usam [], como
agents.list[].skills. Isso impede que snapshots truncados de config.get
sobrescrevam silenciosamente arrays de roteamento ou listas de permissões. Use config.apply quando você
pretende substituir a configuração completa.
Variáveis de ambiente
O OpenClaw lê variáveis de ambiente do processo pai mais:
.envdo diretório de trabalho atual (se presente)~/.openclaw/.env(fallback global)
Nenhum dos arquivos substitui variáveis de ambiente existentes. Você também pode definir variáveis de ambiente inline na configuração:
{ env: { OPENROUTER_API_KEY: "sk-or-...", vars: { GROQ_API_KEY: "gsk-..." }, },}Importação de ambiente do shell (opcional)
Se habilitado e as chaves esperadas não estiverem definidas, o OpenClaw executa seu shell de login e importa apenas as chaves ausentes:
{env: { shellEnv: { enabled: true, timeoutMs: 15000 },},}Equivalente por variável de ambiente: OPENCLAW_LOAD_SHELL_ENV=1
Substituição de variáveis de ambiente em valores de configuração
Referencie variáveis de ambiente em qualquer valor de string de configuração com ${VAR_NAME}:
{gateway: { auth: { token: "${OPENCLAW_GATEWAY_TOKEN}" } },models: { providers: { custom: { apiKey: "${CUSTOM_API_KEY}" } } },}Regras:
- Somente nomes em maiúsculas correspondem:
[A-Z_][A-Z0-9_]* - Variáveis ausentes/vazias geram um erro no momento do carregamento
- Faça escape com
$${VAR}para saída literal - Funciona dentro de arquivos
$include - Substituição inline:
"${BASE}/v1"→"https://api.example.com/v1"
Referências a segredos (env, file, exec)
Para campos compatíveis com objetos SecretRef, você pode usar:
{models: { providers: { openai: { apiKey: { source: "env", provider: "default", id: "OPENAI_API_KEY" } }, },},skills: { entries: { "image-lab": { apiKey: { source: "file", provider: "filemain", id: "/skills/entries/image-lab/apiKey", }, }, },},channels: { googlechat: { serviceAccountRef: { source: "exec", provider: "vault", id: "channels/googlechat/serviceAccount", }, },},}Detalhes de SecretRef (incluindo secrets.providers para env/file/exec) estão em Gerenciamento de segredos.
Os caminhos de credenciais compatíveis estão listados em Superfície de credenciais SecretRef.
Consulte Ambiente para precedência e origens completas.
Referência completa
Para a referência completa campo por campo, consulte Referência de configuração.
Relacionado: Exemplos de configuração · Referência de configuração · Doctor