Saltar para o conteúdo principal
O oh-my-pi (comando omp, também conhecido como pi-mono — o mesmo projeto) é um agente de codificação de terminal mínimo e extensível.
Protocolo: compatível com OpenAI
  • Base URL: https://api.orcarouter.ai/v1 (inclui o sufixo /v1)

Instalação

bun install -g @oh-my-pi/pi-coding-agent
Requer bun >= 1.3.14. O comando instalado é omp.

Configuração

Primeiro exporte sua chave de API como uma variável de ambiente:
export ORCA_KEY="sk-orca-..."
Arquivo de configuração: ~/.omp/agent/models.yml.
providers:
  orcarouter:
    baseUrl: https://api.orcarouter.ai/v1
    api: openai-completions
    apiKey: ORCA_KEY
    authHeader: true
    models:
      - id: orcarouter/auto
        name: OrcaRouter Auto
        reasoning: false
        input: [text]
        contextWindow: 200000
        maxTokens: 8192
        compat:
          supportsDeveloperRole: false
          maxTokensField: max_tokens
Troque orcarouter/auto por um modelo específico se preferir, por exemplo anthropic/claude-opus-4.8 ou google/gemini-2.5-flash. Os IDs de modelos sempre usam o formato vendor/model.

Execução

omp -p --model "orcarouter/orcarouter/auto" "Reply with exactly: OK"
Saída esperada: OK.

Notas

  • Requer bun >= 1.3.14.
  • A base_url deve incluir /v1.
  • O campo apiKey recebe o nome de uma variável de ambiente, não a chave em si; com authHeader: true ela é enviada como Authorization: Bearer <value>.
  • As referências de modelos usam o formato provider/model — aqui orcarouter/orcarouter/auto (provedor orcarouter + ID do modelo orcarouter/auto).
  • Use -p para execuções não interativas.
  • oh-my-pi e pi-mono são o mesmo projeto; o comando é omp em ambos.

Ativar thinking / raciocínio

A entrada de modelo padrão acima tem reasoning: false. Para ativar o raciocínio e permitir a seleção de esforço, declare um bloco thinking mais um compat.reasoningEffortMap no modelo:
models:
  - id: anthropic/claude-sonnet-4.6
    name: Claude Sonnet 4.6
    reasoning: true
    thinking:
      minLevel: low
      maxLevel: xhigh
      mode: effort
    input: [text]
    contextWindow: 200000
    maxTokens: 8192
    compat:
      supportsDeveloperRole: false
      supportsReasoningEffort: true
      maxTokensField: max_tokens
      thinkingFormat: openai
      reasoningEffortMap: { low: low, medium: medium, high: high, xhigh: high }
Depois escolha um nível de esforço em tempo de execução com um sufixo model:level (dentro de minLevel..maxLevel):
omp -p --model "orcarouter/anthropic/claude-sonnet-4.6:high" "What is 17*23?"
Verificado: o sufixo :high seleciona o nível de esforço e funciona contra o OrcaRouter.