Saltar al contenido principal
oh-my-pi (comando omp, también conocido como pi-mono — el mismo proyecto) es un agente de programación de terminal mínimo y extensible.
Protocolo: compatible con OpenAI
  • URL base: https://api.orcarouter.ai/v1 (incluye el sufijo /v1)

Instalación

bun install -g @oh-my-pi/pi-coding-agent
Requiere bun >= 1.3.14. El comando instalado es omp.

Configuración

Primero exporta tu clave API como variable de entorno:
export ORCA_KEY="sk-orca-..."
Archivo de configuración: ~/.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
Cambia orcarouter/auto por un modelo específico si lo prefieres, p. ej. anthropic/claude-opus-4.8 o google/gemini-2.5-flash. Los IDs de modelo siempre usan el formato vendor/model.

Ejecución

omp -p --model "orcarouter/orcarouter/auto" "Reply with exactly: OK"
Salida esperada: OK.

Notas

  • Requiere bun >= 1.3.14.
  • La base_url debe incluir /v1.
  • El campo apiKey toma el nombre de una variable de entorno, no la clave en sí; con authHeader: true se envía como Authorization: Bearer <value>.
  • Las referencias de modelo usan el formato provider/model — aquí orcarouter/orcarouter/auto (proveedor orcarouter + ID de modelo orcarouter/auto).
  • Usa -p para ejecuciones no interactivas.
  • oh-my-pi y pi-mono son el mismo proyecto; el comando es omp en ambos.

Activar pensamiento / razonamiento

La entrada de modelo por defecto anterior tiene reasoning: false. Para activar el razonamiento y permitir la selección de esfuerzo, declara un bloque thinking más un compat.reasoningEffortMap en el 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 }
Luego elige un nivel de esfuerzo en tiempo de ejecución con un sufijo model:level (dentro de minLevel..maxLevel):
omp -p --model "orcarouter/anthropic/claude-sonnet-4.6:high" "What is 17*23?"
Verificado: el sufijo :high selecciona el nivel de esfuerzo y funciona contra OrcaRouter.