Skip to main content
O chatcli connect roda o seu ChatCLI local contra um servidor ChatCLI remoto: as chamadas ao modelo vão para o servidor, que guarda as chaves dos provedores. Todo o resto (o REPL, os loops de /agent e /coder, as ferramentas @, contextos, memória) roda na sua máquina, então as ferramentas leem e alteram os seus arquivos.

Conectar

Quando dá certo:
Quando o servidor roda um K8s watcher, uma segunda linha avisa, e o contexto dele é somado a todo prompt do lado do servidor.
A conexão é TLS por padrão, com ou sem --tls: um servidor com certificado publicamente confiável não precisa de flag, e um assinado por CA privada precisa de --ca-cert ca.crt (um arquivo de CA implica --tls, então a CA é usada mesmo quando --tls é omitido). Texto puro exige desligar explicitamente, com CHATCLI_ALLOW_INSECURE=true. Contra um servidor em texto puro (um chatcli server local, um chart com tls.enabled=false atrás de kubectl port-forward) você precisa de:
Sem isso a conexão falha com tls: first record does not look like a TLS handshake.

Flags

Só por variável de ambiente no cliente (sem flag): Não existe flag --server nem override do nome do servidor TLS: o nome discado precisa estar no certificado do servidor.

TLS e mTLS

Pelo kubectl port-forward você disca localhost, então o certificado do servidor precisa de localhost (e 127.0.0.1) nos SANs.

Modos de credencial LLM

Sem flags de credencial: o servidor usa o próprio provedor e as próprias chaves.
Requisições que não nomeiam provedor nem modelo passam pela cadeia de fallback do servidor, quando existe.

Modo one-shot

O -p envia um SendPrompt e sai com status diferente de zero em caso de erro. Cada execução abre uma conexão nova e autentica de novo; um loop apertado não tem problema, porque o limitador de falhas de autenticação do servidor só conta autenticações que falham.

Modo interativo

Sem -p, você ganha o REPL completo com o modelo remoto:
  • /agent, /coder, @file, @git, @command e as outras ferramentas rodam localmente; só as chamadas ao modelo vão para o servidor.
  • /switch troca provedor ou modelo; /cost precifica o uso real de tokens que o servidor informa em cada resposta.
  • As respostas chegam em streaming conforme o provedor gera (StreamPrompt); a mensagem final traz o usage, o motivo de parada, e o provedor e o modelo que responderam.

Plugins remotos, sessões e status do watcher

O chatcli connect vincula a sessão ao servidor exatamente como o comando /connect dentro do REPL, que troca uma sessão local já em execução:
O servidor lista e executa plugins só para chamadores user e admin: uma credencial readonly não vê plugins remotos e não consegue baixar nenhum (PermissionDenied). O /connect aceita --token, --tls, --ca-cert (que aqui também implica --tls), --provider, --model, --llm-key, --use-local-auth e as flags de StackSpot/Ollama. Ele não lê CHATCLI_REMOTE_TOKEN; passe --token. CHATCLI_ALLOW_INSECURE e as variáveis de mTLS valem como no chatcli connect. O /watch status num servidor remoto imprime:

Padrões por variável de ambiente

Múltiplas réplicas

O cliente resolve o endereço com dns:/// e balanceia em round-robin entre todos os endereços, mandando ping em cada conexão a cada 30 segundos (timeout de 5 segundos) para descartar pods mortos. Contra um servidor no Kubernetes com mais de uma réplica, aponte para um Service headless (service.headless: true no chart; automático no operator quando spec.replicas > 1).

Solução de problemas

Próximos passos

Modo Servidor

Configure e opere o servidor

Docker e Kubernetes

Faça o deploy

K8s Watcher

Contexto do Kubernetes em todo prompt