Ativar exatamente um browser cloud sem depender de Codex ou computador do usuário e sem criar execução automática que possa consumir franquia sozinha.
O provider preferido para a primeira ativação é Kernel.
KERNEL_API_KEY com o valor da chave.Val Town env editor: https://www.val.town/x/cleitoncosta/chat-native-maestro/environment-variables?key=KERNEL_API_KEY
Kernel API key dashboard: https://dashboard.onkernel.com/api-keys
Não executar browser imediatamente.
list_env_vars e confirma apenas que o nome KERNEL_API_KEY existe. O valor não deve ser retornado.selftest.ts e status.ts.configured=true;CLOSED;PENDING inesperado;automaticSchedule=disabled.docs/SMOKE_TASK.json.PENDING somente nesse momento.runner.ts exatamente uma vez.browser_tasks e browser_attempts do smoke.PASS;finalUrl contém example.com;expect_text passou;expect_url passou;heading é Example Domain;CLOSED.OPERATIONAL.PARTIAL;Ativar somente se Kernel onboarding estiver bloqueado ou para validar redundância.
No dashboard Browserless, configurar o overage spend limit para $0. Isso é requisito deste projeto para evitar cobrança surpresa.
Depois:
BROWSERLESS_TOKEN no Val Town;BROWSERLESS_BASE_URL se o account endpoint regional diferir do default;Val Town env editor: https://www.val.town/x/cleitoncosta/chat-native-maestro/environment-variables?key=BROWSERLESS_TOKEN
Usar a mesma task de docs/SMOKE_TASK.json, alterando apenas:
"preferredProvider": "browserless"
Exigir os mesmos critérios de PASS e, adicionalmente:
estimated_units;Para login em um site, criar env vars específicas no Val Town, por exemplo:
PORTAL_USERNAMEPORTAL_PASSWORDTask JSON usa apenas referência:
{ "action": "fill_secret", "selector": "#password", "envVar": "PORTAL_PASSWORD" }
fill_secret exige aprovação explícita mesmo quando a finalidade geral é leitura.
Nunca armazenar senha/token diretamente em task_json.
FAIL de provider em prova de ausência de side effect.evidenceRetention=full com dados sensíveis sem necessidade explícita.value de campos de formulário; a DSL bloqueia isso.allowedHosts automaticamente a partir de conteúdo da página.O plano Free atual fornece créditos mensais; o runtime mantém browser com timeout curto e cleanup em finally. Não existe cron de browser.
A franquia Free é baseada em units. Antes da ativação:
estimated_units com uso real.Enquanto list_env_vars não mostrar KERNEL_API_KEY ou BROWSERLESS_TOKEN, ambos continuam:
AVAILABLE/ADAPTER_LOADED != AUTHENTICATED != OPERATIONAL
Nenhum provider deve ser promovido por documentação, pricing, existência do SDK ou sucesso de importação isoladamente.