João GabrielMedeiros Pereira
João Gabriel
← projetos

Linha de comando

agent-providers

Uma interface só para chamar vários modelos de IA.

Chama Claude Code, Codex ou OpenRouter pela mesma interface, com fallback entre eles, limite de tempo e estimativa de custo. Usado pelos meus outros produtos.

É um pacote Go e também um binário de linha de comando, para quem chama modelos de IA do próprio código, em Go ou em outra linguagem. Uso interno nos meus produtos.

tipo
Linha de comando
estado
em uso próprio
plataformas
CLI, API
conferido em
2026-10-15

O que faz

  • Uma interface, vários provedores

    Claude Code e Codex rodam como subprocesso. OpenRouter e TypeSafe são chamados por HTTP, sem SDK. Um provedor novo é um arquivo novo.

  • Preferido primeiro, com fallback

    O binário tenta o provedor preferido e passa para os outros se ele falhar. Com --no-fallback tenta só o escolhido.

  • Limites por chamada e por tarefa

    Timeout por tentativa, retry, circuit breaker e limite de concorrência são opcionais. Um orçamento opt-in de chamadas e prazo vale para a tarefa inteira, fallbacks incluídos.

  • Uso e custo por tentativa

    Registra o uso de cada tentativa e estima o custo a partir de uma tabela de preços.

  • Perfis e qualificação de versões

    Perfis de execução opt-in são recusados antes da chamada se a versão da CLI não foi qualificada. Não são garantia de isolamento; a resposta em JSON, sozinha, não restringe as ferramentas.

Em uso

$ agent-providers-cli --helpUsage of agent-providers-cli:  -budget-max-calls int      opt-in total provider invocations across fallback; requires --budget-timeout  -budget-timeout duration      opt-in total execution deadline, e.g. 2m; requires --budget-max-calls  -capabilities-json      print the versioned provider/profile capability contract without invoking a provider  -no-fallback      only try --preferred (e.g. image generation: claude has no image_gen)  -preferred string      codex|claude|openrouter|typesafe (required): tried first  -serve-stdio      long-lived typed-decision mode: one JSON request per stdin line, one JSON response per stdout line; one HTTP client and one --budget-* for the whole process  -text      treat the answer as free text, not JSON — skips the json.Valid fallback check and the embedded-JSON-block extraction; for a chat/completion caller, not a structured-output one  -timeout int      seconds per provider attempt (default 600)  -version-json      print build provenance as JSON without invoking a provider...

Comandos reais, trecho do --help do programa.

Comandos

agent-providers-cli --preferred=codex
Lê o prompt da entrada padrão e tenta primeiro o provedor indicado.
agent-providers-cli --preferred=claude --no-fallback
Tenta só o provedor preferido, sem passar para os outros.
agent-providers-cli --timeout=600
Define os segundos por tentativa de cada provedor.
agent-providers-cli --serve-stdio
Processo longo: um JSON por linha na entrada, um JSON por linha na saída.
agent-providers-cli --capabilities-json
Imprime o contrato de capacidades sem chamar nenhum provedor.
agent-providers-cli update --dry-run
Mostra como cada CLI de IA seria atualizada, sem instalar nada.
agent-providers-cli qualify
Qualifica a versão instalada de cada CLI de IA com uma sonda.

Como foi feito

Go, sem SDK: subprocesso para Claude Code e Codex, net/http para OpenRouter e TypeSafe