Plataforma de IA unificada para terminal, servidor gRPC e Kubernetes.
13 provedores · 14 agentes autônomos · pipeline de qualidade em 7 padrões · um único binário.
English • Documentação completa • Arquitetura • Observabilidade
ChatCLI conecta os maiores modelos de linguagem do mercado a uma interface única e extensível — do
chatcli -pno terminal até um operador Kubernetes com pipeline AIOps autônomo, passando por um servidor gRPC production-ready com autenticação, fallback e métricas Prometheus.
| Multi-provider com fallback | 13 provedores de LLM (OpenAI · Anthropic · Bedrock · Google · xAI · ZAI · MiniMax · Copilot · GitHub Models · StackSpot · OpenRouter · Ollama · OpenAI Assistants), com classificação inteligente de erros, backoff exponencial e cooldown por provider. |
| Agentes autônomos | 14 workers especializados coordenados por motor ReAct (Reason + Act), com execução paralela e pipeline de qualidade em 7 padrões. |
| Quality pipeline | Self-Refine, Chain-of-Verification (CoVe), Reflexion, RAG + HyDE, Plan-and-Solve (ReWOO), backbone de reasoning cross-provider — todos compostos por state machine thread-safe com circuit breakers e hot reload. |
| Scheduler (Chronos) | Agendamento durável com cron + wait-until + DAG + daemon mode. /schedule, /wait, /jobs + tool @scheduler para agents. WAL CRC32, snapshots, rate limiter, circuit breakers, audit JSONL, 13 métricas Prometheus. Jobs sobrevivem a crash e a fechar o CLI. |
| Reflexion durável | Fila WAL-backed com worker pool, dead letter queue, replay on boot, retry exponencial com jitter — lições sobrevivem a crash do processo. |
| Convergência semântica | Cascade char → Jaccard → embedding cosine para Self-Refine, com cache LRU/TTL e quality regression detection. |
| Production-ready | gRPC + TLS 1.3, JWT + RBAC, AES-256-GCM, rate limiting, audit logging, 50+ métricas Prometheus. |
| Kubernetes-native | Operador com 17 CRDs e pipeline AIOps autônomo (54+ ações de remediação), SLO monitoring, post-mortems. |
| Extensível | Plugins com verificação Ed25519, skills multi-registry (skills.sh, ClawHub, ChatCLI.dev), hooks de lifecycle, MCP client (stdio + SSE). |
# Homebrew (macOS / Linux)
brew tap diillson/chatcli && brew install chatcli
# Go install
go install github.com/diillson/chatcli@latest
# Binários pre-compilados assinados (cosign)
# https://github.com/diillson/chatcli/releasesCompilação a partir do código-fonte
git clone https://github.com/diillson/chatcli.git && cd chatcli
go mod tidy && go build -o chatcli
# Com informações de versão injetadas via ldflags
VERSION=$(git describe --tags --always --dirty 2>/dev/null || echo "dev")
go build -ldflags "-X github.com/diillson/chatcli/version.Version=${VERSION}" -o chatcliLLM_PROVIDER=OPENAI # OPENAI, CLAUDEAI, BEDROCK, GOOGLEAI, XAI, ZAI, MINIMAX,
# COPILOT, GITHUB_MODELS, OLLAMA, STACKSPOT, OPENROUTER
OPENAI_API_KEY=sk-xxxReferência completa de variáveis por provider
| Provider | API Key | Model | Extras |
|---|---|---|---|
| OpenAI | OPENAI_API_KEY |
OPENAI_MODEL |
OPENAI_MAX_TOKENS, OPENAI_USE_RESPONSES |
| Anthropic | ANTHROPIC_API_KEY |
ANTHROPIC_MODEL |
ANTHROPIC_MAX_TOKENS |
| AWS Bedrock | IAM / Profile / credentials chain | BEDROCK_MODEL |
AWS_REGION, BEDROCK_CROSS_REGION |
| Google Gemini | GOOGLEAI_API_KEY |
GOOGLEAI_MODEL |
GOOGLEAI_MAX_TOKENS |
| xAI | XAI_API_KEY |
XAI_MODEL |
XAI_MAX_TOKENS |
| ZAI | ZAI_API_KEY |
ZAI_MODEL |
ZAI_MAX_TOKENS |
| MiniMax | MINIMAX_API_KEY |
MINIMAX_MODEL |
MINIMAX_MAX_TOKENS |
| GitHub Copilot | GITHUB_COPILOT_TOKEN |
COPILOT_MODEL |
ou /auth login github-copilot |
| GitHub Models | GITHUB_TOKEN |
GITHUB_MODELS_MODEL |
GH_TOKEN, GITHUB_MODELS_TOKEN |
| StackSpot | CLIENT_ID, CLIENT_KEY |
— | STACKSPOT_REALM, STACKSPOT_AGENT_ID |
| OpenRouter | OPENROUTER_API_KEY |
— | OPENROUTER_MAX_TOKENS, OPENROUTER_FALLBACK_MODELS |
| Ollama | — | OLLAMA_MODEL |
OLLAMA_ENABLED=true, OLLAMA_BASE_URL |
| OpenAI Assistants | OPENAI_API_KEY |
OPENAI_ASSISTANT_MODEL |
OPENAI_ASSISTANT_ID |
|
Terminal inteligente com TUI (Bubble Tea), contexto de projeto, tool calling e agentes autônomos. chatcli
chatcli -p "Explique este repo"
git diff | chatcli -p "Resuma" |
Backend compartilhado com TLS 1.3, JWT/RBAC, fallback, métricas Prometheus, MCP e discovery de plugins. chatcli server --port 50051 \
--token meu-token
chatcli connect \
--server host:50051 \
--token meu-token |
Pipeline AIOps autônomo com 17 CRDs, 54+ ações de remediação, SLO monitoring e post-mortems. helm install chatcli-operator \
oci://ghcr.io/diillson/charts/chatcli-operator \
--namespace aiops-system \
--create-namespace |
O scheduler roda embutido no CLI e, opcionalmente, como daemon. Jobs sobrevivem a reinícios via WAL + snapshot.
# Dispara um comando em 30s
/schedule ping --when +30s --do "/run curl https://api.example.com/health"
# Cron diário com retry
/schedule backup --cron "0 2 * * *" --do "shell: ./backup.sh" --max-retries 3
# Deploy + wait K8s + trigger smoke
/schedule deploy --when +0s --do "shell: terraform apply -auto-approve" \
--wait "k8s:deployment/prod/api:Available" --timeout 15m \
--triggers smoke-tests
# Daemon para rodar sozinho com o CLI fechado
chatcli daemon start --detach
chatcli daemon status
# Listar / inspecionar / cancelar
/jobs list
/jobs show <id>
/jobs tree
/jobs cancel <id>Agents ganham a tool @scheduler e podem se auto-pausar esperando condições — veja Cookbook: automações com Scheduler e doc da feature.
Comandos contextuais (modo CLI)
Injete dados do ambiente diretamente no prompt:
| Comando | O que faz |
|---|---|
@git |
Status, branches e commits recentes |
@file <path> |
Conteúdo de arquivos/diretórios |
@env |
Variáveis de ambiente |
@history |
Últimos comandos do shell |
@command <cmd> |
Executa e injeta a saída |
Exemplo de manifesto Kubernetes (Instance CRD)
apiVersion: platform.chatcli.io/v1alpha1
kind: Instance
metadata:
name: chatcli-prod
spec:
provider: ZAI
model: glm-5
replicas: 2
fallback:
enabled: true
providers:
- name: OPENAI
model: gpt-5.4
- name: MINIMAX
model: MiniMax-M2.7helm install chatcli oci://ghcr.io/diillson/charts/chatcli \
--namespace chatcli --create-namespace \
--set llm.provider=OPENAI --set secrets.openaiApiKey=sk-xxx13 provedores com interface unificada. Fallback automático com classificação inteligente de erros, extended thinking cross-provider e cache de prompt onde disponível.
| Provider | Default Model | Tool Calling | Vision | Reasoning / Thinking |
|---|---|---|---|---|
| OpenAI | gpt-5.4 | Nativo | Sim | reasoning_effort (o-series / gpt-5) |
| Anthropic (Claude) | claude-sonnet-4-6 | Nativo | Sim | Extended thinking com cache |
| AWS Bedrock | claude-sonnet-4-6 | Nativo | Sim | Thinking budget (Anthropic models) |
| Google Gemini | gemini-2.5-flash | Nativo | Sim | — |
| xAI (Grok) | grok-4-1 | XML fallback | — | — |
| ZAI (Zhipu AI) | glm-5 | Nativo | Sim | — |
| MiniMax | MiniMax-M2.7 | Nativo | Sim | — |
| GitHub Copilot | gpt-4o | Nativo | Sim | — |
| GitHub Models | gpt-4o | Nativo | Sim | — |
| StackSpot AI | StackSpotAI | — | — | — |
| OpenRouter | openai/gpt-4o | Nativo | Sim | Passthrough |
| Ollama | (local) | XML fallback | — | Tags <thinking> normalizadas |
| OpenAI Assistants | gpt-4o | Assistants API | — | — |
# Fallback chain configurável
CHATCLI_FALLBACK_PROVIDERS=OPENAI,CLAUDEAI,BEDROCK,ZAI,MINIMAX,OPENROUTER/thinking on|off|auto ativa extended thinking / reasoning_effort em qualquer provider que suporte — o mapeamento cross-provider é automático.
Motor ReAct (Reason + Act) com 14 agentes especializados executando em paralelo.
/coder "Refatore o módulo auth para usar JWT"
chatcli -p "Crie testes para o pacote utils" --agent-auto-exec| Agente | Responsabilidade |
|---|---|
| File | Leitura, escrita e manipulação de arquivos |
| Coder | Geração e edição de código |
| Shell | Execução de comandos no sistema |
| Git | Operações de versionamento |
| Search | Busca em código e arquivos |
| Planner | Decomposição de tarefas complexas (Plan-and-Solve / ReWOO) |
| Reviewer | Code review automatizado |
| Tester | Geração e execução de testes |
| Refactor | Refatoração segura de código |
| Diagnostics | Análise e debug de problemas |
| Formatter | Formatação e linting |
| Deps | Gerenciamento de dependências |
| Refiner | Self-Refine post-hook (critique → revise) |
| Verifier | Chain-of-Verification (perguntas + resposta final) |
Workers são coordenados pelo dispatcher com semáforo configurável (CHATCLI_AGENT_MAX_WORKERS), política de retry e sincronização por FileLockManager.
Sete padrões de prompting e execução compostos por uma pipeline pluggable com state machine, hot reload e isolamento por hook.
| # | Padrão | Status | Opt-in |
|---|---|---|---|
| 1 | ReAct (Reason + Act) | ✅ core do agente | — |
| 2 | Plan-and-Solve / ReWOO | ✅ | /plan, CHATCLI_QUALITY_PLAN_FIRST_MODE |
| 3 | Reflexion (com fila durável) | ✅ | ligada por padrão |
| 4 | RAG + HyDE | ✅ | CHATCLI_QUALITY_HYDE_ENABLED=1 |
| 5 | Self-Refine (com convergência semântica) | ✅ | CHATCLI_QUALITY_REFINE_ENABLED=1 |
| 6 | Chain-of-Verification (CoVe) | ✅ | CHATCLI_QUALITY_VERIFY_ENABLED=1 |
| 7 | Reasoning backbone cross-provider | ✅ | CHATCLI_QUALITY_REASONING_MODE=auto |
- State machine (Active → Draining → Closed) com transições via CAS atômico.
- Copy-on-Write via
atomic.Pointer[snapshot]—AddPre/AddPost/SwapConfigatômicos, zero lock no hot path. - Isolamento por hook: panic recovery, timeout enforcement (default 30s), circuit breaker (5 falhas → open por 30s).
- Priority-based ordering via interface opcional
Prioritized(backward compat — hooks sem prioridade ficam em 100). - Short-circuit sentinels:
ErrSkipExecution(cache-hit antes doagent.Execute) eErrSkipRemainingHooks(ensemble patterns). - Graceful shutdown com
DrainAndClose(timeout)respeitando in-flight.
Triggers de reflexion (erro, alucinação detectada pelo CoVe, baixa qualidade) passam por uma fila de lessons com garantia enterprise — lições sobrevivem a crash do processo:
- WAL com CRC32 duplo, atomic rename, dir fsync — detecta torn writes automaticamente.
- Worker pool (default 2) com per-job timeout, exponential backoff + jitter,
MaxAttemptsconfigurável. - DLQ persistente (mesmo formato WAL) com subcomandos
/reflect failed,/reflect retry <id>,/reflect purge <id>. - Drain-on-boot: lições pendentes de uma sessão anterior são reprocessadas automaticamente.
- Idempotência via
sha256(task | trigger | attempt)— re-trigger da mesma situação é no-op. - Stale discard (default 7d) — lições velhas descartadas no replay.
/reflect list # fila atual + DLQ
/reflect failed # DLQ com último erro por entrada
/reflect retry <job-id> # reenfileira uma lição que falhou
/reflect purge <job-id> # remove definitivamente da DLQ
/reflect drain # força replay do WALO Self-Refine usa cascade char → Jaccard → embedding para detectar quando parar iterando. Resolve "same meaning, different words" que o heurístico char-level não pegava:
| Etapa | Custo | Quando dispara |
|---|---|---|
| Char | μs | Sempre. Early-exit quando sim > 0.99 (idêntico) ou sim < 0.3 (divergiu) |
| Jaccard | ms | Borderline, sets de tokens normalizados com stop-words PT/EN |
| Embedding | ms + $ | Borderline pós-Jaccard. Opt-in via CHATCLI_QUALITY_REFINE_CONVERGENCE_EMBEDDING=1 |
- Cache LRU com TTL (default 256 entries / 5min) evita chamar embedder duas vezes pelo mesmo texto.
- Circuit breaker por scorer — provider fora do ar degrada pra Jaccard sem travar refine.
- Quality regression detection: se pass N piora (>15% sim loss vs melhor) → reverte pro melhor draft visto + marca
refine_rolled_backpra Reflexion aprender. - Modo strict: recusa declarar convergência sem embedding quando a stakes for alta.
Config completo do quality pipeline
# Master switch
CHATCLI_QUALITY_ENABLED=true
# Self-Refine (#5) + convergência semântica
CHATCLI_QUALITY_REFINE_ENABLED=false # opt-in
CHATCLI_QUALITY_REFINE_MAX_PASSES=1
CHATCLI_QUALITY_REFINE_CONVERGENCE_ENABLED=true
CHATCLI_QUALITY_REFINE_CONVERGENCE_EMBEDDING=false
CHATCLI_QUALITY_REFINE_CONVERGENCE_STRICT=false
# Chain-of-Verification (#6)
CHATCLI_QUALITY_VERIFY_ENABLED=false
CHATCLI_QUALITY_VERIFY_NUM_QUESTIONS=3
CHATCLI_QUALITY_VERIFY_REWRITE=true
# Reflexion (#3) + fila durável
CHATCLI_QUALITY_REFLEXION_ENABLED=true
CHATCLI_QUALITY_REFLEXION_QUEUE_ENABLED=true # WAL + worker pool + DLQ
CHATCLI_QUALITY_REFLEXION_QUEUE_WORKERS=2
CHATCLI_QUALITY_REFLEXION_QUEUE_MAX_ATTEMPTS=5
CHATCLI_QUALITY_REFLEXION_QUEUE_STALE_AFTER=168h
# Plan-and-Solve / ReWOO (#2)
CHATCLI_QUALITY_PLAN_FIRST_MODE=auto # off|auto|always
# HyDE (#4)
CHATCLI_QUALITY_HYDE_ENABLED=false
CHATCLI_QUALITY_HYDE_USE_VECTORS=false
# Reasoning backbone (#7)
CHATCLI_QUALITY_REASONING_MODE=auto # off|on|auto
CHATCLI_QUALITY_REASONING_BUDGET=8000Todos expostos no /config quality com estado em tempo real (hooks registrados, queue depth, DLQ size).
Prometheus end-to-end em namespace
chatcli. 50+ métricas cobrindo LLM, agentes, pipeline, queue e fila de lições.
chatcli server --port 50051 --metrics-port 9090
curl http://localhost:9090/metrics | grep chatcli_
curl http://localhost:9090/healthz| Subsystem | Métrica | Tipo |
|---|---|---|
chatcli_llm_* |
requests_total, request_duration_seconds, tokens_used_total, errors_total |
Counter, Histogram |
chatcli_quality_pipeline_* |
dispatch_total, hook_duration_seconds, hook_errors_total, hook_circuit_state, generation |
Counter, Histogram, Gauge |
chatcli_lessonq_* |
enqueue_total, queue_depth, dlq_size, processing_duration_seconds, wal_corruption_total, retry_total |
Counter, Gauge, Histogram |
chatcli_session_* |
duração, comandos executados, sinais | Counter, Gauge |
chatcli_grpc_* |
unary + stream interceptors | Counter, Histogram |
Collectors padrão do Go runtime e process_* também registrados automaticamente.
Segurança não é um feature flag. É a fundação de cada camada do ChatCLI.
|
Autenticação e autorização
Criptografia
Rede
|
Plugin e agent security
Auditoria e compliance
CI/CD security
|
Autenticação OAuth integrada
/auth login openai-codex # OAuth PKCE + callback local
/auth login anthropic # OAuth PKCE + code manual
/auth login github-copilot # Device Flow (RFC 8628)
/auth status # Status de todos os providers
Credenciais armazenadas com AES-256-GCM em ~/.chatcli/auth-profiles.json.
| Categoria | Comandos |
|---|---|
| Core | /help · /version · /reload · /exit · /reset |
| Sessões | /session {save,load,list,delete,new,fork} · /newsession · /rewind |
| Contexto | /context {create,attach,list,remove} · @git · @file · @env · @history · @command |
| Config | /config [section] · /status · /settings · /switch <provider|model> |
| Modo agente | /agent [task] · /run · /coder · /plan [query] |
| Quality pipeline | /thinking [on|off|auto] · /refine [draft] · /verify [answer] · /reflect [list|failed|retry|purge|drain|<texto>] |
| Memória | /memory {record,list,search,clear} · /compact [ratio] |
| Extensibilidade | /mcp {init,list,invoke,config} · /plugin {list,load,unload} · /skill <name> · /hooks {list,enable,disable,test} |
| Remoto | /auth {login,logout,status} · /connect <server> · /disconnect |
| Ferramentas | /watch {pid|file} · /worktree {create,list,remove} · /channel {create,switch} · /websearch <query> |
| Scheduler | /schedule <nome> --when <t> --do <a> · /wait --until <cond> · /jobs {list,show,tree,cancel,pause,resume,logs,daemon} · chatcli daemon {start,stop,status,ping,install} |
| Diagnóstico | /metrics · /cost |
Cada feature foi projetada para compor com as demais. Plugins descobrem skills. Hooks acionam tools. Contextos alimentam agentes.
| Feature | Descrição |
|---|---|
| Tool calling nativo | APIs nativas de OpenAI, Anthropic, Bedrock, Google, ZAI, MiniMax, OpenRouter. Cache ephemeral para Anthropic. XML fallback automático para providers sem suporte nativo. |
| MCP (Model Context Protocol) | Client via stdio e SSE para contexto expandido. |
| Contextos persistentes | /context create, /context attach — injeta projetos inteiros no system prompt com cache hints. |
| Bootstrap e Memória | SOUL.md, USER.md, IDENTITY.md, RULES.md + memória de longo prazo com facts e decay. |
| Plugins | Auto-detecção, schema validation, assinatura Ed25519, plugins remotos. |
| Skills | Registry multi-source (skills.sh, ClawHub, ChatCLI.dev), busca fuzzy, auditorias de segurança, preferências e instalação atômica. |
| Personas customizáveis | Markdown com frontmatter YAML (model, tools, skills). |
| Hooks | PreToolUse, PostToolUse, SessionStart/End, UserPromptSubmit, Compact pre/post — shell ou webhook. |
| WebFetch / WebSearch | DuckDuckGo + fetch com extração de texto. |
| Cost tracking | Custo por sessão com pricing tables por provider. |
| Git Worktrees | Trabalho isolado em branches paralelas. |
| K8s Watcher | Multi-target: metrics, logs, events, Prometheus scraping. |
| i18n | Português e Inglês com detecção automática. |
| Session management | Save, load, fork, export. |
chatcli/
cli/
agent/
quality/ Pipeline 7 patterns (state machine + COW snapshots)
convergence/ Semantic convergence (char → jaccard → embedding)
lessonq/ Reflexion durable queue (WAL + worker pool + DLQ)
workers/ 14 agentes + dispatcher + FileLockManager
hooks/ Lifecycle events (shell/webhook)
mcp/ MCP client (stdio + SSE)
plugins/ Plugin manager + signature verification
scheduler/ Chronos — scheduler durável (WAL + cron + DAG + daemon)
condition/ 10 evaluators (shell, http, k8s, docker, tcp, llm, ...)
action/ 8 executors (slash, shell, agent, webhook, ...)
builtins/ Registro agregado de evaluators + executors
workspace/memory/ Facts, topics, patterns, vector index (HyDE)
tui/ Bubble Tea adapters
llm/
openai/ openai_responses/ openai_assistant/
claudeai/ bedrock/
googleai/ xai/ zai/ minimax/
copilot/ github_models/ stackspotai/ openrouter/ ollama/
fallback/ catalog/ registry/ token/ toolshim/ embedding/
metrics/ Prometheus registry + /metrics + /healthz
server/ gRPC + TLS + JWT + MCP + Plugin discovery
operator/ Kubernetes Operator (17 CRDs, AIOps pipeline)
k8s/ Watcher (collectors, store, summarizer)
models/ ToolDefinition, ToolCall, LLMResponse, Message
auth/ OAuth PKCE, Device Flow, AES-256-GCM store
config/ ConfigManager com migração versionada
i18n/ embed.FS + golang.org/x/text (PT / EN)
Princípio de design: cada pacote define suas interfaces e se auto-registra no sistema. O
llm/registry permite adicionar um novo provider implementando uma única interface. O pipeline de qualidade é pluggable viaAddPre/AddPostcom swap atômico. O operator coordena CRDs independentes via controller pattern.
- CI (
.github/workflows/1-ci.yml): golangci-lint, gofmt,go vet,go test -race -coverprofile, coverage HTML como artifact. - Security scan (
security-scan.yml): Trivy image scanning contínuo. - Release automation (
release-please+publish-release.yml): multi-platform builds, assinaturas cosign, SBOM CycloneDX, publish em ArtifactHub. - Makefile:
make build,make test,make lint,make installcom injeção deVersion,CommitHash,BuildDatevia ldflags.
- Fork o repositório
- Crie uma branch a partir da
main:git checkout -b feature/minha-feature - Commit e push
- Abra um Pull Request
Veja docs/ para guias detalhados de arquitetura, quality pipeline e operator.
Documentação • Releases • Helm Charts • Go Reference • Issues
